at posts/single.html

lighttpd + FastCGI + PHP4

VPS7 に標準で入っている Apache1.3 + PHP (モジュール版) の代わりに、Apache より高速という噂の lighttpd を入れることにする。 将来的に、 Ruby on Rails も簡単に使えるしね。

lighttpd 版の PHP は CGI で動かすみたい。 でも、さくらサーバのようにただ CGI で動かすだけだと、 CGI の起動時にプロセスを生成するオーバーヘッドが発生する。 代わりに、 FastCGI という仕組みを使うことで、プロセス生成のオーバヘッドを減らし、軽快に動作することができる。

lighttpd

ports を使って、ソースからコンパイルする。

$ cd /usr/ports/www/lighttpd
$ sudo make config
$ sudo make
$ sudo make install

make config で必要なモジュールを尋ねられる。 MySQL や SSL を使う場合はチェックを入れるといいんだろう。 FastCGI は設定の有無に関わらず、インストールされるみたい。

lighttpd の設定ファイルは、 /usr/local/etc/lighttpd.conf.sample にインストールされる。 これをコピーして使うことになる。

$ cd /usr/local/etc
$ sudo cp lighttpd.conf.sample lighttpd.conf
$ sudo vi lighttpd.conf

以下、設定ファイルを抜粋。

server.modules              = (
                               "mod_auth",
                               "mod_fastcgi",
                               "mod_simple_vhost",
                               "mod_accesslog" )

server.document-root        = "/home/machu/www/"
accesslog.filename          = "/var/log/lighttpd.access.log"
server.errorlog             = "/var/log/lighttpd.error.log"
server.pid-file             = "/var/run/lighttpd.pid"
server.indexfiles           = ( "index.php", "index.html",
                                "index.htm", "default.htm" )

simple-vhost.server-root   = "/home/www"
server.username            = "www"
server.groupname           = "www"

fastcgi.server             = ( ".php" =>
                               ( "localhost" =>
                                 (
                                   "socket" => "/tmp/php-fastcgi.socket",
                                   "bin-path" => "/usr/local/bin/php"
                                 )
                               )
                             )

auth.backend                = "plain"
auth.backend.plain.userfile = "/usr/local/etc/lighttpd.user"
auth.require                = ( "/ura" =>
                                (
                                  "method"  => "basic",
                                  "realm"   => "secret",
                                  "require" => "valid-user"
                                )
                              )

PHP

次はCGI版PHPのインストール。 すでにモジュール版のPHP(とApache1.3)がインストールされていたので、まずはそれを削除する。 モジュール版とCGI版は共存できないようだ。

pkg_delete -r php4-4.4.0

次に、ports からPHPをコンパイルする。

cd /usr/ports/www/php4-cgi
make clean
make config
make
make install

これで、PHPのインストールも完了。

関連する日記