= Trac と mod_python =
Trac では [http://www.modpython.org/ mod_python] をサポートします。 [http://www.modpython.org/ mod_python] は Trac のレスポンスタイムを飛躍的に向上し、 [wiki:TracStandalone tracd]/mod_proxy では使用できない多くの Apache 機能を使えるようにします。
== シンプルなコンフィグレーション ==
もし mod_python をインストールしたならば、 Apache の設定ファイルに以下の一行を追加してモジュールをロードしなければなりません:
{{{
LoadModule python_module modules/mod_python.so
}}}
mod_python を使用した簡単な Trac のセットアップ方法は以下のようになります:
{{{
SetHandler mod_python
PythonHandler trac.web.modpython_frontend
PythonOption TracEnv /var/trac/myproject
PythonOption TracUriRoot /projects/myproject
}}}
`TracUriRoot` オプションは不要な場合もありますのでご注意ください。まずは `TracUriRoot` オプションを付けずに試し、 Trac が正しく URL を生成できないようであれば追加するようにしてください。
認証設定は [wiki:TracCgi#認証を追加する CGI] と同じです:
{{{
AuthType Basic
AuthName "myproject"
AuthUserFile /var/trac/myproject/.htaccess
Require valid-user
}}}
もし Trac のインストールが、通常の Python ライブラリのパスの中に無い場合、 Apache が Trac の mod_python ハンドルを見つけられるように `PythonPath` ディレクティブで指定しなければなりません:
{{{
...
PythonPath "sys.path + ['/path/to/trac']"
...
}}}
== マルチプロジェクトのセットアップ ==
Trac の mod_python ハンドラは Subversion の `SvnParentPath` とよく似た `TracEnvParentDir` というコンフィグレーションオプションをサポートしています。
{{{
SetHandler mod_python
PythonHandler trac.web.modpython_frontend
PythonOption TracEnvParentDir /var/trac
PythonOption TracUriRoot /projects
}}}
`/projects` の URL をリクエストすると、 `TracEnvParentDir` として設定したディレクトリ配下のサブディレクトリ一覧が表示されます。その一覧から何かプロジェクトを選択するとそれに該当する TracEnvironment を開くことができます。
あなたのプロジェクトのホームページとして、サブディレクトリのリストが必要ないならば、以下のようにすることができます。
{{{
}}}
これは Apache に mod_python を使用するために !DocumentRoot フォルダの代わりのロケーションを使用することを教えます。
すべてのプロジェクトに対して、 `` ディレクティブを使用することによって同じ認証の仕組みを使用することができます。
{{{
AuthType Basic
AuthName "Trac"
AuthUserFile /var/trac/.htaccess
Require valid-user
}}}
== 仮想ホストの設定 ==
以下に示す例は Trac を仮想サーバーとしてセットアップするときに必要な設定です。 ( 例えば、!http://trac.mycompany.com といった
URL でアクセスすることができます):
{{{
DocumentRoot /var/trac/myproject
ServerName trac.mycompany.com
SetHandler mod_python
PythonHandler trac.web.modpython_frontend
PythonOption TracEnv /var/trac/myproject
PythonOption TracUriRoot /
AuthType Basic
AuthName "MyCompany Trac Server"
AuthUserFile /var/trac/myproject/.htusers
Require valid-user
}}}
== トラブルシューティング ==
=== フォームを送信するときの問題 ===
もし、 Trac のなかの何かしらのフォームを送信したときに、トラブルに見舞われたら(一般的な問題として、送信後にスタートページにリダイレクトされてしまうという問題があります)、あなたが指定した {{{DocumentRoot}}} と mod_python がマッピングしたのと同じフォルダやファイルを指しているかどうか確認してください。いくつかの理由のために、 mod_python は静的なリソースがマッピングされているのを嫌います。
=== .htaccess ファイルを使用する ===
ディレクトリの設定をほんのちょっと修正するには `.htaccess` ファイルを使用すればいいかもしれませんが、これは動作しません。 Apache が Trac URL に "/" (スラッシュ) を追加すると、正しい動作を妨げてしまいます。
それでは、 mod_rewrite を使用すればいいように見えますが、これも動作しません。とにかく、百害あって一理なしです。指示に従ってください。:)
=== Win32 での特記 ===
もし、 Windows 上で mod_python (3.1.3 または 3.1.4) を使用して Trac を起動しているならば、
添付ファイルのアップロードがたぶん動作 '''しない''' でしょう。
これは、既知の問題で、 Trac のレベルではきれいに解決できません。
とはいうものの、 mod_python レベルでの解決方法があります。
パッチ [http://projects.edgewall.com/trac/attachment/ticket/554/util_py.patch attachment:ticket:554:util_py.patch] を
(Lib/site-packages)/modpython/util.py ファイルに適用して下さい。
もし、 `patch` コマンドを持っていないならば、ファイルを [http://svn.apache.org/viewcvs.cgi/httpd/mod_python/trunk/lib/python/mod_python/util.py?rev=103562&view=markup 修正済みの util.py]に置き換えることもできます。 (mod_python 3.1.4 リリース以前に書かれたものですが、事象が修正されます
現在の 3.1.4 ''ではありません'')。
=== OS X での特記 ===
OS X で mod_python を使用するとき、 `apachectl restart` コマンドで Apache の再起動ができないでしょう。これは、 mod_python 3.2 でおそらく修正されるでしょう。しかし、 [http://www.dscpl.com.au/projects/vampire/patches.html ここ] にあるパッチを適用すれば、 3.2 以前のバージョンでもこの問題を回避できます。
----
See also: TracGuide, TracInstall, TracCgi, TracFastCgi