mod_fastcgiでTracを動かす

mod_fastcgiでTracを動かす

Tracmod_fastcgiでTracを動かす

今回は、思い切って mod_python から mod_fastcgi にモジュールを切り替えて、Trac の高速化を別の方法で試してみたいと思います。DeNA 社の「モバオク」では、Perl で Web アプリケーションを構築していますが、mod_perl ではなく、fastcgi を使っています。その理由を下記のように述べています。

・アプリケーションのメモリ空間が Apache と独立するため、
アプリケーションの問題で Apache の動作自体に影響を与えることがない。
・アプリケーションプロセス単位の常時起動数を、Apache プロセス数とは
独立して細かく設定できる。

以下、FreeBSD での mod_fastcgi の導入手順です。ports ではなく、今回はソースからビルドします。

# ダウンロードサイト
http://fastcgi.com/

% cd /usr/local/src
% tar xvfz mod_fastcgi-2.4.2.tar.gz

# Makefile.AP2をベースにします
% cp Makefile.AP2 Makefile

# apacheのディレクトリパスを環境に合わせます
# 仮に Apache のルートディレクトリを /usr/local/apache とします
% vi Makefile

% make
% make install

これで、mod_fastcgi のモジュールはビルドできました。

あとは、Apache の設定を変更します。ついでに、mod_python は読み込まないようにします。

% vi httpd.conf

<IfModule mod_fastcgi.c>
   AddHandler fastcgi-script .fcgi
   FastCgiIpcDir /usr/local/apache/fastcgi
</IfModule>
LoadModule fastcgi_module modules/mod_fastcgi.so

FastCgiConfig -initial-env TRAC_ENV=/home/svn/saratoga/trac

# VirtualHost 内に下記を定義します
ScriptAlias /trac /usr/local/share/trac/cgi-bin/trac.fcgi
<Directory /usr/local/share/trac/cgi-bin/>
 AddHandler fastcgi-script .fcgi
 DirectoryIndex trac.fcgi
 Options ExecCGI
</Directory>

あとは、FastCgiIpcDir で指定した /usr/local/apache/fastcgi を作成しておきます。これは、通信用ソケットファイルの作成先になります。OS や環境にもよりけりですが、動的に場所を確保させずに、FastCgiIpcDir で指定しておいた方が良いみたいです。

$ mkdir -p /usr/local/apache/fastcgi

あとは、Apache を再起動して完了ですが、その前に、/usr/local/share/trac/cgi-bin/trac.fcgi の python のパスを確認しておきます。ports から python を入れたら、デフォルトでは /usr/local/bin 以下に入りますが、trac.fcgi や trac.cgi のスクリプトは、 /usr/bin/python で定義されているので注意が必要です。

[モバオクの資料を紹介していたサイト]
「DeNA 技師のメモ」
DB マガジン掲載記事ウェブ公開

最終更新日:

関連記事

人気記事

新着情報