CentOS 7のnginx+php7.1+php-fpm+MySQL環境でphpMyAdmin

2018年4月17日

CentOS 7のnginx+php7.1+php-fpm+MySQL環境でphpMyAdmin

環境

  • CentOS 7
  • php-7.1.13(remi-safe)
  • nginx
  • php-fpm(remi-safe)

概要

本環境ではリポジトリにremiを追加しており「php-7.1.13」がインストールされています。
yumでインストールしようとするとCentOSの公式リポジトリ(epel)の「phpMyAdmin」を参照してしまい依存関係で「php-5.*」を要求されインストールすることができませんでした。

メッセージの通り素直に「–skip-broken」やら「rpm -Va –nofiles –nodigest」は試行してみましたが解消されませんでしたのでremiリポジトリからphpMyAdminをインストールするkととしました。

現状の確認

現状のままphpMyAdminのインストールを試行した状態。

]# yum install phpMyAdmin.noarch
・
・中略
・
エラー: パッケージ: phpMyAdmin-4.4.15.10-2.el7.noarch (epel)
     要求: php-zip
     利用可能: php-common-5.4.16-42.el7.x86_64 (base)
          php-zip
     利用可能: php-common-5.4.16-43.el7_4.x86_64 (updates)
          php-zip
     利用可能: php-common-5.4.16-43.el7_4.1.x86_64 (updates)
          php-zip
     インストール: php-common-7.1.13-1.el7.remi.x86_64 (@remi-php71)
       見つかりません
  問題を回避するために --skip-broken を用いることができます。
  これらを試行できます: rpm -Va --nofiles --nodigest
]#
]# rpm --import https://rpms.remirepo.net/RPM-GPG-KEY-remi
]# yum install yum-utils https://rpms.remirepo.net/enterprise/remi-release-7.rpm
・
・中略
・
パッケージ yum-utils-1.1.31-42.el7.noarch はインストール済みか最新バージョンです
 /var/tmp/yum-root-t3CNWF/remi-release-7.rpm: インストールされたパッケージを更新しません。
・
・中略
・

【remi-php71 リポジトリを有効化】

]# yum-config-manager --enable remi-php71

phpMyAdminのインストール・初期設定

【PHP と拡張モジュールなどをインストール】

]# yum install php php-mbstring php-intl

PDO_MYSQL(DBMS ドライバ)も依存関係でインストールされました。

===============================================================================================================================================================
Package                               アーキテクチャー                バージョン                                    リポジトリー                         容量
===============================================================================================================================================================
インストール中:
php-intl                              x86_64                          7.1.16-1.el7.remi                             remi-php71                          212 k
更新します:
php                                   x86_64                          7.1.16-1.el7.remi                             remi-php71                          3.0 M
php-mbstring                          x86_64                          7.1.16-1.el7.remi                             remi-php71                          577 k
依存性関連での更新をします:
php-cli                               x86_64                          7.1.16-1.el7.remi                             remi-php71                          4.6 M
php-common                            x86_64                          7.1.16-1.el7.remi                             remi-php71                          1.0 M
php-fpm                               x86_64                          7.1.16-1.el7.remi                             remi-php71                          1.6 M
php-gd                                x86_64                          7.1.16-1.el7.remi                             remi-php71                           74 k
php-json                              x86_64                          7.1.16-1.el7.remi                             remi-php71                           59 k
php-mysqlnd                           x86_64                          7.1.16-1.el7.remi                             remi-php71                          229 k
php-pdo                               x86_64                          7.1.16-1.el7.remi                             remi-php71                          122 k
php-xml                               x86_64                          7.1.16-1.el7.remi                             remi-php71                          208 k

remi リポジトリからインストールするパッケージを制限する。

phpMyAdmin 最新安定版のパッケージは remi リポジトリにありますが、remi リポジトリを有効化すると、PHP のバージョンに関係ない標準リポジトリなどの(remi リポジトリからインストールする必要のない)パッケージが更新されます。

remi リポジトリにおいては、phpMyAdmin と依存パッケージの更新のみに制限するため
remi リポジトリを参照する対象を絞り込み有効とします。

  • php-phpmyadmin-sql-parser
  • php-phpmyadmin-motranslator
  • php-phpseclib
  • php-google-recaptcha
  • php-twig-extensions
  • php-symfony-polyfill

【remi.repoファイルの編集】

/etc/yum.repos.d/remi.repo

「includepkgs=」から始まる行を追記。

[remi]
name=Remi's RPM repository for Enterprise Linux 7 - $basearch
#baseurl=http://rpms.remirepo.net/enterprise/7/remi/$basearch/
#mirrorlist=https://rpms.remirepo.net/enterprise/7/remi/httpsmirror
mirrorlist=http://cdn.remirepo.net/enterprise/7/remi/mirror
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi
includepkgs=phpMyAdmin php-phpmyadmin-sql-parser php-phpmyadmin-motranslator php-phpseclib php-google-recaptcha php-twig-extensions php-symfony-polyfill

