LoginSignup
26
27

More than 1 year has passed since last update.

Ubuntu で Subversion

Last updated at Posted at 2014-07-07

インストール

Apache は既にインストールされているものとする。以下 apt-get する:

sudo apt-get install subversion libapache2-svn apache2-utils

Ubuntu 14.04LTS は htdigest が最初から入ってないので apache2-utils が必要。

HTTP 経由でアクセスできるようにする

vi /etc/apache2/mods-enabled/dav_svn.conf 
<Location />
     DAV svn
     SVNParentPath /var/lib/svn
     AuthType Digest
     AuthName "realm" 
     AuthUserFile /etc/apache2/.htdigest
     Require valid-user
</Location>

上記の設定例だと、 (apacheのルートのパス)/svn/(SVNリポジトリ名) でアクセスすると、 /var/lib/svn/(SVNリポジトリ名) のリポジトリにアクセスできることになる。 例えば Apache ルートが http://localhost/ だった場合、 http://localhost/svn/Test にアクセスすると、 /var/lib/svn/Test というリポジトリがあった場合に見れることになる。

実際には dav_svn.conf のコメントを外せばすぐに利用できる。 上記だと Digest 認証で通過しなければ SVN のリポジトリにアクセスできない。 で、 この後 Digest 認証で使用するパスワードのファイルを作らなければならない。 それは以下のコマンドで良い:

# Digest 認証用のパスワードを作成する
sudo htdigest -c /etc/apache2/.htdigest 'realm' (ユーザ名)

打つとパスワードを聞かれるので、 正しく設定する。 パスワードファイル名が dav_svn.conf で指定したものと一致するかどうか確認しよう。 上記 realm (認証領域: 自由な文字列で良い) も一致させないと認証が通らない。 しかもエラーも分かりにくいので注意。

ユーザを追加したい場合はその分 sudo htdigest すればよい。 -c オプションを付けると新規ファイルを作成してしまう (古いユーザが消えてしまう) ので注意する。

さて、これで Web 経由でアクセスする準備が整ったので、以下のように Digest 認証を有効にして Apache を再起動する。

sudo a2enmod auth_digest
sudo /etc/init.d/apache2 restart

動作確認

次にいよいよ SVN のリポジトリ用のフォルダを作り、リポジトリを作る。 例えば Test というプロジェクトを作りたい場合、Test というリポジトリを作ればいいので以下のようにする:

sudo mkdir /var/lib/svn
cd /var/lib/svn
sudo svnadmin create Test
sudo chown -R www-data.www-data /var/lib/svn  # www-data は Ubuntu の Apache ユーザ

ls コマンドを実行して、 Test フォルダが作成されて中にいろいろできている事を確認する。

そして最後に http://localhost/Test にアクセスして確認する。 ユーザ名とパスワードを聞かれ、 正しく答えたら「Revision:0」とバージョン番号 0 の空のリポジトリが表示されることを確認する。 うまくいかないようであれば /var/log/apache2/access.logerror.log を参照して原因を探る。

サブドメインにしたい場合

例えば http://svn.hoge.com/(リポジトリ名) でアクセスするといい、みたいな感じだ。VirtualHost にする。

sudo vi /etc/apache2/sites-available/svn.conf
<VirtualHost *:80>
    ServerName svn.hoge.com

    <!-- Apache のログを分ける -->
    CustomLog ${APACHE_LOG_DIR}/access_svn.log combined
    ErrorLog ${APACHE_LOG_DIR}/error_svn.log
    <Location />
        DAV svn 
        SVNParentPath /var/lib/svn
        AuthType Digest
        AuthName "realm"
        AuthUserFile /etc/apache2/.htdigest
        Require valid-user
    </Location>
</VirtualHost>
sudo a2ensite svn.conf  # svn.hoge.com の設定を有効にする

バックアップとリストア

以下のコマンドを定期的に cron か何かで実行しておけば安心。

# バックアップ
sudo svnadmin dump {プロジェクト名} > {ダンプファイル名}

# リストア
sudo svnadmin create {プロジェクト名}
sudo svnadmin load {プロジェクト名} < {ダンプファイル}
sudo chown -R www-data.www-data {プロジェクト名}
26
27
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
26
27