CentOS5.5にPHP5.3.4とphpMyAdmin3.3.9をインストールして、Nginxで動作させる方法

データベースを視覚的に把握できるphpMyAdminはとても便利です。


この最新版であるphpMyAdminの3.3.9系統をさくらのVPSにいれてみました。




インストールの条件は次のとおりです。


  • OS:CentOS5.5
  • MySQL:5.1(ソースからインストール済)
  • PHP5.3.4(remiパッケージインストール済)
  • phpMyAdmin3.3.9(remiパッケージインストール済)
  • spawn-fcgi1.6.3(パッケージインストール済)

つまづきやすいポイントは次の3つです。


  1. nginxの設定方法
  2. phpMyAdminプログラムの場所
  3. phpMyAdmin設定ファイルの場所


さっそく見ていきましょう。




nginxの設定方法

nginxはspawn-fcgiを経由して、phpMyAdminを動作させます。


なお通常パッケージでのインストールは、Apacheでの動作を前提にユーザ権限等が割り振られています。


これらをユーザnginxに明示的に変える必要があります。

セッションの権限

session関係をphpMyAdminで使う場合、

chown -R nginx.nginx /var/lib/php/session/


としておきましょう。


設定ファイル

nginxの設定にphpMyAdminの項目を追加します。

例では9000番ポートを待受にして、内部のcgiポート54321番を経由して、
phpMyAdminを動作させます。

# vi /etc/nginx/nginx.conf
    server {
        listen 9000;
        server_name hogehoge.com;
        location / {
            root /usr/share/phpMyAdmin;
            index index.php;
        }
        location ~ \.php$ {
            fastcgi_pass 127.0.0.1:54321;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME /usr/share/phpMyAdmin$fastcgi_script_name;
            include fastcgi_params;
        }
    }

phpMyAdminプログラムの場所

CentOS上でパッケージインストールした場合、phpMyAdminは以下のディレクトリにインストールされています。

/usr/share/phpMyAdmin/


このディレクトリにプログラムが展開されています。



所有をnginxにしておきます。

#chown -R nginx.nginx /usr/share/phpMyAdmin/

このまま動作させると、次のようなエラーが出る場合あります。

#phpMyAdmin - エラー
#エラーが出たためセッションを開始できませんでした。PHP やウェブサーバのログファイルに出ているエラーを確認して、PHP を正しく設定してください。


その場合は動作プログラムが格納されているディレクトリの権限を755にすると直ります。


chmod 755 /usr/share/phpMyAdmin

phpMyAdmin設定ファイルの場所

これが一番厄介で、灯台下暗しで、

/etc/phpMyAdmin/config.inc.php

にあります。




認証用のランダムな文字列を作成するためにexpectを入れておきます。

#yum -y install expect


mkpasswdコマンドを打ちます。
以下は例として46字で指定します。(phpMyAdmincookie認証で使う上限文字数のため)

#mkpasswd -l 46
46字のランダム文字列

この文字列を設定に書き込みます。

#vi /etc/phpMyAdmin/config.inc.php

$cfg['blowfish_secret'] = '46字のランダム文字列'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */

$cfg['Servers'][$i]['host'] = 'localhost';


hostが異なるサーバにあれば、異なるサーバのアドレスを入力してください。



$cfg['Servers'][$i]['user'] や$cfg['Servers'][$i]['password'] を設定することも可能ですが、
今回はcookieによる認証を使います。(ユーザ、パスワードを設定ファイルに記載しません)



以上の設定を行えばhttp://hogehoge.com:9000/を入力すれば、ログイン画面が出るはずです。


総括

一番失敗しやすいのは、/etc/phpMyAdmin/config.inc.phpでなく、
/usr/share/phpMyAdmin/config.inc.phpを調整してしまうことです。

パッケージからインストールした場合、動作プログラムは以下になります。

/usr/share/phpMyAdmin

設定ファイルは、

/etc/phpMyAdmin/config.inc.php


になりますので、ご注意ください。

結構はまりました。