Fedora7にSubversionとTracを導入
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はプロセス起動ごとにファイルを読んでる気がするから、 もとが遅かったということかな。