ubuntu上でtrac-0.11と0.12を共存させる

1. 前置き

目的
  • trac 0.11 を動かしたまま、trac 0.12 を試したいっ!。
    • マルチレポジトリってどう動くん?
    • 0.11と0.12を比較しながら違いを見たい。
前提条件(というか私の環境)
  • なるべく本番に近い環境でテストしたいので、稼働中の trac-0.11.7用 ubuntu server上に構築・共存させる
    • ubuntu 8.04LTS server i386 : ちと古いが。
    • sqlite3
    • python 2.5
      • easy_install, Genshi 等々は trac-0.11.7 導入時に入れた・・・と思う
    • apache2 + mod-python
  • Trac配置
    • /srv/Trac-0.12_system/ 以下にTrac-0.12本体をおく
    • ttp://oresama.oreore.net/trac-0.12/ が parent directory になるようにweb配置
    • マルチレポジトリテストのため、mercurial のレポジトリを2つ配置してある
      • /srv/hg-repo/hg-sandbox01
      • /srv/hg-repo/hg-sandbox02

2. Trac 0.12.2 を配置

Trac-0.12.2の入手
$ cd ~/workspace
$ wget http://ftp.edgewall.com/pub/trac/Trac-0.12.2.tar.gz
$ tar -xzf Trac-0.12.2.tar.gz
$ cd Trac-0.12.2
$ sudo python setup.py install --root /srv/Trac-0.12_system
$

OK。配置完了。

permission調整は割愛。

3. Trac site の配置と調整

trac-admin wrapper(trac-admin-012)の準備

そのままやると、trac-0.11.7 のツールが動いてしまうので、
http://d.hatena.ne.jp/tomo_snowbug/20100613/1276365386
と同じようにWrapper-Scriptを用意

↓/usr/bin/trac-admin-012 の中身↓

#!/bin/sh
export PYTHONPATH=/srv/Trac-0.12_system/lib/python2.5/site-packages
/srv/Trac-0.12_system/bin/trac-admin $@

tracdは使わないから放置。

Site Initialize
$ sudo mkdir /srv/Trac-0.12_projects/TestSite.trac-0.12
$ sudo chown www-data /srv/Trac-0.12_projects/TestSite.trac-0.12
$ sudo trac-admin-012 /srv/Trac-0.12_projects/TestSite.trac-0.12 initenv

        ・・・・・(中略)・・・・・

Congratulations!

$ sudo chown -R www-data /srv/Trac-0.12_projects/TestSite.trac-0.12
$ 

とりあえず、自分にネ申権限を設定。

$ sudo -u www-data trac-admin-012 /srv/Trac-0.12_projects/TestSite.trac-0.12 permission add o-taki TRAC_ADMIN
apache2 設定

下記のようなものを "/etc/apache2-sites-enabled/$(your_site_setting)" に書き込む。

        <Location /trac-0.12>
                SetHandler mod_python
                PythonPath "['/srv/Trac-0.12_system/usr/lib/python2.5/site-packages'] + sys.path"
                PythonInterpreter main_interpreter
                PythonHandler trac.web.modpython_frontend
                PythonOption PYTHON_EGG_CACHE /tmp/.trac-0.12.egg-cache
                PythonOption TracEnvParentDir /srv/Trac-0.12_projects
                PythonOption TracUriRoot /trac-0.12
        </Location>
        <LocationMatch "/trac-0.12/[^/]+/login">
                AuthType Basic
                AuthName "linuxdev web accont"
                AuthUserFile $(REPLACE_YOUR_ENV)/.passwd
                Require valid-user
        </LocationMatch>
起動テスト

起動した。

  • admin→plugin で確認すると 0.12.2 が読み込まれている。
  • が、下のほうに行くと、0.11でinstall した plug-in が表示されてしまう。
    • つうことは、混じって読んでるのね・・・
  • 全部の 0.11 plug-in ではない
    • global install したものだけ?っぽい。
  • orz Orz ORZ

(screen shot を後で貼ろう)

〜閉幕〜

今回のまとめ
  1. trac-0.12 を非標準ディレクトリに配置し、起動はできた。
  2. trac-0.11 用にglobal install された plug-in が shareされてしまう。
次の作戦
  1. trac-0.11 側も非標準ディレクトリにして干渉しないようにすれば・・・いけるか?