mod_fastcgiでTracを動かす
※実経験の記憶を頼りに自宅の PC 環境(VMWareなど)で再現している内容もあるのでご注意下さい
2007-06-11
今回は、思い切って 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 マガジン掲載記事ウェブ公開
関連記事
上記の記事に関連する記事(最新の10件)です。


