インストール
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.log
や error.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 {プロジェクト名}