巷で高速だと評判なHTTPサーバーnginxでPHPを使用する場合、ApacheのようにPHPのモジュールをインストールして終わり、という訳にはいかない。
nginx + PHPの方法はいくつかあるようなのだが、ここでは、lighttpd付属のspawn-fcgiでPHPが使えるようになるまでの手順を紹介する。
spawn-fcgiをまともに使うのが初めてなので、記念にメモ。pig-monkey.com » Blog Archive » An Ubuntu VPS on Slicehost: Web Serverを参考にした。というか、そのまま。
php5をインストール
$ sudo aptitude install php5-common php5-cgi php5-mysql php5-cli
本来spawn-fcgiはlighttpdのおまけの一つなので、lighttpdをダウンロードしてmakeする必要がある(lighttpdのインストールは必要ない) 最初にlighttpdをコンパイルするのに必要なパッケージをインストール。これらが、無いとconfigureの途中で止まる。
$ sudo aptitude install libpcre3-dev libbz2-dev zlib1g-dev
lighttpd ダウンロード & インストール
$ wget http://www.lighttpd.net/download/lighttpd-1.4.19.tar.gz
$ tar xvzf lighttpd-1.4.19.tar.gz
$ cd lighttpd-1.4.19
$ ./configure
$ make
$ sudo cp src/spawn-fcgi /usr/bin/spawn-fcgi
php5-cgi起動スクリプト(/usr/bin/php5-fastcgi)作成
#!/bin/sh
/usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -u www-data -C 2 -f /usr/bin/php5-cgi
これで、127.0.0.1:9000でFastCGIプロセスが口をあけて待ってます。実行権限もお忘れなく。
$ sudo chmod +x /usr/bin/php5-fastcgi
ついでにリンクも作成
$ sudo ln -s /usr/bin/php5-fastcgi /usr/bin/php-fastcgi
起動スクリプト(/etc/init.d/fastcgi)を用意
#!/bin/bash
PHP_SCRIPT=/usr/bin/php-fastcgi
RETVAL=0
case"$1" in
start)
echo "Starting fastcgi"
$PHP_SCRIPT
RETVAL=$?
;;
stop)
echo "Stopping fastcgi"
killall -9 php5-cgi
RETVAL=$?
;;
restart)
echo "Restarting fastcgi"
killall -9 php5-cgi
$PHP_SCRIPT
RETVAL=$?
;;
*)
echo "Usage: php-fastcgi {start|stop|restart}"
exit 1
;;
esac
exit $RETVAL
こっちも、パーミッションの設定お忘れなく
$ sudo chmod 755 /etc/init.d/fastcgi
試しに起動してみる
$ sudo /etc/init.d/fastcgi start
「child spawned successfully」と表示されるのを確認したうえで、サーバ起動時に立ちあがるように設定。
$ sudo update-rc.d fastcgi defaults
これでphpが使えるようになりました。