TracLightningの2系と3系を同居させてみた(結構適当)

2010/12/13 追記あり

サンプルプロジェクトのインターフェースがすっかり変わって話題の TracLightning3.0 ですが、今日現在で3.0.3がリリースされてます。
TracLightning3.0 の本質は見た目の変更ではなく、Trac本体のメジャーバージョンアップと増えすぎた同梱プラグインの整理にあります。
では早速移行しようと思ってもTrac本体のメジャーバージョンアップの影響確認と、今までの環境に別途入れたプラグインの調整などが必要になります。

vm立てて疑似環境作ってテストして〜と行きたいところですが Windows だとライセンスの兼ね合いもあったりで簡単ではありません。

そこで既にTracを運用しているサーバにリソースの余裕があったので同居させて検証してみることにしました。
無事、同居出来たので以下にその方法をメモ代わりに書いておきます。
あくまでも検証用なのでサービスで起動せずコマンドプロンプトからの起動ですので、その辺りはご了承を。*1


0.アジェンダ

作業としては

  • 一旦別なPCにインストールして、それをコピーする。
  • Apacheのポートを変更する
  • Hudsonのポートを変更する
  • Pyhton周りのPathが重複しないようにする
  • 今動いてるTracを止めない(←一番重要w)

を念頭に置いて作業をすると目標が達成できます。

1.一旦別なPCにインストールする

これは TracLightning は一部ですが環境変数を操作します。
Trac稼働中サーバに直接インストールすると動かなくなるためにこれを回避します。
インストールする先はドライブ構成が同じマシンが望ましいですが、それが出来ない場合は subst などで仮想ドライブなどを割り当てると良いでしょう。

C:\>c:\subst D: C:\TEST

また当然ですが稼働中の環境と同じパスにしてしまうと後の変更が面倒なので、必ずデフォルトの TracLight ではなく Trac303 などに稼働中のものと異なる path にインストールしましょう。

2.Apacheのポートを変更する

新たにインストールした TracLightningApache のポートを変更します。
%TRAC_LIGHT_HOME%\CollabNetSVN\httpd\confにあるhttpd.confを修正します。
53行目辺りに

Listen 80

とある部分を

Listen 8080

のように任意のポートに変更します。(この場合は8080)

Hudson用Proxyポートも変更します。
608行目辺りの

ProxyPass http://127.0.0.1:8010/hudson
ProxyPassReverse http://127.0.0.1:8010/hudson

とある部分を

ProxyPass http://127.0.0.1:8020/hudson
ProxyPassReverse http://127.0.0.1:8020/hudson

のようにして任意のポートに変更します。(このばあいは8020)

3.Hudsonのポートを変更する

%TRAC_LIGHT_HOME%\hudson にある hudson.bat でのポート指定を変更します。

"%JAVA_CMD%" -Duser.home="%TL_PROJECT_HOME%\hudson" -jar hudson.war --prefix=/hudson --ajp13Port=8009 --ajp13ListenAddress=127.0.0.1 --httpListenAddress=127.0.0.1 --httpPort=8010

の "----httpPort=8010" の部分を

"%JAVA_CMD%" -Duser.home="%TL_PROJECT_HOME%\hudson" -jar hudson.war --prefix=/hudson --ajp13Port=8009 --ajp13ListenAddress=127.0.0.1 --httpListenAddress=127.0.0.1 --httpPort=8020

のように、http.confで指定したポート(この場合は8020)に変更します。

4.setenv.batにPYTHONPATHの追加

%TRAC_LIGHT_HOME%\bin にある setenv.bat に PYTHONPATH の設定を追加します。
環境変数を設定するsetenv.batでは PYTHONHOME は指定されていますが、PYTHONPATH の設定がなく既存環境と重複してしまいますので、そのための処置になります。

setenv.bat の最終行に

SET PYTHONPATH=%TRAC_LIGHT_HOME%\python\DLLs\;%TRAC_LIGHT_HOME%\python\Lib;%TRAC_LIGHT_HOME%\python\Lib\plat-win;%TRAC_LIGHT_HOME%\python\Lib\lib-tk;%TRAC_LIGHT_HOME%\python\Lib\site-packages

をして追加して PYTHONPATH の設定を行うようにします。

また最終行に以下を追加します。2010/12/13 追記

set PATH=%PYTHONPATH%;%PATH%

これのPATH指定が無いとコマンドプロンプトでのtrac-admin等の実行に支障が出ます。

5. start.bat の変更

2010/12/13 追記あり
setenv.batと同様にPYTHONPATHの追加とPATHの設定の追加を行います。(5行目あたり)

SET PYTHONPATH=%TRAC_LIGHT_HOME%\python\DLLs\;%TRAC_LIGHT_HOME%\python\Lib;%TRAC_LIGHT_HOME%\python\Lib\plat-win;%TRAC_LIGHT_HOME%\python\Lib\lib-tk;%TRAC_LIGHT_HOME%\python\Lib\site-packages

set PATH=%PYTHONPATH%;%PATH%

またstart.bat で既に TracLightning と言うサービスが起動している場合には、停止後に再起動するようになっています。
同居前提の場合は先に動いている TracLightning を止められては敵いませんので、その部分をコメントアウトします。
9行目の

httpd.exe -n TracLightning -k stop

とある部分を

REM httpd.exe -n TracLightning -k stop

にしてコメントアウトします。


6. ショートカットの変更

同居を前提とするとスタートメニューに含まれるショートカットの名前が重複して分かりにくいので、各ショートの頭に TL3 とでも追加しておくと分かりやすくなります。
スタートメニューにある「サービスのインストール」「サービスのアンインストール」は削除しておいた方が安全だと思います。*2

7. 稼働中の環境へのコピー

インストールした TracLightning のフォルダー丸ごとと、スタートメニューのショートカットを、同居させたいTrac稼働中のサーバにコピーします。

8. 起動

コピーしたショートカットの「コマンドプロンプトから実行」で起動させます。
ブラウザで"http://127.0.0.1:8080/trac/SampleProject"として表示されれば無事完了です。

9. 終わりに

思いのほか簡単に同居出来ました。
プラグインの追加なども、個別のショートカットのコマンドプロンプトを利用することで独立させて行うことが出来るようになりますので、安心して作業することが出来ます。
気をつけるのは同居させたいマシンに直接インストールぜず、ドライブやパスを同居させたい環境に合わせた状態で別PCへインストールすることでしょうか。

TracLightning3.0の世界を是非お楽しみください。*3

質問あればコメント欄でもTwitterででも聞いてくださいな。

*1:不可能ではないはずけど面倒だからw

*2:間違って既存のサービスの書き換えてしまうことを防ぐため

*3:ちなみに2系と3系の同居だけでなく、3系同士や2系同士の同居も同じ手法で可能です。