ぱそくま ろご
linux > Subversion > svnサーバーの立て方

svnサーバーの立て方

svnサーバー立て方概要

svnサーバーを立てるには、以下の手順になります。

  1. Subversionをインストールします。
  2. svnadminでプロジェクトを作成します。
  3. プロジェクトやユーザを設定します。
  4. ネットワーク経由でアクセスするために、Subversionのポートを開放します。
  5. サービス(svnserveサーバー)を起動します。

できれば、最後に推奨されているリポジトリ構成をインポートしてください。

Subversionのインストール

yum -y install subversionでインストールします。

  • # su
  • パスワード:[rootのパスワード]
  • # yum -y install subversion
  • Loaded plugins: fastestmirror
  • .
  • .
  • Complete!


svnadminでプロジェクトを作成

svnadmin create [ルートディレクトリ/プロジェクト名] [オプション]でリポジトリを作成します。オプションは下表を参照してください。

svnadmin create オプション
--bdb-log-keep データベースログファイルの自動ログ削除機能を無効にします。(--fs-type=BDBのみ)
--bdb-txn-nosync データベーストランザクションのコミット時にfsyncをしません。(--fs-type=BDBのみ)
--config-dir DIR DIRからユーザ設定ファイルを読み込みます。
--fs-type TYPE リポジトリの保存形式を指定します。ここではFSFSが指定できます。このオプションを指定しないとBerkeley DB(BDB)です。(vesrion1.2からはfsfsがデフォルトになりました。)

プロジェクト作成例

/usr/local/lib/project/にhogeというプロジェクト名でリポジトリーを作成する例です。

# svnadmin create /usr/local/lib/project/hoge --fs-type fsfs

プロジェクトやユーザーの設定

プロジェクト作成した後は、プロジェクトの設定が必要です。設定はプロジェクトのルートディレクトリ(上記の例だと/usr/local/lib/project/hoge)にあるconf/svnserve.confファイルで行います。

プロジェクトの設定例(<project-root>/conf/svnserve.conf)

[general]
#anon-access = read     # 匿名の読みをOKする場合は、この行を有効にし、下行をコメントアウトします。
anon-access = none      # 匿名はアクセス不可
auth-access = write     # 下行で設定しているパスワードファイル「例ではpasswd」に書かれているユーザは読み書き自由
password-db = passwd    # 認証ファイル名をpasswdとする。

conf/svnserve.confのpasswd-dbで指定したファイル(例だと「passwd」)にSVNサーバーにアクセスするアカウント(ユーザーIDとパスワード)を設定します。

ユーザーのパスワード設定(<project-root>/conf/<password-file>)

[users]
username1 = password1
username2 = password2
.
.

Subversionのポートを開放

標準ではポートが空いていませんので、ポートを開放する必要があります。/etc/serviceに以下のエントリーを追加してください。

  • svn     3690/tcp   # Subversion
  • svn     3690/udp   # Subversion

ポートを追加したら、有効にするためネットワークをリスタートします。

  • # etc/rc.d/init.d/network restart
  • # service iptables restart

サービスの開始

svnserve -d -r ルートディレクトリでサービスを開始します。

サービスの開始例

サービスを開始(svnサーバーの起動)します。指定したパスがルートとなります。

# svnserve -d -r /usr/local/lib/project

以上でSubversionが使用することができます。

最初はぐわっとコピー

最初はリポジトリの中身は空なので管理したいファイルがある場合、それをリポジトリにインポートします。(インポートは実作業と異なりますのでチェックアウトはされません。) もちろん、何もない場合はインポートする必要はありません。

インポート例

project_templateディレクトリにはtrunk,branches,tagsディレクトリがあるとします。それをインポートする例です。

# svn import d:\project\project_template svn://hogehoge.com/hoge -m "初期作成。svnの推奨通り、trunk,branches,tagsを登録する。turnkにはあらかじめ、基礎となるディレクトリー構造と注意点のファイルを置く。"