Subversion+svkでらくらく分散リポジトリ

第2回  SubversionとBTSの連携

この記事を読むのに必要な時間:およそ 6 分

これで,最低限必要なパッケージのインストールが完了です。次にSubversion用のリポジトリを準備します。前回は/tmp/myrepositoryにリポジトリを作成しました。今回は,/var/lib/svnにMyProjectと言うリポジトリを作成し直します。実行例でchownでオーナーをwww-dataに変更しているのは,このリポジトリをApacheのフロントエンドで運用するため,Apacheの実行ユーザでディレクトリに読み書きできる必要があるためです。

$ sudo mkdir /var/lib/svn
$ sudo svnadmin create /var/lib/svn/MyProject
$ sudo chown -R www-data /var/lib/svn/

Subversionのリポジトリを作成後,Trac用にディレクトリを準備して,Tracの環境を構築します。ここでは,/var/lib/tracディレクトリにMyProjectというプロジェクトを開始するように指定します。tracadminコマンド実行中に,Tracの環境へのパス,Tracのプロジェクト名,Subversionのリポジトリへのパスを指定しています。それ以外の項目はデフォルトのまま(リターンキーを押す)です。これらの項目は,初期設定後にも変更できます。

ここでも,最後にApacheの実行ユーザでディレクトリへの読み書きができるようにオーナーをwww-dataに変更しています。

$ sudo mkdir /var/lib/trac
$ sudo trac-admin /var/lib/trac/MyProject initenv
 [中略]
Project Name [My Project]> My Project
 [中略]
Database connection string [sqlite:db/trac.db]> 
 [中略]
Repository type [svn]> 
 [中略]
Path to repository [/path/to/repos]> /var/lib/svn/MyProject
 [中略]
Templates directory [/usr/share/trac/templates]> 
 [中略]

Congratulations!

$ sudo chown -R www-data:www-data /var/lib/trac

Trac単体でもWebサーバの機能を持っているため,以上の操作でTracの起動はできます。今回は,ApacheをWebサーバとして動作する設定を行ないます。あわせて,SubversionのフロントエンドにApacheを設定します。

まず,ApacheのTracに対する設定を行います。/etc/apache2/sites-available/defaultの<VirtualHost *>の行と</VirtualHost>の行の間に次の設定を記述します。この設定では,http://ホスト名/tracで/var/lib/trac/MyProjectにアクセスできるようになります。/trac/loginでは/etc/apache2/svn.passwdファイルを使用して基本認証でログインできるようにしています。

<Location /trac>
    SetHandler mod_python
    PythonHandler trac.web.modpython_frontend 
    PythonOption TracEnv /var/lib/trac/MyProject
    PythonOption TracUriRoot "/trac"
</Location>
<Location "/trac/login">
    AuthType Basic
    AuthName "My Project"
    AuthUserFile /etc/apache2/svn.passwd
    Require valid-user
</Location>

/trac以下すべてを基本認証で保護したい場合は,次のように設定してください。

<Location /trac>
    SetHandler mod_python
    PythonHandler trac.web.modpython_frontend 
    PythonOption TracEnv /var/lib/trac/MyProject
    PythonOption TracUriRoot "/trac"
    AuthType Basic
    AuthName "My Project"
    AuthUserFile /etc/apache2/svn.passwd
    Require valid-user
</Location>

以上の設定を行って次のコマンドでApacheを再起動します。

$ sudo /etc/init.d/apache2 restart

ブラウザからhttp://ホスト名/tracにアクセスしてみてください。図1のような画面が表示されれば成功です。

図1 Tracのインストール直後の画面

図1:Tracのインストール直後の画面

次にApacheとSubversionを連携します。/etc/apache2/mods-available/dav_svn.confを次のように記述します。この設定では,/var/lib/svnにあるリポジトリにhttp://ホスト名/svn/MyProjectでアクセスできるようになります。また,前回の記事ではコンソールからsvnコマンドを使ってリポジトリにアクセスする場合,⁠svn checkout svn://localhost/」とアクセスしていました。Apacheをフロントエンドに配置することで,⁠svn checkout http://localhost/svn/MyProject」のようにhttpでアクセスできるようになります。

<Location /svn>
    DAV svn
    SVNParentPath /var/lib/svn
    AuthType Basic
    AuthName "MyProject subversion repository"
    AuthUserFile /etc/apache2/svn.passwd
</Location>

設定が終わったらApacheを再起動してください。

Apacheをフロントエンドに配置した場合のTracとSubversionの設定で,今回は基本認証のパスワードファイルに/etc/apache2/svn.passwdを指定しています。TracとSubversionで同じパスワードファイルを参照することで,ユーザ管理を統一することができます。また,Apacheをフロントエンドに配置することで,パスワードファルではなくLDAPによる認証などApacheの柔軟な設定,豊富な機能を活用できます。

次のコマンドでTrac,Subversionで使用するユーザとパスワードを設定します。ここでは,⁠user1」というユーザを作成しています。

$ sudo htpasswd -cm /etc/apache2/svn.passwd user1

コマンドを実行するとパスワードの入力を求められますので,パスワードを指定してください。

最後に,次のコマンドを実行して,⁠user1」をTracの管理者に設定します。

$ sudo trac-admin /var/lib/trac/MyProject permission user1 TRAC_ADMIN

著者プロフィール

大谷弘喜(おおたにひろき)

アリエルネットワーク株式会社所属。P2PアプリケーションやWebアプリケーションの設計,開発。Python大好き。

コメント

コメントの記入