CentOS 7のnginx+php7.1+php-fpm+MySQL環境でphpMyAdmin
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