FrontPage  Index  Search  Changes  RSS  Login

(config)Ubuntu に Subversion server を構築する

はじめに

ここでは Ubuntu に subversion をインストールし, apache 上で http によりアクセスする方法を説明する.

Apache2 のインストール

$ sudo aptitude install apache2

Subversion のインストール

$ sudo aptitude install subversion subversion-tools libapache2-svn

Subversion の設定

複数リポジトリ管理用の設定

単一リポジトリではなく複数リポジトリを利用できるように設定する. Apache2 の設定ファイル /etc/apache2/mods-enabled/dav_svn.conf を編集する.

<Location /svn>
    DAV svn
    SVNParentPath /home/svn
</Location>

リポジトリを作成する

/home/svn 以下に repository という名前のリポジトリを作成してウェブブラウザ経由でアクセスできることを確認する. Ubuntu の apache は www-data という名前で動いているので repository 以下のアクセス権を apache に与える. 最後に apache を再起動する.

$ sudo mkdir /home/svn
$ cd /home/svn
$ sudo svnadmin repository
$ sudo chown -R www-data:www-data
$ sudo /etc/init.d/apache2 restart

ここまで済んだらウェブブラウザ経由でアクセスできる. http://localhost/svn/repository/ など公開しているサーバーにアクセスし

repository - Revision 0:/

などと表示されることを確認する.

Digest 認証のアクセス権を設定する

apache の設定

apache の設定ファイル /etc/apache2/mods-enabled/dav_svn.conf を編集する.

<Location /svn>
    DAV svn
    SVNParentPath /home/svn

    AuthType Digest
    AuthName "Subversion Repository"
    AuthUserFile /home/svn/.htdigest
    Require valid-user
</Location>

認証ファイルの作成

apache の設定ファイルで指定した AuthUserFile を作成する.

$ sudo htdigest -c "Subversion Repository" [user-name]
Adding password for [user-name] in realm Subversion Repository.
New password:
Re-type new password:

AuthName の "Subversion Repository" と htdigest の引数の passwordfile は一致する必要がある様子.

Digest module の有効化

既定では apache は digest module が利用できないためこのままだと Internal Server Error が返ってくる. apache の digest module を有効にする.

$ sudo ln -s /etc/apache2/mods-available/auth_digest.load /etc/apache2/mods-enabled/auth_digest.load
$ sudo /etc/init.d/apache2 restart

これでリポジトリへのアクセス時にユーザ認証を要求するようになる.

コミットのみユーザ認証を要求

不特定多数の読み取りは許可してコミット (リポジトリへの変更操作) のみ認証されたユーザに許可したい場合の設定を行う. apache の設定ファイル /etc/apache2/mods-enabled/dav_svn.conf を編集する.

    <LimitExcept GET PROPFIND OPTIONS REPORT>
        AuthType Digest
        AuthName "Subversion Repository"
        AuthUserFile /home/svn/.htdigest
        Require valid-user
    </LimitExcept>

のように <LimitExcept /> で例外の操作 (GET, PROPFIND,...) を併記する.

Last modified:2010/10/26 02:03:51
Keyword(s):[subversion]
References: