2005/08/07
Subversion-1.1.3

Subversionのインストールと設定(svnserve編)

ページ内索引
Subversionのインストール
リポジトリの作成
svnserveによる接続
アクセス権の設定(svnserve編)
svnserveの起動
認証設定
接続確認(svnserve編)
起動設定
svnserve + SSHによる接続
アクセス権の設定(SSH編)
接続確認(SSH編)

Apacheを用いたSubversionの設定は、既にApacheをインストールしていたり、 Subversionとの通信をhttpで行いたいというニーズがあれば有用ですが、 単にSubversionと言うバージョン管理システムを使いたい場合は、敷居が高く なるだけかもしれません。
本サイトでも、 Apacheを用いたSubversionの設定をご紹介していましたが、このページでは Subversionを単独で動作させる設定、SSHと共に動作させる設定をご紹介します。


Subversionのインストール

Subversionのインストールを行います。SubversionはApacheと連携させて動作させる事も可能ですが、 ここではシンプルにSubversion単体でインストールし、動作させます。
(Apacheと連携させた場合のインストールはSubversionのインストールと設定(Apache編)をご覧ください)

Subversionをインストールします。
# emerge subversion
インストールされたSubversionのバージョンは1.1.3 でした。

リポジトリの作成

Subversionがデータを管理するリポジトリと呼ばれる格納庫を作成します。
例では/var/svn/repsにリポジトリを作成しています。
# mkdir /var/svn/
# svnadmin create /var/svn/reps

svnserveによる接続

Subversion専用のサーバー svnserve を用いてSubversionとのアクセスを提供する方法です。
ポートは3690 番が使用されます。

アクセス権の設定(svnserve編)

Gentoo Linux では、svnserveは デフォルトでは apacheユーザー apacheグループとして動作するので、 リポジトリの所有権を上記ユーザー:グループ に与えます。
# chown -R apache:apache /var/svn/reps/

svnserveの起動

svnserveを起動します。
# /etc/init.d/svnserve start
また、OS起動時に自動的にsvnserveを立ち上げるために、 デフォルトランレベルに登録しておきます。
# rc-update add svnserve default

認証設定

デフォルトの設定では、読み取り専用でしか、リポジトリアクセスできません。
そこで、認証の設定を行い、認証を通過したアクセスに対しては書き込み権限を与えるように 設定します。
svnserveの認証はリポジトリ内にある conf/svnserve.conf ファイルで設定します。
[general]
#匿名アクセスに対しては読み取りのみの権限を与えます。
anon-access = read

#認証を通過したアクセスに対しては読み書きの権限を与えます。
auth-access = write

#パスワードファイルの場所を相対パスで示します。
password-db = passwd
アクセス権は以下の3つが設定できます。
  • read:読み取り可
  • write:読み書き可
  • none:接続拒否

password-dbで指定したファイル(上記例では passwd ファイル)は以下の様になります。

[users]
#[ユーザー] = [パスワード] の形式で記述します。
gside = hoge
gentoo = fuga

接続確認(svnserve編)

svnserveに接続し、ファイルをバージョン管理下に置きます。

# svn import /etc svn://192.168.1.20/reps
例ではローカルの /etc 以下のファイルをバージョン管理下に置いています。実行後、ログ入力のためにエディタが起動します。
エディタ終了後、「c」を入力しEnterを押すと、パスワードの入力を求められるので、パスワードファイルに 指定したパスワードを入力してください。インポートが開始されます。

起動設定

svnserveの起動時の設定は /etc/conf.d/svnserve に指定します。
svnserveを apacheユーザー apacheグループ以外で動作させる場合や、svnserveに起動オプションを 与えたい場合は、このファイルに指定します。

#svnserve起動時のオプションを指定します。
例ではリポジトリの場所を指定しています。
SVNSERVE_OPTS="--root=/var/svn"

#svnserve起動時のユーザーを起動します。
SVNSERVE_USER="apache"

#svnserve起動時のグループを起動します。
SVNSERVE_GROUP="apache"
svnserveを他のユーザー:グループで動作させる場合は、そのユーザー:グループにリポジトリの所有権を 与えてください。
オプション 説明
SVNSERVE_OPTS svnserve起動時のオプションを指定します。何も指定しない場合は --root=/var/svn がデフォルト値です。
SVNSERVE_USER svnserve起動時のユーザーを起動します。何も指定しない場合は apache がデフォルト値です。
SVNSERVE_GROUP svnserve起動時のグループを起動します。何も指定しない場合は apache がデフォルト値です。

svnserve + SSHによる接続

この方法は認証をSSHに受け持たす方法です。 Gentoo Linux では デフォルトでSSH が入っていますし、この接続方法が一番簡単です。

アクセス権の設定(SSH編)

SSHを用いた接続を行う場合、SSHで接続するユーザーがリポジトリへのアクセス権を持っている必要があります。
ここでは、
  • svnグループを作る。
  • svnグループにリポジトリへのアクセス権を設定する。
  • subversionを使用するユーザーを、svnグループに所属させる。
と言う方法で、複数ユーザーのリポジトリへのアクセスを設定しました。
#svnグループの追加
# groupadd svn

#svnグループにリポジトリの所有権を与える。
# chown -R :svn /var/svn/

#svnグループに読み書きの権限を与える。
# chmod -R g+wr /var/svn/

#ユーザー gside をsvnグループに所属させる。
# usermod -G svn gside

#ユーザー gentoo をsvnグループに所属させる。
# usermod -G svn gentoo

接続確認(SSH編)

svnserveに接続し、ファイルをバージョン管理下に置きます。
リポジトリの位置はフルパスで指定する点に気をつけて下さい。

# svn import /etc svn+ssh://192.168.1.20/var/svn/reps
実行後、ログ入力のためにエディタが起動します。
エディタ終了後、「c」を入力しEnterを押すと、パスワードの入力を求められるので、SSHで 接続する時と同じパスワードを入力してください。インポートが開始されます。
Index
Subversionのインストールと設定(Apache編)
Subversionのインストールと設定(svnserve編)
TortoiseSVNのインストールと設定
TortoiseSVNの使い方
Subversion Tips