前に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. -#+ $ sudo /etc/init.d/apache2 restart * Restarting web server apache2 ...done. $# 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 + -#
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 $