TracのApache対応

少し時間ができたのでTracmod_python対応をやってしまうのです


まあ、やることはhttp.confに以下の内容を書き込むだけなんですが

apache設定ファイルに追記

<Location /uri/to/trac>
   SetHandler mod_python
   PythonHandler trac.web.modpython_frontend
   PythonOption TracUriRoot "/trac"
   PythonOption TracEnvParentDir /path/to/trac
   PythonOption PYTHON_EGG_CACHE /path/to/.egg-cache
</Location>

<LocationMatch "/uri/to/trac/.*/login">
   AuthType Basic
   AuthName "trac"
   AuthUserFile "/path/to/.htpasswd"
   Require valid-user
</LocationMatch>

ちなみに、CentOSとかでyum install tracを使ってTracのインストールをすると、/etc/httpd/conf.d/以下に上記と同等のtrac.confが自動的に作成されるので便利なんですが、はまる原因にもなるので注意が必要だと思います。ええ、はまりましたとも。




がりがり書き込んだらapacheの再起動をして完了です。それと、Tracに対してapacheから書き込むファイル(DBとかログとか)はApache権限にしておかないとエラーが出るのです。


若干解説〜

  • 前半の最後の行でeggの解凍領域を指定してあげないとエラーが出る場合があります
    • 特にプラグインを使う場合はeggファイル呼び出しが多いみたいなんで必須だと思ったほうが良いかも
  PythonOption PYTHON_EGG_CACHE /path/to/.egg-cache
  • 後半はApacheのLocationMatch使ってBASIC認証設定をしています
    • BASIC認証の結果をTracが受け取ってログイン管理に利用するような動作になります

うまく行かなくて悩んでる事

LocationMatchでのBASIC認証の際に、プロジェクトごとの.htpasswdを読み込ませる方法が思いつかないのです。。。Location内ではAllowOverideの指定ができないらしいから.htaccessで個別設定もできないしなぁ。。。困った


ひとまず、プロジェクトを作るごとにhttpd.conf追記→Apache再起動はちょっといただけないので、共通認証方式でやってみるのです。Apacheモジュールで認証を任意のバックエンドにぶん投げる、なんて都合の良いものはないかしら?


とりあえずmod_python設定は完了かな?


また時間ができたときにプラグインの追加とかやるのです