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