Fedora7にSubversion+WebDAVとTracを導入するテスト。
主に「【特集】使ってる? Issue Tracking - trac 楽々ことはじめ (1) パニックプロジェクトを生まないために | エンタープライズ | マイコミジャーナル」を参考にしました。
Subversion編
# yum install subversion mod_dav_svn
# mkdir /srv/svn
# svnadmin create /srv/svn/testproject
# chown -R apache.apache /srv/svn/testproject
# vi /etc/httpd/site.d/svn.example.com
# /etc/init.d/httpd restart
Apacheの設定ファイルはこんな感じ:
<VirtualHost *>
ServerAdmin webmaster@testproject
#DocumentRoot /srv/www/svn.example.com
ServerName svn.example.com
ErrorLog /var/log/httpd/svn.example.com.error.log
CustomLog /var/log/httpd/svn.example.com.access.log combined
<Location />
Include /etc/httpd/private.acl
DAV svn
SVNParentPath /srv/svn
AuthType Digest
AuthName "Subversion"
AuthUserFile /srv/passwd/svn.example.com
Require valid-user
</Location>
</VirtualHost>
DocumentRootをコメントアウトしてるのは、 「忘れたときに備えた記録 - Apache + Subversion」 を参考にしました。 http://svn.example.com/svnとかでアクセスするようにすればよかったかな。 この設定だと中身を見るだけでもパスワードを要求されます。 認証を書き込みだけにしたいときは /etc/httpd/conf.d/subversion.conf にあるサンプルを参考に。 パスワードも作ります。
% htdigest -c /srv/passwd/svn.example.com Subversion fuktommy
これで http://svn.example.com/testproject/ のようにアクセスできるはず。
Trac編
# yum install mod_python python-sqlite2 trac trac-webadmin
# mkdir /srv/trac
# trac-admin /srv/trac/testproject initenv
# chown -R apache.apache /srv/trac/testproject/
# vi /etc/httpd/site.d/trac.example.com
# vi /srv/trac/testproject/conf/trac.ini
# /etc/init.d/httpd restart
mod_pythonを使いつつDBをSQLiteにするときはpython-sqlite2が要ります。 「#5827 (Upgrade 0.10.2 -> 0.10.4 fails in fedora 7) - The Trac Project - Trac」より。 trac-webadminはWebからマイルストーン等の設定ができるようにするものです。
Apacheの設定ファイルはこんな感じ:
<VirtualHost *>
ServerAdmin webmaster@testproject
DocumentRoot /srv/www/trac.example.com
ServerName trac.example.com
ErrorLog /var/log/httpd/trac.example.com.error.log
CustomLog /var/log/httpd/trac.example.com.access.log combined
Alias /trac "/usr/share/trac/htdocs/"
<Location "/">
AuthType Digest
AuthName "Subversion"
AuthUserFile /srv/passwd/svn.example.com
Require valid-user
Include /etc/httpd/private.acl
SetEnv LC_TIME "en_DK.utf8"
</Location>
# testproject
ScriptAlias /testproject /var/www/cgi-bin/trac.cgi
<Location "/testproject">
ScriptAlias /fuktommy.com /var/www/cgi-bin/trac.cgi
SetHandler mod_python
PythonHandler trac.web.modpython_frontend
PythonOption TracEnv "/srv/trac/testproject"
</Location>
LC_TIMEの設定は 「Colorless Sight Weblog | Thunderbird での返信ヘッダの書式」から。 mod_pythonの設定は 「TracModPython - TachTrac - Trac」から。 これまた、閲覧だけでもパスワードを要求されます。 パスワードはSubversionのと同じにしておきました。
Tracの設定ファイルも編集します。 [header_logo]とか[project]にあるアイコンですね。 あとは次のように書き足しておきます。
[components] webadmin.* = enabled
それから、ユーザに管理者権限をつけておきます。
# trac-admin /srv/trac/testproject
> permission add fuktommy TRAC_ADMIN
これで http://trac.example.com/testproject/ からいろいろできるはず。
SubversionとTracの連携
# mkdir -p /usr/local/lib/trac/scripts
# cd /usr/local/lib/trac/scripts
# ln -s /usr/share/doc/trac-0.10.4/contrib/trac-post-commit-hook
# ln -s /usr/share/doc/trac-0.10.4/contrib/trac-pre-commit-hook
# cd -
# vi post-commit
# chmod +x post-commit
post-commitをどうするかは、 trac-post-commit-hookにサンプルがあります。 pre-commitってのもあって、 こっちはチケット番号のないコミットを禁止するものですが、 そこまでする必要はないと思いました。
順番が前後してるんですけど、 最初はCGIで試していて、 途中からmod_pythonにしたらものすごく早くなりました。さすがだ。 つかSQLiteはプロセス起動ごとにファイルを読んでる気がするから、 もとが遅かったということかな。
Original Article: http://blog.fuktommy.com/1194691501