2007-01-25

λ [FreeBSD] trac を mod_python で動かす

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_python + mod_auth_pam で不具合

相性が悪いらしい。mod_auth_pam による Basic 認証の上書きが効かなくなった。 LoadModule の順番を変えると直るかもしれないけど、とりあえず mod_python を外した。

mod_auth_pam が AuthType Basic を上書きしているという設計が悪いわけで、 AuthType PAM と明示的に指定できるようになっていればいいのに。 (でも俺的にはActiveDirectoryに向かって認証したいだけなので SPNEGO なり LDAP なりで頑張る方向で)

λ BIND 9.3.4 など

DNSSECとrecursion(再帰問い合わせ)の部分のセキュリティfix。

特に関係なく急ぎではないので FreeBSD SA が来たら更新することになる予定。

[]