phpMyAdminのインストール

【phpMyAdminインストール】
phpMyAdminをインストールとすると依存関係のパッケージもインストールされました。

]# yum install phpMyAdmin
・
・中略
・
===============================================================================================================================================================
 Package                                             アーキテクチャー           バージョン                                リポジトリー                    容量
===============================================================================================================================================================
インストール中:
 phpMyAdmin                                          noarch                     4.8.0-2.el7.remi                          remi                           5.1 M
依存性関連でのインストールをします:
 libzip5                                             x86_64                     1.5.1-1.el7.remi                          remi-safe                       55 k
 php-PsrLog                                          noarch                     1.0.2-2.el7                               epel                            12 k
 php-bcmath                                          x86_64                     7.1.16-1.el7.remi                         remi-php71                      68 k
 php-fedora-autoloader                               noarch                     1.0.0-1.el7                               epel                           9.6 k
 php-gmp                                             x86_64                     7.1.16-1.el7.remi                         remi-php71                      66 k
 php-google-recaptcha                                noarch                     1.1.3-1.el7.remi                          remi                            13 k
 php-paragonie-random-compat                         noarch                     1.4.1-1.el7                               epel                            24 k
 php-password-compat                                 noarch                     1.0.4-1.el7                               epel                            10 k
 php-pecl-zip                                        x86_64                     1.15.2-1.el7.remi.7.1                     remi-php71                      51 k
 php-phpmyadmin-motranslator                         noarch                     4.0-1.el7.remi                            remi                            20 k
 php-phpmyadmin-shapefile                            noarch                     2.0-1.el7                                 epel                            21 k
 php-phpmyadmin-sql-parser                           noarch                     4.2.4-3.el7.remi                          remi                           156 k
 php-phpseclib                                       noarch                     2.0.11-1.el7.remi                         remi                           209 k
 php-process                                         x86_64                     7.1.16-1.el7.remi                         remi-php71                      76 k
 php-psr-container                                   noarch                     1.0.0-1.el7.remi                          remi-safe                      5.9 k
 php-recode                                          x86_64                     7.1.16-1.el7.remi                         remi-php71                      44 k
 php-symfony-class-loader                            noarch                     2.8.12-2.el7                              epel                            26 k
 php-symfony-common                                  noarch                     2.8.12-2.el7                              epel                           124 k
 php-symfony-config                                  noarch                     2.8.12-2.el7                              epel                            51 k
 php-symfony-expression-language                     noarch                     2.8.12-2.el7                              epel                            27 k
 php-symfony-filesystem                              noarch                     2.8.12-2.el7                              epel                            22 k
 php-symfony-polyfill                                noarch                     1.7.0-2.el7.remi                          remi                            37 k
 php-symfony-translation                             noarch                     2.8.12-2.el7                              epel                            61 k
 php-symfony-yaml                                    noarch                     2.8.12-2.el7                              epel                            28 k
 php-twig                                            noarch                     1.35.3-1.el7.remi.7.1                     remi-php71                     163 k
 php-twig-extensions                                 noarch                     1.5.1-1.el7.remi                          remi                            23 k
 recode                                              x86_64                     3.6-38.el7                                base                           718 k

phpMyAdmin 用データベースの作成

phpMyAdminに同梱されているsqlを実行してphpMyAdminのデータベースを作成します。

すでにインストール済みのMySQLにpmaユーザが存在するのが前提となっていますがこのsqlの中で作成することもできます。

【create_tables.sqlの編集】

]# vi /usr/share/phpMyAdmin/sql/create_tables.sql

下記のコメント化箇所をコメント解除のみを実施

-- --------------------------------------------------------

--
 -- Privileges
 --
 -- (activate this statement if necessary)
 -- GRANT SELECT, INSERT, DELETE, UPDATE, ALTER ON `phpmyadmin`.* TO
 -- 'pma'@localhost;
 --↓コメント化解除後
GRANT SELECT, INSERT, DELETE, UPDATE, ALTER ON `phpmyadmin`.* TO
'pma'@localhost;

-- --------------------------------------------------------

【MySQLにログイン】

]# mysql --user=root --password

【sqlファイルを実行】

MariaDB [(none)]> source /usr/share/phpMyAdmin/sql/create_tables.sql

【pma@localhostのパスワードを決定】

MariaDB [phpmyadmin]> SET PASSWORD FOR pma@localhost = PASSWORD('pmaのパスワードを決定します')

【DBの更新を確定】

MariaDB [phpmyadmin]> FLUSH PRIVILEGES;

