家サーバ

事情があって、trac0.11devとtrac0.10を並行稼動させることに。考えてみたら、いろいろと面倒くさそうだ。

  • tracをインストールするとlib/python2.4/site-packagesに入る。こちらはバージョン管理されてるのだけど、実行用のスクリプト(tracd, trac-admin)はbinに入ってしまうので、混ぜると危険。
    • ていうか、よく見たらlib/python2.4/site-packages/tracに入ってる。だめじゃん。
  • ついでPythonのバージョンも、2.4にしたい
  • apachemod_pythonとかmod_wsgiは、複数のPythonがあると具合が悪いし、そもそもPythonのバージョンが違ったらmodも別バイナリになるわけで。

というわけで、以下のようにすることにした。

  • 別のユーザを作って、なにもかも$HOMEに入れる
    • Python2.4.4
    • subversion1.4.5
      • swig-pyも忘れずに
    • trac0.10.4
    • ClearSilver0.10.5
  • tracスタンドアロンで動かして、apacheにはmod_rewriteでつなぐ
    • 0.11devのほうは、mod_wsgiで動かしている。

はまったところ

なお、「~/」というのは、ほんとは絶対パスで指定している。

  • subversion
    • ./configure --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr --with-apxs=/usr/bin/apxs2 --prefix=~/svn
    • make installで、apacheモジュールがコピーできないと。rootじゃないので当然。make -i で無視したらうまくいった。
  • ClearSilver
    • なんか全体に変
    • pythonライブラリが作れない。以下の手順でできた。
./configure --prefix=~/ --disable-apache --enable-gettext --enable-python --with-python=~/python/bin/python
rules.mkを編集:
  PYTHON_INC = -I~/python/include
  PYTHON_LIB = -L~/python/lib/python2.4/lib-dynload
  PYTHON     = ~/python/bin/python
make
make install
cd python
make
cp build/lib.linux-i686-2.4/neo_cgi.so ~/python/lib/python2.4/lib-dynload/
  • apacheと連携
    • mod_rewritemod_pythonを有効化
    • /etc/apache2/mods-available/proxy.confを変更。指定のURLのみプロキシする。うっかりフォワードプロキシにしないよう注意。
<Proxy http://localhost:8080/test/foo* >
   AddDefaultCharset off
   Order deny,allow
   Allow from all
</Proxy>
    • /etc/apache2/sites-enabled/000-default に追加
    # support for standalone Trac
    RewriteEngine on
    RewriteRule ^/test/foo/(.*) http://localhost:8080/test/foo/$1 [L,P]
    • tracd -d -p 8080 --base-path=test/foo bar