Happy My Life

日常とか技術とか

spawn-fcgi & phpの設定

巷で高速だと評判なHTTPサーバーnginxPHPを使用する場合、ApacheのようにPHPのモジュールをインストールして終わり、という訳にはいかない。

nginx + PHPの方法はいくつかあるようなのだが、ここでは、lighttpd付属のspawn-fcgiPHPが使えるようになるまでの手順を紹介する。

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-fcgilighttpdのおまけの一つなので、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が使えるようになりました。