先にGenshiは入れておく
Genshiのダウンロードページをみてみると、現状Leopard版はi386しかありません。
i386版で動かしても特に問題は無いようなのですが、Core2Duoなマシンの場合x86_64版を探しに行くのかTracのsetup.pyで途中でeggファイルが無いと言われてこけてしまいます。
で、Genshiは先に入れておくとそいつを使うので、Tracのsetup.pyを走らせる前に別途入れておきます。
GenshiのダウンロードページのSource Tarballsの所から適当な形式のファイルを取ってきます。
今回、私はzipを取りましたが、たぶんtar.bz2の方が小さかったかも…
で、こいつを解凍してできたフォルダの中に入り、
python setup.py install
とすればOKです。
Tracのインストール
Tracの日本語版はインタアクト株式会社さんの公開資料(Trac)の一番下のダウンロードの所から落としてきました。
こいつを解凍して中に入り、
./setup.py install
とすれば入ります。Tracを入れた後にGenshiを探し出して落ちるのですが、とりあえずTracが入れ終わっていればOKぽいです。
trac環境の作成
apacheのfast_cgiやmod_pythonで動かす場合、tracの環境ディレクトリはwwwユーザが扱えないといけません。
なので、trac環境ディレクトリのオーナーはwwwユーザにします。
まずは、tracの環境フォルダの作成。ここでは/var/tracroot以下に作成する事とします。以下適宜読み替えてください。
これもLeopardからは/homeが使えないので要注意です。
sudo mkdir /var/tracroot cd /var/tracroot sudo chown www:www .
後は、プロジェクトごとにwwwユーザでtracroot内にtrac環境を作ればOKです。
「<プロジェクト用ディレクトリ>」となっているところは適宜読み替えてください。
今回毎回sudoでwwwになってますが、suでwwwになって作業をして行った方が楽かもしれません。
sudo -u www mkdir <プロジェクト用ディレクトリ> sudo -u www trac-admin <プロジェクト用ディレクトリ> initenv
trac環境作成用の対話UIが起動します。
質問に答えて行くだけで、デフォルトままで良いところは何も入れずにreturnでかまいません。
以下> までが質問、その後ろに入力内容を記述して行きます。
Project Name [My Project]> <プロジェクト名>
「<プロジェクト名>」は適宜指定してください。
Database connection string [sqlite:db/trac.db]> Repository type [svn]>
この2つは基本的にデフォルトままでかまいません。
svn以外に対応するのはいつになるんでしょうねー…
Path to repository [/path/to/repos]> <svnリポジトリのパス>
これはsvnリポジトリへのパスを指定します。適宜読み替えてください。
以上で設定が終わり、いろいろと読み込みやら何やらが走って環境が作成されます。
ここで一度
sudo -u www tracd -p 8080 -e /var/tracroot
として動作を確認した方が良いでしょう。
apacheの設定
tracdで動かしても良いのですが、せっかくなのでapacheをかます事にしました。
細かいアクセス制御やsslなどはapacheをかませた方がやりやすいです。が、tracdで動かすのが一番高速らしいので、LAN内のみで使う分にはtracdで良いかもしれません。
apacheと連携させる動かし方としては、早い方からmod_python, fast_cgi, cgiとなるようです。
それぞれtrac環境以下のwiki/TracModPython、wiki/TracFastCgi、wiki/TracCgiに説明があるので、tracdで起動してマニュアルを読みつつ進めると良いかもしれません。
fast_cgiで動かす場合
可能ならmod_pythonで行きたいのですが、mod_pythonがデフォルトではi386でビルドされてしまうため、ちょっとハマるようです。
ですので、まずはfast_cgiで動かします。
apacheにはmod_fcgiとmod_fastcgiの2種類があるそうなのですが、mod_fastcgiはLoepardにもとから入ってるのでこれを使います。
trac.confの記述
Mac os Xデフォルトのapacheの設定では/etc/apache2/other/配下の*.confが自動で取り込まれるので、ここにtrac.confを作成します。
sudo vi /etc/apache2/other/trac.conf
内容は以下の通り
<IfModule mod_fastcgi.c> AddHandler fastcgi-script .fcgi </IfModule> LoadModule fastcgi_module libexec/apache2/mod_fastcgi.so <Directory "/usr/local/Trac-0.11.4.ja1/cgi-bin"> AllowOverride None Options None Order allow,deny Allow from all </Directory> ScriptAlias /trac /usr/local/Trac-0.11.4.ja1/cgi-bin/trac.fcgi <Location "/trac"> SetEnv TRAC_ENV_PARENT_DIR "/var/tracroot" </Location> <LocationMatch "/trac/[^/]+/login"> AuthType Digest AuthName "develop" AuthDigestDomain /trac AuthUserFile /var/svnroot/passwd Require valid-user </LocationMatch>
DirectoryディレクティブやScriptAliasのパスは適宜入れたTracのパスに、
Locationディレクティブの中のTRAC_ENV_PARENT_DIRはtrac環境をたてたディレクトリに、
LocationMatchディレクティブの中のAuthUserFileは認証用のpasswdファイルのパスに、それぞれ読み替えてください。
eggキャッシュディレクトリの作成
これでapacheの設定ができました。ここで起動してみます。
apacheの起動はシステム環境設定の「共有」でweb共有のチェックを入れる(入れ直す)のが楽です。
apacheは起動するのですが、http://localhost/tracにアクセスするとエラーが発生します。
ただ、pythonのエラーが出るようになるので、ここから先はエラーの内容を見ながら直して行くのが楽です。
ここから先は、基本的に問題に対応した後apacheを再起動しなくてもリロードすれば解消します。
さて、エラーの内容を見てみると、/Library/WebServer/.python-eggsにeggファイルを展開したいのに書き込めないようです。
なので、この.python-eggsを作ります。
sudo mkdir /Library/WebServer/.python-eggs sudo chown www:www /Library/WebServer/.python-eggs
これで動くようになりました。