Webmin/Virtualmin環境へのphpMyAdminのインストールと設定に関して、と言うマニアックなお話。
あえて一般論化すればFastCGI PHP環境でのphpMyAdminの使用方法と言うことになるのかもしれませんが、例示した内容がWebmin/Virtualmin環境に大きく依存したものになっているため、それ以外の環境に本記事の内容を流用するには相応の読み替えが必要かと思います。
なお、前提となっているWebmin/Virtualminの環境は別記事「Webmin / Virtualmin のすヽめ」に準じて作成したものです。
また、サーバ環境は仮想マシンを使用しており、こちらは別記事「Virtualbox / vagrant のすヽめ」に準じて作成したものです。仮想マシンかどうかは別にして、クライアント(ブラウザ)とサーバ(phpMyAdmin)が別マシン上に存在すると言う条件は設定内容に影響を与えるものです。
phpMyAdminのインストール
ここはサクッとyumを使ってインストールできます。
yum install -y phpMyAdmin
上記によりphpMyAdminに関連するファイルセットが「/usr/share/phpMyAdmin」に展開され、Apacheの設定としては「/etc/httpd/conf.d/phpMyAdmin.conf」が追加されます。
これだけでphpMyAdminが使用できるようになれば大変簡単だったのですが、残念ながらそうは行きません。
「/etc/httpd/conf.d/phpMyAdmin.conf」の書き換えが必要になります。
phpMyAdmin.confの変更
自動生成された「/etc/httpd/conf.d/phpMyAdmin.conf」には2つの問題があります。
1.自マシン上からのアクセスのみ可能な設定になっている
2.FastCGI PHPを使用することに関する設定がない(おそらくはモジュールモードでの動作を前提としている)
上記に関して必要な内容を反映した結果を以下に例示します(関係箇所のみ抜粋)。
<Directory /usr/share/phpMyAdmin/>
AddDefaultCharset UTF-8
Options +ExecCGI
AddHandler fcgid-script .php
FCGIWrapper /home/hoge/fcgi-bin/php7.2.fcgi .php
<IfModule mod_authz_core.c>
# Apache 2.4
<RequireAny>
Require ip 127.0.0.1
Require ip ::1
Require ip 192.168.33.1
</RequireAny>
</IfModule>
<IfModule !mod_authz_core.c>
# Apache 2.2
Order Deny,Allow
Deny from All
Allow from 127.0.0.1
Allow from ::1
</IfModule>
</Directory>
追加されているのは以下の2箇所です。
Options +ExecCGI
AddHandler fcgid-script .php
FCGIWrapper /home/hoge/fcgi-bin/php7.2.fcgi .php
「Options」で「ExecCGI」を指定することで、CGIが使えるようになります。「+」を付加すると本設定以前に指定されていたOptionsがあればそれを継承しつつ「ExecCGI」の指定を追加することになります。
「AddHandler」では拡張子が「.php」のファイルの処理にはFastCGI PHPを使用するとの設定を行っています。
「FCGIWrapper」ではラッパースクリプトの指定を行っています。このラッパースクリプトとはFastCGI PHPの動作に必要な環境変数を設定しつつFastCGI PHPを起動するスクリプトです。
最初の2つは定型的な設定として覚えておけば良いかと思います。
「FCGIWrapper」の設定のみは、その環境に合わせたラッパースクリプトを生成しつつそのパスを指定する必要があるため、環境ごとに適切な設定を行う必要があります。ただ、phpMyAdminを単体で使用することにあまり意味はなく、その管理対象となるDBを使用するシステム自体が存在している状況でDBを直接操作する目的でphpMyAdminを使用すると言うケースが大半かと思います。今回のケースではVirtualminでの環境構築を前提としていますが、それは言い換えると何らかの仮想ホスト環境を構築し、その上で動作するシステムが使用するDBの管理用にphpMyAdminを使用しようとしている状況と言えます。また、仮想ホスト環境構築時には同環境用のラッパースクリプトが自動生成され、同仮想ホストのドキュメントルート配下でFastCGI PHPが利用可能となるよう自動設定されます。これらをまとめると、phpMyAdminが管理対象するDBを利用するシステム用に既にラッパースクリプトが生成されていると言うことなので、手っ取り早くこれをそのまま使わせて貰います。
Virtualminでは指定したドメイン名が「hoge.co.jp」のような場合、「hoge」と言う名称のユーザーを新規作成し、そのホームディレクトリである「/home/hoge」直下に「fcgi-bin」と言うディレクトリを生成して、ここにラッパースクリプトを生成します。よって、これを指定する形で「FCGIWrapper」の設定を記述すれば良いです。
Require ip 192.168.33.1
先に記述したようにデフォルトの設定では自マシン上からのアクセスしかできない状態になっていますが、今回は仮想マシン上に環境を構築しているため、アクセス元のブラウザが動作するホストマシンとアクセス先の仮想マシンは論理的には別マシンになり、そのままではアクセスできません。よって自マシン以外からのアクセスを許容するような設定を追加します。
Virtualbox/vagrantを使用して仮想マシン環境を構築する場合、ホストマシンと仮想マシン間の通信を成立させるための最も簡易な方法はprivate_networkを構築することですが、例えば仮想マシンのprivate_networkでのIPを「192.168.33.10」と定義するとホストマシンには「192.168.33.1」と言うアドレスが割り当てられます。よって、このアドレスを許容するアクセス元IPとして指定します。
蛇足ながら上記のように特定のIPを指定せず「192.168.33」のように書いておくと「192.168.33.xx」なるIPからのアクセス全般を許容できるようにもなりますが、private_networkを使用している状況ではあまり必要性はないかと思います。
もしpublic_networkを使用するようなケースで、ホストマシン以外からもphpMyAdminを使用したいと言うような状況が発生したら上記のような書式を試して見ると良いかと思います。
phpMyAdminへのアクセス
上記までの設定が終わったら、ホストマシンのブラウザからphpMyAdminにアクセスします。
http://<仮想マシンのIP>/phpMyAdmin
ログインアカウントの入力を求められますが、Virtualminで環境構築した場合MySQL/MariaDB関連の設定時にrootのパスワードを設定したかと思います。このrootアカウントの情報を指定してログインできるはずです。