= Trac と mod_python =

Trac 0.7.1以降のバージョンでは[http://www.modpython.org/ mod_python]がサポートされています。[http://www.modpython.org/ mod_python]はTracのレスポンスタイムを飛躍的に向上し、tracd/mod_proxyでは使用できない多くのApache機能を使えるようにします。

== シンプルなコンフィグレーション ==

標準的なTrac CGI/Apacheのセットアップは次のようになっています:

{{{
ScriptAlias /projects/myproject /path/to/python/share/trac/cgi-bin/trac.cgi
<Location /projects/myproject>
   SetEnv TRAC_ENV /var/trac/myproject
</Location>
}}}

上記に対応するmod_pythonのセットアップは次のようになります:

{{{
<Location /projects/myproject>
   SetHandler mod_python
   PythonHandler trac.ModPythonHandler
   PythonOption TracUriRoot "/projects/myproject"
   PythonOption TracEnv /var/trac/myproject
</Location>
}}}

''TracUriRoot''オプションは不要な場合もありますのでご注意ください。まずは''TracUriRoot''オプションを付けずに試し、Tracが正しくURLを生成できないようであれば追加するようにしてください。

== マルチプロジェクトのセットアップ ==

Tracのmod_pythonハンドラはSubversionの {{{SvnParentPath}}} とよく似た {{{TracEnvParentDir}}} というコンフィグレーションオプションをサポートしています。

{{{
<Location /projects>
  SetHandler mod_python
  PythonHandler trac.ModPythonHandler
  PythonOption TracUriRoot /projects
  PythonOption TracEnvParentDir "/var/trac"
</LocationMatch>
}}}

{{{/projects}}} のURLをリクエストすると、{{{TracEnvParentDir}}}として設定したディレクトリ配下のサブディレクトリ一覧（現行では非常にシンプルな)が表示されます。その一覧から何かプロジェクトを選択するとそれに該当するTracのインスタンスを開くことができます。設定したディレクトリの配下には必ず現在インストールされているバージョンにマッチするTrac Environmentのディレクトリのみが置かれているようにしてください。プロジェクトリストの生成前にはそのようなチェックがかからないからです。


=== ユーザ認証の追加 ===

ユーザ認証の追加はどちらの場合も簡単です。次に例を示します:

{{{
<LocationMatch /projects/[[:alnum:]]+/login>
  AuthType Basic
  AuthName "Trac"
  AuthUserFile /var/www/passwd
  Require valid-user
</LocationMatch>
}}}

=== Win32 Issues ===

Windows 上で mod_python から Trac を使用すると、ファイル添付機能が使用できません。

これについては(簡単な)回避策があります。
ticket[http://projects.edgewall.com/trac/ticket/554 #554]に添付されているパッチを適用してください。


----
参考 TracGuide, TracInstall, TracMultipleProjects