Redmine を lighttpd で動かせないか(恥ずかしい試行錯誤)

redmine-0.6.4.tar.gz を落としてきて、/home/hokorobi/redmine に展開したものとする。

/etc/lighttpd/lighttpd.conf へ下のように追記したら、lighttpd が起動しなくなった。

$HTTP["url"] =~ "^/redmine/" {
    server.document-root = "/home/hokorobi/redmine/public"
    alias.url = ( "/redmine/" => "/home/hokorobi/redmine/public/" )
    server.indexfiles = ( "index.html", "dispatch.fcgi" )
    accesslog.filename = "/var/log/lighttpd/access.log"
    server.errorlog = "/var/log/lighttpd/server.log"
    server.error-handler-404 = "/redmine/dispatch.fcgi"
    url.rewrite = ( "^/$" => "index.html", "^([^.]+)$" => "$1.html" )

    fastcgi.server = (
        ".fcgi" => (
            "localhost" => (
                "socket" => "/tmp/redmine.fcgi.socket",
                "bin-path" => "/home/hokorobi/redmine/public/dispatch.fcgi",
                "bin-environment" => (
                    "RAILS_ENV" => "production",
                    "RAILS_ROOT" => "/home/hokorobi/redmine"
                    ),
                "idol-timeout" => 10,
                "check-local" => "disable",
                "min-procs" => 1,
                "max_procs" => 20
            )
        )
    )
}

どこをどう直せばいいんだ?

dispatch.fcgi ないんだけど、動くのかなぁと思っていたけれど、動くわけがない。
dispatch.*.example を dispatch.* にリネームして実行権限を与えた。
おぉ、とりあえず lighttpd 自体は動いた。
redmine は Internal Error だ。
/var/lighttpd/error.log に url.rewrite なんて知らないよと出ている。
あれ、モジュールを有効にし忘れた。
/etc/lighttpd/lighttpd.conf で mod_rewrite, mod_redirect, mod_alias を有効にする。
/var/lighttpd/error.log にエラーは出なくなったけれど Internal Error は相変わらず。
どこかにログはでないのか……/home/hokorobi/redmine/log にも新しくログは書かれていないみたいだし。
/home/hokorobi/redmine/config/environment.rb の config.log_level = debug に指定してみた。
駄目だ、何も変わらない。
rails アプリケーション以前の問題ということか?
いかん、忘れていた。
/home/hokorobi/redmine/config/routes.rb の二行目に以下を追加。

  ActionController::AbstractRequest.relative_url_root = "/redmine"

でも、やっぱりかわらない。
あ、mod_fastcgi は 10-fastcgi.conf の中に書いているから、lighttpd.conf に fastcgi の内容を書くなら、lighttpd.conf に mod_fastcgi を書かないと駄目か?
やっぱりかわらん。
/etc/lighttpd/lighttpd.conf の $HTTP["url"] =~ "^/redmine/" { の上に fastcgi.debug = 1 を書いてみたら下のようなログが出るようになった。

2008-04-27 20:28:25: (mod_fastcgi.c.1307) --- fastcgi spawning local
        proc: /home/hokorobi/redmine/public/dispatch.fcgi
        port: 0
        socket /tmp/redmine.fcgi.socket
        min-procs: 4
        max-procs: 4
2008-04-27 20:28:25: (mod_fastcgi.c.1332) --- fastcgi spawning
        port: 0
        socket /tmp/redmine.fcgi.socket
        current: 0 / 4
2008-04-27 20:28:25: (mod_fastcgi.c.1332) --- fastcgi spawning
        port: 0
        socket /tmp/redmine.fcgi.socket
        current: 1 / 4
2008-04-27 20:28:25: (mod_fastcgi.c.1332) --- fastcgi spawning
        port: 0
        socket /tmp/redmine.fcgi.socket
        current: 2 / 4
2008-04-27 20:28:25: (mod_fastcgi.c.1332) --- fastcgi spawning
        port: 0
        socket /tmp/redmine.fcgi.socket
        current: 3 / 4
2008-04-27 20:28:25: (mod_fastcgi.c.1307) --- fastcgi spawning local
        proc: /home/hokorobi/redmine/public/dispatch.fcgi
        port: 0
        socket /tmp/redmine.fcgi.socket
        min-procs: 4
        max-procs: 4
2008-04-27 20:28:25: (mod_fastcgi.c.1332) --- fastcgi spawning
        port: 0
        socket /tmp/redmine.fcgi.socket
        current: 0 / 4
2008-04-27 20:28:25: (mod_fastcgi.c.1332) --- fastcgi spawning
        port: 0
        socket /tmp/redmine.fcgi.socket
        current: 1 / 4
2008-04-27 20:28:25: (mod_fastcgi.c.1332) --- fastcgi spawning
        port: 0
        socket /tmp/redmine.fcgi.socket
        current: 2 / 4
2008-04-27 20:28:25: (mod_fastcgi.c.1332) --- fastcgi spawning
        port: 0
        socket /tmp/redmine.fcgi.socket
        current: 3 / 4
2008-04-27 20:29:44: (mod_fastcgi.c.2961) got proc: pid: 0 socket: unix:/tmp/redmine.fcgi.socket-3 load: 1
2008-04-27 20:29:45: (mod_fastcgi.c.1490) released proc: pid: 0 socket: unix:/tmp/redmine.fcgi.socket-3 load: 0

これだけみると lighttpd には問題なさそうなので、redmine の方をどうにかしないといけないのかな?

あ、いかん chown -R www-data /home/hokorobi/redmine

動いたっぽい。
最大の原因は……chown を忘れたからみたい orz

lighttpd.conf に fastcgi の内容を書く場合でも lighttpd.conf に mod_fastcgi は書かなくていいみたい。
10-fastcgi.conf に書いてあるからかな?