nginx + PHP

こないだ、nginx + unicornについてのエントリを書いた。これでRuby on Railsが動く環境は整った。

同じサーバーでblogも動かしたいという要望があったため、WordPressが動くようにPHPの環境も整える事にした。

■環境

CentOS 5.0 (諸事情により)

■spawn-fcgiのインストール、設定

yumでspawn-fcgiをインストール。

$ sudo yum install spawn-fcgi

spawn-fcgiパッケージに含まれるファイルを確認してみる。

$ rpm -ql spawn-fcgi
/etc/init.d/spawn-fcgi
/etc/sysconfig/spawn-fcgi
/usr/bin/spawn-fcgi
/usr/share/doc/spawn-fcgi-1.6.3
/usr/share/doc/spawn-fcgi-1.6.3/AUTHORS
/usr/share/doc/spawn-fcgi-1.6.3/COPYING
/usr/share/doc/spawn-fcgi-1.6.3/NEWS
/usr/share/doc/spawn-fcgi-1.6.3/README
/usr/share/man/man1/spawn-fcgi.1.gz

/etc/sysconfig/spawn-fcgiの設定を以下のように書き換えた。

OPTIONS="-u nginx -g apapche -a 127.0.0.1 -p 9000 -C 16 -F 1 -P /var/run/spawn-fcgi.pid -- /usr/bin/php-cgi"

/etc/init.d/spawn-fcgiを起動すれば、php-cgiがポート9000でリッスンし始めるはず。

グループをnginxではなくapacheにしている理由は、PHPのセッション情報を格納するディレクトリ /var/lib/php/session に書き込むため。ディレクトリの権限を変更してもOK。

■nginxの設定

後は、nginxの設定で、〜.php ファイルへのリクエストをphp-cgiへ渡せばよい。

        location ~ .php$ {
            root           html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  /var/www/html/$fastcgi_script_name;
            include        fastcgi_params;
        }

■参考

参考にしたのはこっちのサイト。このサイトでは419.shと言う名前のシェルスクリプトを使ってて自分も最初それに従ったんだけど、その後、上述の通りspawn-fcgiに同様のスクリプトが存在する事に気づいて、そっちを使うようにした。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です