Trac を FastCGI で使用する

バージョン 0.9 以降、 Trac は FastCGI インタフェースをサポートするようになりました。 mod_python 同様、 Trac を常駐させるため、外部の各リクエストに対して新しいプロセスを生成する CGI インタフェースよりも処理速度が速いです。その上 mod_python とは異なり SuEXEC をサポートすることができます。また、より多くの種類の Web サーバにサポートされています。

単純な Apache の設定

# Enable fastcgi for .fcgi files
# (If you're using a distro package for mod_fcgi, something like
# this is probably already present)
<IfModule mod_fastcgi.c>
   AddHandler fastcgi-script .fcgi
   FastCgiIpcDir /var/lib/apache2/fastcgi 
</IfModule>
LoadModule fastcgi_module /usr/lib/apache2/modules/mod_fastcgi.so

TRAC_ENV を以下のように設定することができます:

FastCgiConfig -initial-env TRAC_ENV=/path/to/env/trac

もしくは複数の Trac プロジェクトを扱っているときは、このように設定します:

FastCgiConfig -initial-env TRAC_ENV_PARENT_DIR=/parent/dir/of/projects

ScriptAlias を設定するもしくは似たオプションが TracCgi で説明されていますが、 trac.cgi のかわりに trac.fcgi と呼びます。

単純な Lighttpd の設定

FastCGI フロントエンドは最初 lighttpd のような、 Apache 以外の Web サーバのために開発されました。

lighttpd はセキュアで高速で、規格に準拠したとても柔軟な Web サーバで、高いパフォーマンスの環境で最適化されます。 他の Web サーバに比べて CPU や、メモリの占有率がとても少ないです。

trac.fcgi を lighttpd で使用するためには、 lighttpd.conf に以下の行を追加します:

fastcgi.server = ("/trac" =>
                   ("trac" =>
                     ("socket" => "/tmp/trac-fastcgi.sock",
                      "bin-path" => "/path/to/cgi-bin/trac.fcgi",
                      "check-local" => "disable",
                      "bin-environment" =>
                        ("TRAC_ENV" => "/path/to/projenv")
                     )
                   )
                 )

動かしたい Trac のインスタンス毎に fastcgi.server のエントリを追加する必要があります。別の方法として、、上記の TRAC_ENV の代わりに TRAC_ENV_PARENT_DIR を使用できます。

その他重要な情報、例えば、 lighttpd の TracInstall や、 TracCgi などは fast-cgi 固有ではありませんが、インストールの詳細をつかむのに有用でしょう。

lighttpd を再起動し、ブラウザに http://yourhost.example.org/trac を入力して、 Trac にアクセスして下さい。


See also: TracCgi, TracModPython, TracInstall, TracGuide