2007年11月13日火曜日

Trac 0.11 on Windows 構築メモ

作業前の環境

  • Apache 2.2
    • メインのWebサーバ
    • これではSubversion 1.40へのアクセスはできない
  • Apache 2.0
    • Subversionへのアクセス専用
    • Apache 2.2からリバースプロキシでアクセスする
  • Trac 0.10
  • Python 2.4
  • Subversion 1.40 for Apache 2.0
    • Tracが足枷となりバージョンアップできないでいた



作りたい環境 (全て現時点の最新版にする)
  • Apache 2.2 (変更無し)
  • Trac 0.11dev
    • Trac 0.10のデータや設定を引き継ぐ
    • Subverion 1.45のリポジトリを見られるようにする
  • Python 2.5
  • Subversion 1.45 for Apache 2.2
    • Subversion 1.40のデータを引き継ぐ
    • Apache 2.2経由でアクセス可能にする


Apache 2.5 & Subversion 1.45 にするには、Tracを0.11にしなくてはいけないらしい。(ClearSilverが足枷?) Trac 0.11はまだdev版しかない。
また、今回はTracのインストールにSetuptools(easy_install?)を使う。


Trac 0.11 on Windows 構築の足跡
※インストールの手順としては「11.問題発生」は読む必要は無いが、参考資料として残しておく。
※「Unsupported version control system "svn"」の解決方法を知りたいだけなら「12.libapr-1.dllのバージョン差異を解消」を読んでね。

  1. 古いバージョンをそれぞれアンインストール
  2. Subversion 1.45をインストール
    ・Apache 2.2用をsubversion: ドキュメント & ファイル: Windows Apache 2.2.xからダウンロード
    ・インストーラが付いてない
    ・コマンドプロンプトの文字化けは、コマンドプロンプト上で下記コマンドを入力することにより解消 (参考:UTF-8とコマンドプロンプトとMySQLモニタ | Sarabande
    chcp 65001
    ・サービスとしての実行方法はsvnserve ベースのサーバ参照。以前登録したサービスが残っていてPathが同じならそのサービスを起動するだけでOK。
  3. httpd.confにSubversion用設定追加
    ・たぶんこれだけ (リポジトリの方もバックスラッシュじゃなくていいかも)
    LoadModule dav_module modules/mod_dav.so
    LoadModule dav_fs_module modules/mod_dav_fs.so
    LoadModule dav_svn_module "C:/<Subversionのディレクトリ>/bin/mod_dav_svn.so"
    LoadModule authz_svn_module "C:/<Subversionのディレクトリ>/bin/mod_authz_svn.so"
    <Location /svn>
    DAV svn
    SVNParentPath c:<Subversionリポジトリのディレクトリ>
    </Location>
    ・必要に応じて Digest認証 or Basic認証も設定
  4. Python 2.5をインストール
    Download Python Softwareからダウンロード
    ・インストール後にサーバ再起動が必要
  5. Setuptools(easy_install?)をインストール
    ・Python版のPEARやGemsやCPANシェルみたいなものらしい
    Python Package Index : setuptools 0.6c7からダウンロード
    ・インストールすると、PythonのScriptsディレクトリに、easy_install.exeなどが作られる
  6. Tracをインストール
    ・現時点ではTrac 0.11をインストールするにはTracのSubversionリポジトリから取得する必要がある
    ・PythonのScriptsディレクトリでコマンドプロンプトを開き、下記を実行 (参考:0.11/TracInstall - The Trac Project - Trac
    easy_install http://svn.edgewall.com/repos/trac/trunk/
    ・Genshiも一緒にインストールしてくれる
    ・SubversionのbinディレクトリにWindowsのPathを通してないとエラーになると思う。(svnを使うため。)
  7. TracプロジェクトをUpgrade
    ・Trac 0.11用にプロジェクトとWikiをそれぞれUpgradeする
    ・参考:0.11/TracUpgrade - The Trac Project - Trac
    ・TracプロジェクトのDowngradeはできないとどこかに書いてあった気がするので気を付ける
  8. Mod_Pythonをインストール
    ・ApacheからTracへの橋渡しをするためのモジュール
    Index of /dist/httpd/modpython/winからダウンロードしてインストールする
  9. httpd.confのTrac用設定
    ・以前とほぼ同じ
    TracModPython - The Trac Project - Tracで勧められているPythonInterpreterを追加した。(なくても動きそう。)
    LoadModule python_module modules/mod_python.so
    <Location "/trac">
    SetHandler mod_python
    PythonInterpreter main_interpreter
    PythonHandler trac.web.modpython_frontend
    PythonOption TracEnvParentDir <Tracのデータのディレクトリ>
    PythonOption TracUriRoot /<TracのURL(ドメインの下の部分)>
    </Location>
  10. svn-pythonをインストール
    ・TracからSubversionへの橋渡しをするためのモジュール
    subversion: ドキュメント & ファイル: Windows Apache 2.2.xからダウンロード
    ・TracでSubversionリポジトリを表示しないなら不要。その場合はtrac.iniの"repository_dir"は空欄にしておく (コメントアウトでもいいかも)
    ・下記のようにURLを指定すればeasy_installからのインストールもできる (参考:Fusioncube » Blog Archive » Installing Trac 0.11
    easy_install -Z http://subversion.tigris.org/downloads/1.4.5-win32/apache-2.2/svn-python-1.4.5.win32-py2.5.exe
  11. 問題発生!Apache経由のTracからSubversionに連携できない
    ・Tracの全ページに下記エラーメッセージが表示される
    Warning: Can't synchronize with the repository (Unsupported version control system "svn". Check that the Python support libraries for "svn" are correctly installed.)
    ・Browse Sourceしようとすると下記エラーメッセージも表示される
    Unsupported version control system "svn". Check that the Python support libraries for "svn" are correctly installed.
    ・下記を処方したけど解決しなかった
     ・trac-adminでSubversionリポジトリをresync
     ・easy_installでpysqliteをインストール (Python2.5からpysqliteは標準で組み込まれているので、別途インストールしなくていいはずだけど試しに)
     ・Windows環境変数のPYTHONPATHにsite-packagesを設定 (参考:「Subversion」の検索結果 - 夏 DOKI Lisp スティック
     ・httpd.confでPythonPathをセット (参考:TracModPython - The Trac Project - TracSubversion/ViewVC - てんぷらメモ
     ・subversion: ドキュメント & ファイル: Windows Apache 2.2.xからsvn-win32-1.4.5_py25.zipをダウンロードして上書き
     ・libsvnにWindows環境変数のPATHを通す
     ・SWIGをインストール?
      ・SourceForge.net: Filesからswigwinをダウンロード
      ・インストールの仕方が分からなかった
    ・TracdでならSubversionと連携できた
     ・TracdでTracプロジェクトを全て起動しておき、Apacheからリバースプロキシする
     ・応急対応としては使える
     ・問題点:リバースプロキシ&Tracdだと、TracのWikiを更新した時にResponseが帰ってこない。(更新はされる)
    ・TracとSubversionの連携をやめる(trac.iniの"repository_dir"を空欄にする)ならこの問題は回避できる
    ・trac.iniでログ出力を有効(log_type = file)にしてログを確認してみる (参考:TracIni - akiyan.com - TracTracLogging - Snippets - Trac
     ・"libsvncore.py"のline 5 (import _core)で、「ImportError: DLL load failed: 指定されたプロシージャが見つかりません。」というエラーが出ている
     ・上記のエラーによりSubversion bindingsのloadが完了せず、その結果"svn"が見つからないエラーになるらしい
    ・同じ症状を訴えるメーリングリストを発見!
     ・[Trac] Re: Can't use svn on 0.11 trunk
    mod_python's python can't seem to find init_core() in _core.pyd (it CAN find the module though, it just can't find the procedure, so path issues here are probably out of the question).
    I rolled back to the 1.4.3 bindings and they work well to even in mod_python.

    ・この回答から下記の解決方法が分かった
  12. libapr-1.dllのバージョン差異を解消
    ・Subversionのbinにあるlibapr-1.dllをApacheのbin内に上書きコピーする
    ・そのままだとApacheの方のlibapr-1.dllの方がバージョンが新しいために動かないらしい
     参考:[Trac] Re: Can't use svn on 0.11 trunk
    3. This one was the real pain... The version of libapr-1.dll in the Apache install was newer than the version in the subversion install. I replaced the copy in the Apache install with the copy from subversion (1.2.8.0) and everything works perfectly.
    ・libapr-1.dllを変えてしまってApacheが正常に動くかは不明なので、しばらく様子を見る



所感等
  • Trac 0.11はTracWebAdminが標準になって使いやすい。
  • ClearSilverとpysqliteのインストールが不要になって少しすっきりした。
  • trac-adminがexeになって少し使いやすくなった。
  • easy_installを使うとsite-packagesの中が少しごちゃごちゃになるのが気になる。

関連記事:
 TracのWikiをWYSIWYGにするプラグイン
 TracのWikiで外部サイトへのリンクを別Windowで開くGreasemonkey
 SubversionでExcel等のファイルを比較

1 件のコメント:

d*vus さんのコメント...

I've managed such problem by starting Apache service using my domain user account, not default Local System.

ブログ アーカイブ

tags