trac を lighttpd + FastCGI で動かす

このエントリ の様な経緯で、うちでは apache + tracd という構成で trac を動かしてるのですが、tracd がしょっちゅう落ちるんですよね。1日に2, 3回ぐらいは落ちる感じ。で、5分ごとに cron で tracd プロセスを監視して、落ちてたら再起動ってなことをやってるんですが、typester さん から「うちは lighttpd + FastCGI でやってるよ」というアドバイスを頂いたので、試してみました。

やったことは以下の通り。

  1. FastCGI のインストール
  2. lighttpd のインストール
  3. lighttpd.conf を書く
  4. lighttpd の起動

1, 2 については省略。ディストリビューションによって違うでしょうし、うちは Slackware だからあんまり参考にならないだろうし。3 については以下の様な内容の /usr/local/etc/lighttpd.conf を作成した。

server.modules              = (
                               "mod_fastcgi",
                              )
server.document-root        = "/home/miya/html"
server.errorlog             = "/var/log/lighttpd.error.log"
mimetype.assign             = (
  ".png"          =>      "image/png",
 )
static-file.exclude-extensions = ( ".fcgi" )
server.port                = 81
server.bind                = "localhost"
server.username            = "svn"
server.groupname           = "svn"
fastcgi.server = ("/public" =>
                   ("public" =>
                     ("socket" => "/tmp/trac-fastcgi.sock",
                      "bin-path" => "/usr/local/share/trac/cgi-bin/trac.fcgi",
                      "check-local" => "disable",
                      "bin-environment" =>
                        ("TRAC_ENV" => "/home/miya/trac/public")
                     )
                   )

たったこれだけの設定でちゃんと動きました。起動は以下のコマンドで。

$ sudo /usr/local/sbin/lighttpd -f /usr/local/etc/lighttpd.conf

あとは apache の設定を変更してやれば OK。こんな感じで 動いてます。