Help us understand the problem. What is going on with this article?

Ubuntu で Subversion

More than 1 year has passed since last update.

インストール

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/svn/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 {プロジェクト名}
kojionilk
Android, Java, PHP あたりのプログラマ。Python の思想が好み。開発環境として OS X や Ubuntu を使う。
http://www.kojion.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away