Subversionubuntu

SubversionをApache2に組み込む

前にSubversionの自動起動を設定する方法を書きました。
Debianパッケージには、SubversionをApache2に組み込む便利な方法がありました。
libapache2-svnパッケージを使うとApache2のモジュールとしてSubversionのリポジトリを組み込むことができます。

パッケージをインストールする

libapache2-svnでは、/var/lib/svnがSubversionのリポジトリを格納するディレクトリになります。

$ sudo aptitude install libapache2-svn
[sudo] password for ksaito:
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
拡張状態情報を読み込んでいます
パッケージの状態を初期化しています... 完了
以下の新規パッケージがインストールされます:
libapache2-svn
0 個のパッケージを更新、 1 個を新たにインストール、 0 個を削除予定、38 個が更新されていない。
148kB のアーカイブを取得する必要があります。 展開後に 356kB のディスク領域が新たに消費されます。
拡張状態情報を書き込んでいます... 完了
取得:1 http://jp.archive.ubuntu.com jaunty/universe libapache2-svn 1.5.4dfsg1-1ubuntu2 [148kB]
148kB を 2s 秒でダウンロードしました (59.1kB/s)
未選択パッケージ libapache2-svn を選択しています。
(データベースを読み込んでいます ... 現在 109550 個のファイルとディレクトリがインストールされています。)
(.../libapache2-svn_1.5.4dfsg1-1ubuntu2_i386.deb から) libapache2-svn を展開しています...
libapache2-svn (1.5.4dfsg1-1ubuntu2) を設定しています ...
Considering dependency dav for dav_svn:
Enabling module dav.
Enabling module dav_svn.
Run '/etc/init.d/apache2 restart' to activate new configuration!
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
拡張状態情報を読み込んでいます
パッケージの状態を初期化しています... 完了
拡張状態情報を書き込んでいます... 完了
$

Apache2の設定

設定は、mods-available/dav_svn.confですが、デフォルトでは、すべてコメントアウトされています。
ユーザ認証が必要で、複数のSubversionリポジトリをホスティングする場合には、次のような修正をします。
Apache2の再起動も忘れずに。

$ cd /etc/apache2/
$ hg diff
diff -r 0964bb1cc9d5 mods-available/dav_svn.conf
--- a/mods-available/dav_svn.conf	Mon Jun 08 23:01:32 2009 +0900
+++ b/mods-available/dav_svn.conf	Mon Jun 08 23:03:55 2009 +0900
@@ -10,17 +10,17 @@
# URL controls how the repository appears to the outside world.
# In this example clients access the repository as http://hostname/svn/
# Note, a literal /svn should NOT exist in your document root.
-#
+
# Uncomment this to enable the repository
-  #DAV svn
+  DAV svn
# Set this to the path to your repository
#SVNPath /var/lib/svn
# Alternatively, use SVNParentPath if you have multiple repositories under
# under a single directory (/var/lib/svn/repo1, /var/lib/svn/repo2, ...).
# You need either SVNPath and SVNParentPath, but not both.
-  #SVNParentPath /var/lib/svn
+  SVNParentPath /var/lib/svn
# Access control is done at 3 levels: (1) Apache authentication, via
# any of several methods.  A "Basic Auth" section is commented out
@@ -37,9 +37,9 @@
# manage the password file - and the documentation for the
# 'auth_basic' and 'authn_file' modules, which you will need for this
# (enable them with 'a2enmod').
-  #AuthType Basic
-  #AuthName "Subversion Repository"
-  #AuthUserFile /etc/apache2/dav_svn.passwd
+  AuthType Basic
+  AuthName "Subversion Repository"
+  AuthUserFile /etc/apache2/dav_svn.passwd
# To enable authorization via mod_authz_svn
#AuthzSVNAccessFile /etc/apache2/dav_svn.authz
@@ -47,8 +47,8 @@
# The following three lines allow anonymous read, but make
# committers authenticate themselves.  It requires the 'authz_user'
# module (enable it with 'a2enmod').
-  #
-    #Require valid-user
-  #
+  
+    Require valid-user
+  
-#
+
$ sudo /etc/init.d/apache2 restart
* Restarting web server apache2
...done.
$

Subversionリポジトリの作成

Subversionのリポジトリを作成します。
proj1というリポジトリを作るとします。

$ cd /var/lib
$ sudo mkdir svn
$ cd svn
$ sudo mkdir proj1
$ cd proj1
$ sudo svnadmin create .
$ cd /var/lib/svn
$ sudo chown -R www-data:www-data proj1/
$

ユーザを登録する

ここまでの設定で、http://サーバ/svn/proj1/でリポジトリにアクセスすることができます。
更新するには、htpasswdでユーザを登録する必要があります。
これで、書き込み操作もできるようになります。

$ cd /etc/apache2/
$ grep passwd mods-available/dav_svn.conf
# you are using https.  See the 'htpasswd' command to create and
AuthUserFile /etc/apache2/dav_svn.passwd
$ sudo sh -c "htpasswd -n user1 >> dav_svn.passwd"
New password:
Re-type new password:
$ cat dav_svn.passwd
user1:gxezvVgOs2Ebwoc
$
タイトルとURLをコピーしました