いまだに lighttpd 1.5.0 で
fastcgiを動かせないオレガイル。
# lighttpd.conf
proxy-core.protocol = "fastcgi"
proxy-core.backends = ( "127.0.0.1:3001" )
で、
./script/myapp_fastcgi.pl -l 127.0.0.1:3001
でfcgi起動後アクセスすると
mod_proxy_core.c.1288: (trace) backlog: all backends are down, putting / (4) into the backlog
なんで?><
付属の spawn-fcgi でfastcgiプロセス起動しても結果は同じ。
全ログ
mod_proxy_core_address.c.136: (trace) resolving 127.0.0.1 on port 3001
mod_proxy_core_address.c.63: (trace) adding 127.0.0.1:3001 to the address-pool
log.c.139: (trace) server started
mod_proxy_core.c.1288: (trace) backlog: all backends are down, putting / (4) into the backlog
  lightyでRTを動かすの法
$HTTP["host"] == "rt.unknownplace.org" { server.document-root = "/usr/local/rt3/share/html" server.errorlog = "/var/log/lighttpd/rt-error.log" accesslog.filename = "/var/log/lighttpd/rt-access.log"
     setenv.add-environment = (
          "SCRIPT_NAME" => "/",
     )
     url.rewrite-once = (
          "^/(?!NoAuth/images/)(.*)" => "/rt3/$1",
     )
     fastcgi.server = (
          "/rt3" => ((
               "bin-path" => "/usr/local/rt3/bin/mason_handler.fcgi",
               "socket" => "/tmp/rt.socket",
               "max-procs" => 1,
               "check-local" => "disable",
          ))
     )
}
/usr/local/rt3 に入れた場合。
lighttpd 1.4.12 のセグフォ
やっぱバグだったようだ。さっき修正されたらしい。
lighttpd 1.4.12
FastCGI周りバグがあるっぽいなぁ。
たまにセグフォる。しかし再現性がいまいちわからない。
Helper::Lighttpd #4
MIME::Types が入ってたらそっからがーって mimetype.assign をはくようにした。
てけとう。
でも、mime-typeが指定されてなくて困るのは、FirefoxでCSSが適用されないってぐらいな気がするというかそんな感じなのでとりあえずこれで。
Helper::Lighttpd #3
-dオプションもつけた。-Debug してなくてもデバッグ出力できるやつ。まぁserver.plと同じ。
$ ./script/myapp_lighttpd.pl -l /usr/sbin/lighttpd -d
2006-09-09 15:45:39: (log.c.75) server started
[debug] Debug messages enabled
[debug] Loaded plugins:
.----------------------------------------------------------------------------.
| Catalyst::Plugin::ConfigLoader  0.13                                       |
| Catalyst::Plugin::Static::Simple  0.14                                     |
'----------------------------------------------------------------------------'
[debug] Loaded dispatcher "Catalyst::Dispatcher"
[debug] Loaded engine "Catalyst::Engine::FastCGI"
[debug] Found home "/home/typester/tmp/MyApp"
[debug] Loaded Config "/home/typester/tmp/MyApp/myapp.yml"
[debug] Loaded components:
.-----------------------------------------------------------------+----------.
| Class                                                           | Type     |
+-----------------------------------------------------------------+----------+
| MyApp::Controller::Root                                         | instance |
'-----------------------------------------------------------------+----------'
[debug] Loaded Private actions:
.----------------------+--------------------------------------+--------------.
| Private              | Class                                | Method       |
+----------------------+--------------------------------------+--------------+
| /default             | MyApp::Controller::Root              | default      |
| /end                 | MyApp::Controller::Root              | end          |
'----------------------+--------------------------------------+--------------'
[info] MyApp powered by Catalyst 5.7001
Yes! YEs!
あとは静的ファイルの mime-types をちゃんとサポートすれば、server.plいらない気がする。
perl -d するとき以外は。
error-handler-404 で指定したスクリプトで 404 返すと
2006-09-09 14:58:36: (connections.c.1422) Warning: Either the error-handler returned status 404 or the error-handler itself was not found: /script/myapp_fastcgi.pl 2006-09-09 14:58:36: (connections.c.1424) returning the original status 404 2006-09-09 14:58:36: (connections.c.1426) If this is a rails app: check your production.log
とか言われるわけだが、404を返す正しい方法が何かあるのだろうか?
Catalyst::Plugin::XSendFile
lightyのX-SendfileをCatalystから使うプラグインをつくった。
$c->res->sendfile("/path/to/file");
って感じで使えます。同じインタフェースでCatalystテストサーバーの時でも動くようになってます。
miyagawaさんの話だとperlbalでも同じようなことが出来るとのこと(もっと高機能)。でさらにそれにmogilefsを組み合わせるとかなりスケーラビリティが高そうな感じ。
ちょっと見てみるべきかなぁ。
lighty で configtest
lighttpd -t -f lighttpd.conf
1.4.11
* fixed handling of error codes returned by mod_dav_svn behing a mod_proxy
ってなってて、やっと mod_proxy で OPTIONS 通らないのなおったぽい。
これでやっとフロント lighty にできる!