WebサーバをApacheからnginxに置き換えた。
速いしメモリは少なくて済むし素晴らしいのだけど、PHPが使えない。nginxにはmod_phpのようなhttpサーバに統合されたPHP実行環境が無いのだ。や、正直PHPなんて使えなくても構わないんですけど、世の中PHPで書かれたwiki等のツールがたくさんあって、それらをnginxで使おうというならばFastCGIが必要になるのです。普通のCGIで動かすにはちと重いですからね。
Ubuntuで簡単に使えるFastCGIの実行環境は2つあるようだ。
spawn-fcgi
インストール
$ sudo aptitude install php5-cgi $ sudo aptitude install spawn-fcgi
FastCGIのプロセスを立ち上げる
$ spawn-fcgi -a 127.0.0.1 -p 9000 -u www-data -g www-data -f /usr/bin/php5-cgi -C 3 -P /var/run/php5-fcgi.pid
Cオプションは子プロセス数。3とすると親と合わせて4プロセスでPHPを処理する。Fもプロセス数を指定するオプションだが、PHPの場合はCを使う。
nginx.confを修正。*.php へのアクセスをFCGIに回す
server { # .... index index.html index.php location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
起動スクリプトは自分で用意しなければならない。
php-fpm
PHP5.3で導入されたFCGIプロセス管理ツールらしい。FCGIプロセスにPHPしか使えない代わりに設定が楽。Ubuntu標準のAPTリポジトリにはパッケージがないが、nginxチームがメンテしているリポジトリにあるので、それを使うといい。
リポジトリの追加
$ sudo aptitude install python-software-properties $ sudo add-apt-repository ppa:nginx/php5 $ sudo aptitude update
インストール
$ sudo aptitude install php5-fpm
起動スクリプトも作成される
$ sudo service php5-fpm start
nginxの設定ファイルはspawn-fcgiの場合と同じ。