【phpMyAdminのファイルを編集】

]# vi /etc/phpMyAdmin/config.inc.php
/**
 * phpMyAdmin configuration storage settings.
 *//* User used to manipulate with storage */
 // $cfg['Servers'][$i]['controlhost'] = '';
 // $cfg['Servers'][$i]['controlport'] = '';
 $cfg['Servers'][$i]['controluser'] = 'pma'; // コメント化の解除 // $cfg['Servers'][$i]['controlpass'] = '先ほど決定したpmaのパスワード'; // コメント化を解除し「pmapass」を変更 // 
/* Storage database and tables */
 // コメント化解除 ここから //
 $cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';
 $cfg['Servers'][$i]['bookmarktable'] = 'pma__bookmark';
 $cfg['Servers'][$i]['relation'] = 'pma__relation';
 $cfg['Servers'][$i]['table_info'] = 'pma__table_info';
 $cfg['Servers'][$i]['table_coords'] = 'pma__table_coords';
 $cfg['Servers'][$i]['pdf_pages'] = 'pma__pdf_pages';
 $cfg['Servers'][$i]['column_info'] = 'pma__column_info';
 $cfg['Servers'][$i]['history'] = 'pma__history';
 $cfg['Servers'][$i]['table_uiprefs'] = 'pma__table_uiprefs';
 $cfg['Servers'][$i]['tracking'] = 'pma__tracking';
 $cfg['Servers'][$i]['userconfig'] = 'pma__userconfig';
 $cfg['Servers'][$i]['recent'] = 'pma__recent';
 $cfg['Servers'][$i]['favorite'] = 'pma__favorite';
 $cfg['Servers'][$i]['users'] = 'pma__users';
 $cfg['Servers'][$i]['usergroups'] = 'pma__usergroups';
 $cfg['Servers'][$i]['navigationhiding'] = 'pma__navigationhiding';
 $cfg['Servers'][$i]['savedsearches'] = 'pma__savedsearches';
 $cfg['Servers'][$i]['central_columns'] = 'pma__central_columns';
 $cfg['Servers'][$i]['designer_settings'] = 'pma__designer_settings';
 $cfg['Servers'][$i]['export_templates'] = 'pma__export_templates';
 // コメント化解除 ここまで //
・
 ・中略
 ・
// root アクセスの禁止をファイルの末尾に追加
 $cfg['Servers'][$i]['AllowRoot'] = false;

TCP localhostからUnix Domain Socketへの変更

PHPの設定

session.save_pathを決定。コメント化を解除して「/var/lib/php/session」と変更します。

]# vi /etc/php.ini
・
・中略
・
[Session]
・
・中略
・
; RPM note : session directory must be owned by process owner
; for mod_php, see /etc/httpd/conf.d/php.conf
; for php-fpm, see /etc/php-fpm.d/*conf
;session.save_path = "/tmp"
session.save_path = "/var/lib/php/session"

【セッションディレクトリにnginxがアクセスできるようにパーミッションを変更】

]# chown -R root.nginx /var/lib/php/session

php-fpmの設定

【www.confの編集】

]# vi /etc/php-fpm.d/www.conf

ここでunix socketを指定します。listenに指定したファイルはphp-fpmの起動時に生成されます。

; Start a new pool named 'www'.
[www]

; The address on which to accept FastCGI requests.
; Valid syntaxes are:
; 'ip.add.re.ss:port' - to listen on a TCP socket to a specific address on
; a specific port;
; 'port' - to listen on a TCP socket to all addresses on a
; specific port;
; '/path/to/unix/socket' - to listen on a unix socket.
; Note: This value is mandatory.
;listen = 127.0.0.1:9000
listen = /var/run/php-fpm/php-fpm.sock
・
・中略
・
; Set permissions for unix socket, if one is used. In Linux, read/write
; permissions must be set in order to allow connections from a web server. Many
; BSD-derived systems allow connections regardless of permissions. 
; Default Values: user and group are set as the running user
; mode is set to 0666
listen.owner = nginx
listen.group = nginx
listen.mode = 0666
; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
; will be used.
; RPM: apache Choosed to be able to access some dir as httpd
user = nginx
; RPM: Keep a group allowed to write in log dir.
group = nginx

nginxの設定

# vi /etc/nginx/conf.d/phpmyadmin.conf

【fastcgi_pass を変更】

server {
   listen 80;
   server_name phpmyadmin ;

location / {
        root /usr/share/phpMyAdmin;
        index index.php;
        }

location ~ \.php$ {
          fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
          fastcgi_index index.php;
          fastcgi_param SCRIPT_FILENAME /usr/share/phpMyAdmin/$fastcgi_script_name;
          include fastcgi_params;
          }
    }

同様に/etc/nginx/conf.d配下のほかのファイルも編集します。

php-fpmとnginxの再起動

~]# systemctl restart php-fpm
~]# systemctl restart nginx