trac to lighttpd

せっかくなので、一度やったApache2/CGIはやめて、lighttpdを使ってみる。

# apt-get install lighttpd

バージョンは1.4.13が入った。


CGIもつまらないので、FastCGIを使ってみる。
FastCGIは、バックエンドプロセスを常駐化できるので、CGIで都度呼び出しするよりは速い。
mod_pythonにくらべても、SuEXECが使えるというメリットがある。

Configuring Trac with FastCGI and lighttpd
http://njr.sabi.net/2005/07/31/configuring-trac-with-fastcgi-and-lighttpd/
中身はだいぶ前のバージョンに対応したものだ。

# mkdir /var/www/trac
# chown www-data:www-data /var/www/trac/
# cp /usr/share/trac/cgi-bin/trac.fcgi /var/www/trac/
# chown www-data:www-data /var/www/trac/trac.fcgi

Debianの作法か、メインの設定ファイルは"/etc/lighttpd/lighttpd.conf"であるが、追加の設定ファイルは"/etc/lighttpd/conf-available/"に置くようになっているので、trac用の設定ファイルを追記する。作成した設定ファイルは、起動時に実行されるようにconf-enabledにシンボリックリンクを作成しておく。

# vi /etc/lighttpd/conf-available/10-trac.conf
fastcgi.server = ("/trac" =>
                   ("trac" =>
                     ("socket" => "/tmp/trac-fastcgi.sock",
                      "bin-path" => "/var/www/trac/trac.fcgi",
                      "check-local" => "disable",
                      "bin-environment" =>
                        ("TRAC_ENV" => "/var/trac/kinneko")
                     )
                   )
                 )
# cd /etc/lighttpd/conf-enabled
# ln -s ../conf-available/10-trac.conf ./

# /etc/init.d/lighttpd restart
Stopping web server: lighttpd.
Starting web server: lighttpd.

fcgiファイルを認識しないな。
type: application/octet-streamで送られて来るよ。
mod_fastcgiがデフォルトでオンじゃないのかな。
エラーも出ている。

2007-01-23 15:48:25: (server.c.871) WARNING: unknown config-key: fastcgi.server (ignored)

10-trac.confの先頭に以下を追記する。

server.modules   += ( "mod_fastcgi" )

サーバーの起動エラーは出なくなったが、ブラウザからのアクセスで、Pythonの実行エラー画面は表示されるようになった。
なんだろう?
関連するファイルを見ていくとファイルが開けていない風だ。

# chown -R www-data.www-data /var/trac/

ああ、表示できた。
これだったか。


環境変数を渡すには、fcgiファイルに直接書き込んでしまう手もある。

# vi trac.fcgi
import os
os.environ['TRAC_ENV'] = "/var/trac/kinneko"

trac.fcgiをコピーして名前を変えれば、lighttpdの設定をあまりいじらなくても複数プロジェクトの運営ができる。
TRAC_ENV_PARENT_DIRを使うと、もっと簡単にプロジェクトのリンクリストを出すことができる。httpdの設定は、これだと変更の必要がなくなる。