読者です 読者をやめる 読者になる 読者になる

methaneのブログ

このブログに乗せているサンプルコードはすべてNYSLです。

mod_wsgi は VirtualHost 単位でないと Daemon を分けられない?

WSGIDaemonProcess ディレクティブは、server config か virtual host の context で使える。
http://code.google.com/p/modwsgi/wiki/ConfigurationDirectives#WSGIDaemonProcess
なので、 Location 毎にProcessを分けるとかはできない。

社内でオレサーバーでwsgiアプリをいくつか動かす場合、(オレtrac+bzrとかオレmoinとか) サブドメインの管理を考えると簡単に VirtualHost にできないんだよね・・・。
mod_wsgidaemonモードの利点の一つはWebサーバーとWebアプリのユーザーを分けられることだったんだけど、サービス用ユーザーを一つで全サービス提供するか、apache に複数のポートをlistenさせてmod_proxy経由で無理やりVirtualHostを実現するか。
mod_wsgiを使わずに、fastcgiか、各アプリをそれぞれPasteあたりのPython製Webサーバーで立ち上げて、mod_proxyするという手もあるか。

mod_wsgiの大きな魅力の一つは、 environ['wsgi.file_wrapper'] で静的ファイルをsendfileで転送できることで、静的ファイルをApacheで直接配信するとApache設定ファイルを書くのが面倒になるのが嫌な人間には辞められない。ポートを分けて mod_proxy を挟んでしまうとsendfileの魅力が半減するのが嫌だな。

よし、決めた。サービスユーザーを一つにまとめよう。んでもって、Apacheをそのユーザーで起動して、daemonモードは使わない。