Mac OSX で Trac 0.11b を CGI/FCGI(fastcgi) で動かす方法
まとめます
id:seiunsky:20080210:1202668387 と id:seiunsky:20080211:1202757009 をまとめつつ、 fastcgi で動かす手順をまとめた。
以下の環境を構築した時の例です。
以下のツール類は構築時には既にインストールされていました。デフォルトでインストールされていたか MacPorts でインストールしたはず。
- Python:2.5
- Apache:2.2.6
- Subversion:1.4.4
本当は mod_python で環境を作りたかったのだけど、イマイチうまく行かなかったので妥協して CGI で構築→あ、 FastCGI でもできたよ!\(^o^)/ という話です。
Trac のインストール
MacPorts からではうまくインストールできなかったので python の easy_install で行う。
sudo easy_install Trac
これで現在の最新版 0.11b がインストールされた。trac-admin のようなコマンドは /usr/bin/ にインストールされているので、パスを追加する等の作業は不要。
また、 trac 自体の構成ファイルは以下にインストールされている模様。
Trac 構成例
以下のように構成する。
また、下記の項目は適当に脳内保管してください。
- hoge -> 作業しているユーザ名
- project -> Trac で作成するプロジェクト名。別に project とする必要は無いので適宜分かりやすい名前へ変更してください。
以下のディレクトリ配下にファイルの作成を行っていったので、適当に自分の環境用に読み替えてください。
SVN リポジトリ作成
普通にリポジトリを作成するだけ。今後、wwwユーザがアクセスするので、wwwユーザがアクセスできるようにオーナーを変更。
sudo mkdir -p /var/svn/project
sudo svnadmin create /var/svn/project
sudo chown -R hoge:www /var/svn*
Trac プロジェクトファイル
ここも普通にプロジェクトファイルを作成するだけ。wwwユーザが扱えるようにオーナーを変更。
mkdir -p /User/hoge/trac/project
sudo trac-admin /User/hoge/trac/project initenvProject Name [My Project]> project
Database connection string [sqlite:db/trac.db]> sqlite:db
Repository type [svn]> svn
Path to repository [/path/to/repos]> /var/svn/projectsudo chown -R hoge:www /User/hoge/trac/project*
Trac 動作確認
tracd コマンドでデーモンを起動して動作確認を行う。終了するときは Ctrl+dだったか Ctrl+c。
sudo tracd --port 8080 /User/hoge/trac/project
上記コマンドでエラーが発生しないでデーモンが立ち上がったっぽければ http://localhost:8080/project にアクセスしてみる。
確認するときは、リポジトリブラウザも忘れずに。ちゃんとリポジトリのパスが合っているか確認しよう。
Apache での動作
まず空の conf ファイルを作成し、 httpd.conf から読み取るようにしておく。
mkdir /etc/apache2/trac_conf/
touch /etc/apache2/trac_conf/httpd-trac.conf
外部ファイルを読み込むように httpd.conf を修正。
最後の方に以下の行を追加。もちろん、ファイル名は直接記載しても良い。
Include /private/etc/apache2/trac_conf/*.conf
CGI/FCGI 準備
以下から trac.cgi と trac.fcgi を取ってくる。
http://trac.edgewall.org/browser/trunk/cgi-bin
cgi 格納用ディレクトリを作成して、そこにダウンロードしたファイルを格納する。
mkdir -p /www/trac/cgi-bin
sudo chown -R www:hoge /www
sudo chmod 755 www:hoge /www/trac/cgi-bin/*
ついでに、Basic認証パスワード用のディレクトリも作成しておく。
mkdir -p /www/trac/conf
sudo chown -R www:hoge /www
CGI 動作用設定(FastCGIかどっちかを設定してね)
ScriptAlias /trac "/www/trac/cgi-bin/trac.cgi" <Location "/trac"> SetEnv TRAC_ENV "/Users/sugamasao/trac/project" </Location> <Directory /www/trac/cgi-bin> Options ExecCGI Order Allow,deny Allow from all </Directory> # ログイン用パスワード設定(後述) <LocationMatch "/trac/login"> AuthType Basic AuthName "Trac" AuthUserFile /www/trac/conf/.htpasswd Require valid-user </LocationMatch>
FastCGI(FastCGI) 動作用設定(CGIかどっちかを設定してね)
FastCGI で実行するにあたり、以下を確認する。
ここで mod_fastcgi.so があることを確認したら、 httpd.conf の mod_fastcgi のコメントアウトを外す。
その後、 httpd-trac.conf を以下のように記述。
※LocationMatch の値が CGI の場合と異なるので注意。
ScriptAlias /trac "/www/trac/cgi-bin/trac.fcgi" FastCgiServer /www/trac/cgi-bin/trac.fcgi -initial-env TRAC_ENV_PARENT_DIR=/Users/sugamasao/trac <Directory /www/trac/cgi-bin> Options ExecCGI Order Allow,deny Allow from all </Directory> # ログイン用パスワード設定(後述) <LocationMatch "/trac/[^/]+/login"> AuthType Basic AuthName "Trac" AuthUserFile /www/trac/conf/.htpasswd Require valid-user </LocationMatch>
動作確認をしてみる。
apache を再起動して http://localhost/trac にアクセスして画面遷移してみよう。
tracd で起動したときのように動作すれば設定に問題はないはず。
ログインユーザ作成
これでようやく一通りの設定が終わる。長かった。。。
htpasswd コマンドを使ってユーザを作成すれば良いので、先ほど作成した以下のディレクトリ配下にパスワードファイルを作成する。
sudo htpasswd -c /www/trac/conf/.htpasswd hogehoge
新規作成の場合は -c オプションを付けて実行する。追加の場合は -c オプションは不要。
これでログインはできるようになるのだが、ここで作成したユーザは trac 上一般ユーザ扱いになるので、tracのアドミニストレータ権限を付加するために、以下の手順を行う。
まず、追加したいユーザにどんな権限があるか確認
sudo /usr/local/bin/trac-admin /Users/hoge/trac/project permission list hogehoge
最初は何も付加されていないはずなので、何も表示されない。
次に アドミニストレータ権限である、 TRAC_ADMIN 権限を追加する。
sudo /usr/local/bin/trac-admin /Users/hoge/trac/project permission add hogehoge TRAC_ADMIN
これで作成完了。
この状態でアクセスして、ログインしてみよう。
一般ユーザの場合、 admin タブ?が表示されないのだけど、 TRAC_ADMIN 権限を付加しているので、 admin タブが表示されている。
これで 0.11 から同梱された webadmin も使いたい放題である。
追記:20080220
mod_dav_svn の連携については下記参照
http://d.hatena.ne.jp/seiunsky/20080219