すがブロ

sugamasaoのhatenablogだよ

Mac OSX で Trac 0.11b を CGI/FCGI(fastcgi) で動かす方法

まとめます

id:seiunsky:20080210:1202668387 と id:seiunsky:20080211:1202757009 をまとめつつ、 fastcgi で動かす手順をまとめた。
以下の環境を構築した時の例です。

以下のツール類は構築時には既にインストールされていました。デフォルトでインストールされていたか MacPorts でインストールしたはず。

本当は mod_python で環境を作りたかったのだけど、イマイチうまく行かなかったので妥協して CGI で構築→あ、 FastCGI でもできたよ!\(^o^)/ という話です。

Trac のインストール

MacPorts からではうまくインストールできなかったので python の easy_install で行う。

sudo easy_install Trac

これで現在の最新版 0.11b がインストールされた。trac-admin のようなコマンドは /usr/bin/ にインストールされているので、パスを追加する等の作業は不要。
また、 trac 自体の構成ファイルは以下にインストールされている模様。

/Library/Python/2.5/site-packages/Trac-0.11b1-py2.5.egg/

Trac 構成例

以下のように構成する。
また、下記の項目は適当に脳内保管してください。

  • hoge -> 作業しているユーザ名
  • project -> Trac で作成するプロジェクト名。別に project とする必要は無いので適宜分かりやすい名前へ変更してください。

以下のディレクトリ配下にファイルの作成を行っていったので、適当に自分の環境用に読み替えてください。

  1. SVNリポジトリ
    • /var/svn/project
  2. Trac プロジェクトファイル
    • /User/hoge/trac/project
  3. CGI/FCGI ファイル
  4. ベーシック認証用ファイル
  5. Tracapache 設定ファイル
    • /etc/apache2/trac_conf
  6. Apache 実行ユーザ
    • www

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 initenv

Project 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/project

sudo 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 を修正。

sudo vim /etc/apache2/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かどっちかを設定してね)

httpd-trac.conf に以下のように記述する。

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 で実行するにあたり、以下を確認する。

Macintosh% ls -l /usr/libexec/apache2/ | grep mod_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