Subversionをネットサーバとして使うための設定方法

Vine Evo / Subversion hacks

Subversionサーバの作成(svnserve)

AGL's Gamers Labo / ProEvo / Vine Evo / Subversion hacks / Subversionサーバの作成(svnserve)

Vine Linux上のSubversionをsvnサーバとして使用するためのサーバとして設定する方法およびユーザー接続としてsvnserve.confを設定する方法


1. Subversionサーバについて

1.1 Subversionサーバとはなにか?

Subversionは自身をサーバとしてネットに公開する機能があります。接続方法にはSubversion独自のプロトコルを使うsvn形式とsshを使って接続するsvn+ssh形式があります。

ここでは接続が簡単にできるsvn形式でSubversionサーバを作成する方法を説明します。

2. Subversionサーバの設定

2.1 サーバ設定の概要

Subversionサーバを使用するためには次のような設定をする必要があります。

  1. サーバ用ユーザの作成
  2. /etc/servicesにsvnプロトコルを設定
  3. svnプロトコル用にinetdを設定
  4. svnserveにログインするようにsvnserveを設定
  5. svnプロトコルが通るよう、ファイヤウォールを設定

以上の設定をすることで、Subversionサーバを使うことができるようになります。

2.2 サーバ用ユーザの作成

次の手順で、Subversionサーバ用ユーザsvnを作成します。

  1. rootでログインします。
    
    [atsushifx@agartha atsushifx]$ su
    パスワード(P):******
    [root@agartha atsushifx]# 
  2. グループ svnを作成します。
    [root@agartha atsushifx]# /usr/sbin/groupadd -g 302 svn
    [root@agartha atsushifx]#
  3. ユーザー svnを作成します。
    
    [root@agartha atsushifx]# /usr/sbin/useradd -g svn -u 302 svn
    [root@agartha atsushifx]# 
  4. ユーザー svnのパスワードを設定します。
    
    [root@agartha atsushifx]# passwd svn
    Changing password for user svn.
    New password: *****
    Retype new password: *****
    passwd: all authentication tokens updated successfully.
    [root@agartha atsushifx]# 
  5. vipwを使いsvnのhomeをsubversionのリポジトリに変更します。
    /etc/passwd
      .
      .
     27:svn:x:302:302::/var/svn:/bin/false
      .
      .
  6. 前のホームディレクトリ/home/svnを削除します。
    
    [root@agartha atsushifx]# rm -fr /home/svn
    [root@agartha atsushifx]# 

以上で、Subversion用ユーザーsvnの作成は終了です。

2.3 プロトコルの設定

Vine Linux 4ではすでに/etc/servicesにsvnプロトコルの設定がしてあります。
/etc/servicesが次のようになっていたら設定は終了です。

/etc/services
  .
  .
 533:svn   3690/tcp      # Subversion
 534:svn   3690/udp      # Subversion
  .
  .

以上で、プロトコルの設定は終了です。

2.4 inetdの設定

次の手順で、inetdでsvnserveを使う設定をします。

  1. rootでログインします。
    
    [atsushifx@agartha atsushifx]$ su
    パスワード(P):******
    [root@agartha atsushifx]# 
  2. /etc/inetd.confに次の行を追加します。
    /etc/inetd.conf
      .
      .
      84:# Subverion svnserver
      85:#
      86:svn stream  tcp nowait  svn /usr/bin/svnserve svnserve -i -r /var/svn
      .
      .
  3. inetdを再起動します。
    
    [root@agartha etc]# /etc/init.d/inet restart
    Stopping INET services:                                    [  OK  ]
    Starting INET services:                                    [  OK  ]
    [root@agartha etc]# 

以上で、inetdの設定は終了です。

2.5 svnserveの設定

次の手順で、Subversionサーバー用にログインユーザーの設定を追加します。

  1. /var/svn/conf/下のsvnserve.confを変更します。
    /var/svn/conf/svnserve.conf
        8:[general]
        9:realm = atsushifx's Repository
       10:anon-access = read
       11:auth-access = write
       12:password-db = svnusers
    
    以上の設定で、指定したユーザのみアクセスできるようになります。
  2. /var/svn/conf/下にsvnusersを作成します。
    /var/svn/conf/svnusers
    
        1:[users]
        2:atsushifx = hogehoge

以上で、svnserveの設定は終了です。

2.6 ファイヤウォールの設定

Vine Linux 4の初期設定では、svnプロトコルがファイヤウォールにより使えません。
次の手順で、ファイヤウォールに穴をあけます。

  1. rootでログインします。
    
    [atsushifx@agartha atsushifx]$ su
    パスワード(P):******
    [root@agartha atsushifx]# 
  2. /etc/sysconfig/iptablesに次の行を追加します。
    /var/svn/conf/svnserve.conf
    
       29:[0:0] -A INPUT -p tcp -m tcp --dport 3690 -j ACCEPT
       30:[0:0] -A INPUT -p udp -m udp --dport 3690 -j ACCEPT
    
  3. iptablesを再起動します。
    
    [root@agartha atsushifx]# /etc/init.d/iptables restart
    [root@agartha atsushifx]# 

以上で、ファイヤウォールの設定は終了です。

3. Subversionサーバを使う

3.1 Subversionをネットワーク経由で使う

2.のように設定すると、ネットワーク上のクライアントからSubversionにファイルを登録できるようになります。
Subversionでファイルをネットワーク経由で登録するときはURLをsvnで指定します。

たとえば、プロジェクトをチェックアウトするときは、


Z:\> svn co svn://atsushifx@agartha/agl agl

などとすることで、ネットワーク経由でファイルをとってくることができます。
サンプルとして、SubversionによるWebサイトの管理があるので参考にしてください。

4. 参考資料

4.1 Webサイト

Subversionサーバ(svnserve)を立ち上げるには以下のサイトを参考にしました。

Subversionによるバージョン管理
公式ドキュメント。まずはここを理解することから。

AMAZON



$Revision: 1 $
$Date: 2009-03-19 20:17:04 +0900 (木, 19 3月 2009) $