WebDAV/Subversion の設定

約3週間ぶりの更新ですね。どうも順調に更新ペースが落ちているような気がします。ナントカシナイト……。

今日はしばらくぶりに、ガチガチのLinuxのお話。ちょっとした事情で、家庭内LANで動かしているCentOSのサーバーにWebDAVをインストールしたのでその備忘録です。

残念ながら実際に使うまえに用済みになってしまったので、実運用はしておらず、中途半端なメモになっているのですが、そういう事情から余計に、後で忘れてしまいそうなので、丁寧めにメモしておきます

パッケージのインストール

インストールはいつものyumで一発です。

# yum install mod_dav_svn

既にapachesubversionが動いている環境なら追加でインストールされるのはこのパッケージのみで、インストールされるファイルも3つしかありません。

$ rpm -ql mod_dav_svn
/etc/httpd/conf.d/subversion.conf
/usr/lib/httpd/modules/mod_authz_svn.so
/usr/lib/httpd/modules/mod_dav_svn.so

Subversionリポジトリの作成

私の場合、既にいくつかのSubversionリポジトリを /var/svnrepos/ 以下に置いているのですが、今回、WebDAVでアクセスするためのリポジトリは /var/www/svn/ 以下に新規に作成することにしました。

というのも、このリポジトリapacheでアクセスできるパーミッションに設定する必要があり、SELinuxもきちんと有効に働かせたいので、保存ディレクトリをCentOSの推奨から外れるといろいろと面倒なことになるためです。きちんと分かっている人なら自分でなんとでもできるかと思いますが、多分、 Security Context が httpd_sys_content_t になっていないとSELinuxに蹴られることになるでしょう。

……といったことが設定ファイル(後述)中に英語でしっかり書いてありますので、嫌がらずにちゃんと読んでから作業しましょう。

# mkdir /var/www/svn
# cd /var/www/svn
# svnadmin create mydata 
# chown -R apache:apache mydata
# ls -Z
drwxr-xr-x  apache apache user_u:object_r:httpd_sys_content_t mydata

設定ファイルの修正

設定ファイルは /etc/httpd/conf.d/subversion.conf にインストールされます。 /etc/httpd/conf.d/ 配下のファイルはhttpdがかってに読み込んでくれますので、あとは、この設定ファイルを自分の環境にあうように編集すればOKです。デフォルトではモジュールは読み込まれますが、ディレクトリの設定はコメントアウトされていて、一切設定されていません。

パスの設定などは設定例のままで良いとして、アクセス制限の範囲には要注意です。今回の用途では家庭内のみでの使用だったので、ローカルIPからのアクセスのみ許すように設定しました。重要なデータであれば、SSL必須にしたり、パスワード制限をかけたりといった配慮が必要かもしれません。

LoadModule dav_svn_module     modules/mod_dav_svn.so
LoadModule authz_svn_module   modules/mod_authz_svn.so

<Location /repos>
   DAV svn
   SVNParentPath /var/www/svn

   order deny,allow
   deny from all
   allow from 192.168.0.0/24
   allow from 127.0.0.1
</Location>

(2009-11-16 追記: localhost を忘れてたので↑に書き足しました)

設定を修正したら、httpdを再起動するか、設定をreloadさせます。

# /sbin/service httpd reload
Reloading httpd:                                           [  OK  ]

簡単な動作確認

WebDAVリポジトリは中身を覗くだけならブラウザで簡単にできます。アドレスは今回の例では http://サーバー名/repos/mydata/ になります。 現在のリビジョン番号(作ったばかりなら0)とリポジトリの中身(作ったばかりなら空)が表示されたら成功です。

クライアント側の設定

本来ならここで、クライアント側の設定を行い、実際にリポジトリを使うことになるわけですが、最初に書いたとおり、実際に使う前にお役ご免になってしまったので、ここから先はなにもやってません。

というわけで、尻切れトンボですが今日はここまで。