«前の日記(2008-03-11 (火)) 最新 次の日記(2008-03-23 (日))»  

まちゅダイアリー


2008-03-13 (木)

Trac を設置するときは静的ファイルを分離すると速い

Trac のマニュアル (TracCgi) に書いてあることだけど、意外と知らない人がいそうなのでメモ。 特に、レンタルサーバに CGI として設置する場合には重要なポイント。

デフォルト状態の問題

Trac をデフォルトの状態で動かすと、 Trac のロゴやスタイルシートや JavaScript ファイルが、みんな Trac プログラム経由でのアクセスとなる。 例えば、 Trac を CGI として

http://www.example.jp/trac.cgi

に設置したとすると、 Trac のロゴは

http://www.example.jp/trac.cgi/chrome/common/trac_logo_mini.png

という URL になる。 Firebug などで見れば分かるけど、すべて CGI を経由するので負荷がかかってレスポンスが遅くなる。

対策…静的ファイルの分離

静的ファイルを Web サーバから直接参照できる場所に置くことで、負荷を大きく下げることができる。 Trac の静的ファイルは、ソースから入れた場合は

/opt/local/share/trac/htdocs

に入っている。 ディレクトリは環境によって /usr/local/share だったり、 $HOME/share だったりする。 setup.py を使った場合は

/opt/local/lib/python2.5/site-packages/Trac-0.11b1-py2.5.egg/trac/htdocs

あたりに入ってる(うちの MacBook Pro の場合)。

このディレクトリを、 Web サーバの DocumentRoot 以下からシンボリックリンクを張って参照できるようにする。

$ cd /var/www
$ ln -s $TRAC_HTDOCS trac_common

※ TRAC_HTDOCS は前述の htdocs ディレクトリの場所に読み替えて

次に、 trac.ini を編集して Trac にこの静的ファイルの場所を教えてあげる。 [trac] セクションの htdocs_location に指定する。

[trac]                                                                                                                          
htdocs_location = /trac_common

こうすれば、先ほどのロゴの URL は

http://www.example.jp/trac_common/trac_logo_mini.png

になる。 こうすれば画像やスタイルシートの読み込み時に CGI が起動されなくなる。

ちなみに

僕は Subversion が使えて自由度の効く TextDrive に Trac を設置しているけど、海外にサーバがあるので遅延が大きい。 なので、静的ファイルだけを国内の別サーバから取得するようにしている。 さっきの例で言うと、 Trac 本体が

http://www.example.jp/trac.cgi

とすると、静的ファイルは、

http://static.example.jp/trac_common/trac_logo_mini.png

という感じ。 trac.ini にも以下のように書いている。

[trac]                                                                                                                          
htdocs_location = http://static.example.jp/trac_common

レンタルサーバの場合は体感的にわかるほどの違いがあるので、ぜひやってみるといいよ。

Tags: trac
本日のツッコミ(全5件) [ツッコミを入れる]
hirobe (2008-03-14 (金) 01:45)

私はTracEnvフォルダのhtdocsも分離したかったので、<br>Apache(.htaccess)で制御するようにしています。<br>いずれにしても、trac.cgi回避の効果は大きいですね。

hyuki (2008-03-15 (土) 12:07)

内容とまったく関係がない話題ですが、<br>例としてのdomain名に、example.jpを使うのは<br>正当でしょうか(純粋な疑問)?<br>(example.com, example.net, example.orgならば<br>RFC2606で理解できる)<br><br>http://www.example.com/<br>http://www.rfc-editor.org/rfc/rfc2606.txt<br>http://res-dom.iana.org/

やざ (2008-03-15 (土) 13:05)

横から失礼。hyukiさん宛て。<br>JPRSさんによると例示可能だそうです。<br>http://jprs.jp/info/faq.html#27<br>http://www.atmarkit.co.jp/fwin2k/win2ktips/801exampledom/exampledom.html

まちゅ (2008-03-15 (土) 13:08)

>hyukiさん<br>RFCではないですが、JPRSで例示用として予約されているようですね。<br>example1.jp なども使えます。<br>http://jprs.jp/info/faq.html#27

hyuki (2008-03-15 (土) 14:26)

なるほど、理解しました。他人のCPUを使って検索してしまい、すみません。ありがとうございます。www.example.jpにアクセスしたらその説明文がでるとよいのになあ、と勝手ながら思いました。(^_^)