unknownplace.org

# 2007-12-20

lighttpd+fastcgiで

fastcgiだけ再起動したい場合に、再起動中にアクセスあるとfastcgiプロセスが上がったあとも500になってしまうことがあるのだけど、みんなどうしてる?

# 2007-04-14

おお、1.4.15。

# 2007-03-16

学生さんのcatアプリ見せてもらった。なんかすごいがんばってた。

Chainedアクションがないころのなのか、/wiki/{pagename}/edit とかそれ系のコントローラを Regex コントローラでがんばってたりしてた。

Plugin::Images とかつかってた。しらんかった。なんかあれだなーと思ったら作者見て納得。nothingmuch のか。

Plugin::Static::Simple とかは使わないほうがいいよ。静的ファイルはサーバー直でやんないと無駄。ロードするだけですらッ!

それで思い出したけど、lighttpdの設定、最近 mod_aliasmod_setenvmod_rewrite もつかわない書式を思いついて使ってる。

$HTTP["url"] =~ "^/(?!favicon\.ico$|static/|js/|css/|images?/)" {
    fastcgi.server = (
        "" => (
            ( "socket" => "/path/to/myapp.socket",
              "check-local" => "disable", ),
        ),
    )
}

こんなの。

とにかく、技術はどうあれ、作ってみる、形にするってことはやっぱり重要だなと思った。口だけなら何でもいえる。

# 2006-12-19

C::P::XSendFile supported X-LIGHTTPD-send-tempfile

1.5 動いた記念。

http://svn.unknownplace.org/public/library/perl/trunk/Catalyst-Plugin-XSendFile/

Plugin::XSendFile をアップデート。あとでdevリリースでCPANに。

# myapp.yml
sendfile:
  tempdir: /dev/shm

して

use Catalyst qw/XSendFile/;

するだけで、出力が 16kbyte 以上のときは自動で X-LIGHTTPD-send-tempfile 経由での出力になるって感じ。

16kbyte って閾値と、それ以前に勝手にsendfileるのは設定できるようにしたほうが良いな。ま、おいおい。

んで、確かに速いんだけど、なんか不安定。ベンチってたんだけど fastcgi プロセス反応なくなるときがある。

XSendFile の使用有無にかかわらずそうなのでfastcgiサポート自体の問題くさいけどよくわからない。

Catalyst on Lighttpd 1.5.0

新しいのでてたのでリベンジ。

server.modules = (
    "mod_proxy_core",
    "mod_proxy_backend_fastcgi",
)

server.document-root = "/home/typester/tmp/MyApp/root"
server.port = 3000

proxy-core.balancer = "round-robin"
proxy-core.protocol = "fastcgi"
proxy-core.backends = ( "unix:/home/typester/tmp/MyApp/fcgi.socket" )

でとりあえずMyApp動いた。

バックエンドがひとつの場合でも proxy-core.balancer を必ず指定しないといけないようだ。でないと

mod_proxy_core.c.1550: (trace) backlog: all backends are down, putting /foo (4) into the backlog

といわれてしまう。

この間はそれでできなかっただけかも!

X-Rewrite-* や X-LIGHTTPD-send-tempfile など楽しげな機能でやっと遊べる><

あと mod_uploadprogress のソースもついてきていて、configureスクリプトの do_build のところに追加で書いてみたらビルドできた。これでも遊んでみたい。

# 2006-11-16

いまだに 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

# 2006-10-26

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 に入れた場合。

# 2006-10-04

lighttpd 1.4.12 のセグフォ

やっぱバグだったようだ。さっき修正されたらしい。

# 2006-10-03

lighttpd 1.4.12

FastCGI周りバグがあるっぽいなぁ。

たまにセグフォる。しかし再現性がいまいちわからない。

# 2006-09-09

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を返す正しい方法が何かあるのだろうか?

# 2006-07-21

Catalyst::Plugin::XSendFile

lightyのX-SendfileをCatalystから使うプラグインをつくった。

$c->res->sendfile("/path/to/file");

って感じで使えます。同じインタフェースでCatalystテストサーバーの時でも動くようになってます。

miyagawaさんの話だとperlbalでも同じようなことが出来るとのこと(もっと高機能)。でさらにそれにmogilefsを組み合わせるとかなりスケーラビリティが高そうな感じ。

ちょっと見てみるべきかなぁ。

# 2006-04-17

lighty で configtest

lighttpd -t -f lighttpd.conf

# 2006-03-16

1.4.11

* fixed handling of error codes returned by mod_dav_svn behing a mod_proxy

ってなってて、やっと mod_proxy で OPTIONS 通らないのなおったぽい。

これでやっとフロント lighty にできる!

Page 1 of 2: 1 2