mod_psgi を実装してみた
http://github.com/spiritloose/mod_psgi
PSGI を実装したApache2モジュール。
% make && make install
でインストールできて、
LoadModule psgi_module modules/mod_psgi.so <Location /psgi> SetHandler psgi PSGIApp /path/to/app.psgi </Location>
で動く。
がーっと書いたのでまだまだの部分が多いとはおもうけど、一通り実装できたと思う。
Plack::Test::Suite を使ったテストも書いた。
http://github.com/spiritloose/mod_psgi/blob/master/t/suite.t
mod_perlのようにApacheの機能を提供する必要はなく、アプリケーションへはenvを渡せば
いいだけなので、実装は難しくない。
あとはそれ以外の部分をやっていければ。
あと、設定はmod_wsgiのように
PSGIScriptAlias /psgi /path/to/app.psgi
とかの方がいいのかしら。
mod_perlite については作ってる途中に気づいたんだけど、あれをPSGI対応にするにはほぼ書き直しになる
とおもったのでとりあえず作ってみることにした、という次第。
追記
miyagawaさんよりMac OS Xで以下のエラーでhttpdが起動しないとのこと。
Symbol not found: _PL_stack_sp Referenced from: /usr/libexec/apache2/mod_psgi.so Expected in: dynamic lookup
Mac OS X で動いた方がいらっしゃったら回避方法を教えていただけると助かります。
こちらの開発環境は以下の通りです。
ApacheとPerlはソースからビルドしたやつです。
$ uname -a Linux debian 2.6.26-2-686 #1 SMP Wed Aug 19 06:06:52 UTC 2009 i686 GNU/Linux $ cat /etc/debian_version 5.0.3 $ /usr/local/apache2/bin/httpd -v Server version: Apache/2.2.10 (Unix) Server built: Nov 20 2008 11:31:51 $ /usr/local/bin/perl -v This is perl, v5.10.1 (*) built for i686-linux === snip ===