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に同様のスクリプトが存在する事に気づいて、そっちを使うようにした。