svn + trac のセットアップ

/srv/svn/ 以下に subversionリポジトリ群をおき,/srv/trac/ 以下に trac のプロジェクト群を置いて,http://www.example.com/trac/xxx/ でアクセスする場合を考える.

まず subversionリポジトリを作成する.

# mkdir /srv/svn
# cd /srv/svn
# chown www-data.www-data .
# chmod g+s .
# sudo -u www-data mkdir 2007-0111-test01
# sudo -u www-data svnadmin create 2007-0111-test01

次に trac のプロジェクトを作成する.

# sudo mkdir /srv/trac
# cd /srv/trac
# chown www-data.www-data .
# chmod g+s .
# sudo -u www-data mkdir 2007-0111-test01
# sudo -u www-data trac-admin 2007-0111-test01 initenv

apache2 + mod_python でアクセスする設定を行う.

# apt-get install libapache2-mod-python
# vi /etc/apache2/sites-enabled/000-default
    <Location "/trac">
        SetHandler mod_python
        PythonHandler trac.web.modpython_frontend
        PythonOption TracEnvParentDir /srv/trac
        PythonOption TracUriRoot /trac
    </Location>
$ sudo /etc/init.d/apache2 reload

TracEnvParentDir により,後ほど新たに trac プロジェクトを加えたときにも apache2 を再設定しなくても済むようにできる.

ユーザ認証を設定する.

# cd /srv/trac
# sudo -u www-data htpasswd -c .htpasswd yourname
# sudo -u www-data chmod 640 .htpasswd
# vi /etc/apache2/sites-enabled/000-default
    <LocationMatch "/trac/[^/]+/login">
        AuthType Basic
        AuthName "trac"
        AuthUserFile /srv/trac/.htpasswd
        Require valid-user
    </LocationMatch>
# /etc/init.d/apache2 reload

以上で http://www.example.com/trac/2007-0111-test01 によって trac プロジェクトにアクセスできる.

最後に subversionWebDAV アクセスと認証を設定する.ここでは trac と認証ファイルを共有する場合の設定を行っている.

# vi /etc/apache2/sites-enabled/000-default
    <Location "/svn">
        DAV svn
        SVNParentPath /srv/svn
        AuthType Basic
        AuthName "svn"
        AuthUserFile /srv/trac/.htpasswd
        Require valid-user
    </Location>
# /etc/init.d/apache2 reload

2007/02/14 追記: デフォルトでは誰にも変更の権限が付与されていない.以下で "root 権限" を付与できる.

# sudo -u www-data trac-admin /srv/trac/2007-0111-test01 permission add yourname TRAC_ADMIN