portinstall www/mod_python3で mod_python をインストールして、ガイドにある通りに httpd.conf を記述するだけだった。
静的コンテンツの部分についての高速化をしなくて済む分、CGIでの設定よりも楽だ。
ただし、trac.cgiを通らないため、PYTHON_EGG_CACHE変数の設定は個別に行う必要があると思われる。(apache2全体で設定してしまってもいいんだけど)
共通設定 /usr/local/etc/apache22/Includes/trac.conf (CGI設定を一応残してある)
Alias /trac-htdocs /usr/local/share/trac/htdocs <Directory "/usr/local/share/trac/htdocs"> Order allow,deny Allow from all </Directory> <Directory "/usr/local/share/trac/cgi-bin/"> SetEnv PYTHON_EGG_CACHE "/tmp/traccache" AddHandler cgi-script .cgi DirectoryIndex trac.cgi Options ExecCGI AllowOverride None Order allow,deny Allow from all </Directory>
Tracサイトごとの設定 /usr/local/etc/apache22/Includes/trac_example.conf
<Location "/example-trac"> SetHandler mod_python PythonHandler trac.web.modpython_frontend # TracEnv は Tracを設置したローカルディレクトリ PythonOption TracEnv "/home/example/trac" # TracUriRoot は Locationに合わせる PythonOption TracUriRoot /example-trac SetEnv PYTHON_EGG_CACHE "/tmp/traccache" </Location> <Location "/example-trac/login"> AuthType Digest AuthName "trac.example.com" AuthDigestDomain /example-trac/ AuthDigestProvider file AuthUserFile /usr/local/etc/apache22/digest Require valid-user </Location>
Tracサイトを増やすときは、trac_example.conf をコピーしてすこしいじるだけなのでかなり楽。
相性が悪いらしい。mod_auth_pam による Basic 認証の上書きが効かなくなった。 LoadModule の順番を変えると直るかもしれないけど、とりあえず mod_python を外した。
mod_auth_pam が AuthType Basic を上書きしているという設計が悪いわけで、
AuthType PAM と明示的に指定できるようになっていればいいのに。
(でも俺的にはActiveDirectoryに向かって認証したいだけなので SPNEGO なり LDAP なりで頑張る方向で)