福冨諭の福冨論

RSSリーダーではこちらをどうぞ→https://feeds.feedburner.com/fuktommy

Fedora7にSubversionとTracを導入

Fedora7にSubversion+WebDAVTracを導入するテスト。

主に「【特集】使ってる? 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/ からいろいろできるはず。

SubversionTracの連携


 # 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