blog.fuktommy.com

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

Copyright© 1998-2014 Fuktommy. All Rights Reserved.
webmaster@fuktommy.com (Legal Notices)