Trac導入メモ

下の方ではRetrospectivaの導入メモを書きましたが、どうも挙動が怪しい&情報が少ないので、普段使いにはTracの方が良いかなあと思い直して、ローカルマシン上へのTracの導入を試みました。
UbuntuではTracはパッケージ化されているので、必要なのは設定作業だけです。ついでに、セキュア化を目指して、Apacheのdigest認証とTrac側でのアクセス制御の設定、およびmod_pythonも試してみました。

使用パッケージ

  • Ubuntu 7.10
  • trac 0.10.4-2
  • trac-ja-resource 0.10.4-ja-1-1
  • apache2 2.2.4-3build1
  • libapache2-mod-python 3.3.1-2

新規tracプロジェクトの作成

/usr/share/doc/trac/README.Debian, /usr/share/doc/trac-ja-resource/README.Debian.ja の手順に従っています。

# mkdir /data/trac
# trac-admin /data/trac initenv

ここで、templates directory として、/usr/share/trac-ja-resource/templates を選択する。

# chown -R www-data /data/trac
# trac-admin /data/trac wiki load /usr/share/trac-ja-resource/wiki-default
# cp /usr/share/doc/trac-ja-resource/examples/trac.cgi /usr/lib/cgi-bin/
# chmod +x /usr/lib/cgi-bin/trac.cgi

ここで、上記のtrac.cgiの中で定義されているTRAC_ENV環境変数は、後述のApache2設定ファイルの内容と重複するので、コメントアウトした。

さらに、/data/trac/conf/trac.ini 中の

default_charset = iso8859-15

を、

default_charset = utf-8

と変更する。

Apacheの設定 (基本編)

/usr/share/doc/trac/README.Debian中の内容をベースに、Apacheの設定ファイルを作成します。

/etc/apache2/sites-available/tracの内容:

Alias /trac/ "/usr/share/trac/htdocs/"
<Directory "/usr/share/trac/htdocs/">
        Options Indexes MultiViews
        AllowOverride None
        Order allow,deny
        Allow from all
</Directory>
<Location "/cgi-bin/trac.cgi">
        SetEnv TRAC_ENV "/data/trac"
</Location>

作成した設定ファイルへのリンク追加:

# cd /etc/apache2/sites-enabled/
# ln -s ../sites-available/trac 010-trac

Apache再起動&接続確認

ここまで設定した後でApacheを再起動して、Webブラウザからhttp://localhost/cgi-bin/trac.cgiに接続すると、とりあえずTracが使えるようになりました。

# /etc/init.d/apache2 restart

Apacheの設定 (digest認証編)

Tracでは、ユーザ認証をWebサーバの機能で行うのが基本のようです。ここは、セキュリティ向上を狙って、basic認証ではなくdigest認証を使ってみます。

mod_auth_digestの有効化:

# cd /etc/apache2/mods-enabled/
# ln -s ../mods-available/auth_digest.load .

/etc/apache2/sites-available/tracへの内容追加:

<Location "/cgi-bin/trac.cgi/login">
        AuthType Digest
        AuthName "trac"
        AuthDigestProvider file
        AuthUserFile /data/trac/trac.htdigest
        Require valid-user
</location>

ダイジェストファイル作成:

# htdigest -c /data/trac/trac.htdigest trac <username>

Tracのアクセス制御設定

ここでは、以下のような方針でアクセス制御を設定しました。

  • anonymousユーザの無効化
  • すべての管理権限を持つadministratorグループの作成
  • 新規ユーザ () のadministratorグループへの追加

実際の運用では、管理ユーザのほかに一般ユーザを作成して、普段は一般ユーザで作業することになると思います。

# trac-admin /data/trac permission remove anonymous "*"
# trac-admin /data/trac permission add <username> administrator
# trac-admin /data/trac permission add administrator TRAC_ADMIN

mod_python対応

Tracに付属のドキュメント「TracModPython」を参照して、mod_python経由でTracを起動するように設定してみました。
これで正しい設定なのかどうか確信は持てていませんが、とりあえず動いているようです。

/etc/apache2/sites-available/trac への追加内容:

<Location /projects/myproject>
   SetHandler mod_python
   PythonInterpreter main_interpreter
   PythonPath "['/usr/share/trac-ja-resource/python'] + sys.path"
   PythonHandler trac.web.modpython_frontend
   PythonOption TracEnv /data/trac
   PythonOption TracUriRoot /projects/myproject
</Location>

<Location /projects/myprojects/login>
   AuthType Digest
   AuthName "trac"
   AuthDigestProvider file
   AuthUserFile /data/trac/trac.htdigest
   Require valid-user
</Location>