注文の多いXOOPS屋 TOP現在のブログ旧スタッフblog アーカイブ
このページは 2007〜2008 年に公開していた「株式会社RYUS スタッフblog」のアーカイブです。内容は当時のものです。

WebDAV+SVNの設定で苦戦

2008/01/23 18:47   gusagi   カテゴリ: development, Subversion

gusagiです。
今日は、WebDAV+SVNの設定に苦戦した一日だったので、はまった部分と設定方法について書きたいと思います。

RYUSでは、スタッフが増えてきたこともあり、作業の効率化のために色々と取り組んでいたりします。
ソースの管理についても、LAN内部でSVNを使うか、インターネット経由でもSVNを利用可能にするか検討中なのですが、実際に使ってみようということで、svn+sshでのアクセスや、WebDAV+SVNでのアクセスなど試してみました。
元々、svn+sshでの設定方法は判っていたのであっさりと実験出来たのですが、この場合サーバアカウントが必要になるなど、SVN利用者が増えるに従って管理が複雑になってきます。
逆に、WebDAV+SVNの場合は、アカウント管理はかなり単純になります。
ただし、暗号化やアクセス制御などは必要なので、こちらの設定が多少複雑化も知れません。

例として、http://example.com/repos でSVNにアクセス出来るようにしようと思います。
ドキュメントルートは /var/www/html、リポジトリは /home/project/svn とします。
WebDAV+SVNを利用する場合、mod_dav_svnやmod_authz_svnが必要なので、これらのモジュールを事前にインストールしておきます。
次に、apacheの設定ファイルで

<Location "/repos">
DAV svn
SVNPath /home/project/svn
AuthzSVNAccessFile /var/www/html/svn/.authz
AuthType Basic
AuthName "Authentication"
AuthUserFile /var/www/html/svn/.htpasswd
Require valid-user
</Location>

と記述します。
上記の設定をした場合、/var/www/html/svn/.htpasswdに記述されたユーザのみ、/var/www/html/svn/.authzに記述された権限に従って、リポジトリにアクセスが可能になります。
なお、上記2ファイルはドキュメントルートの外に置いた方が安全です。

ここまで設定したら、apacheを再起動して、設定を有効にしてからブラウザでアクセスが出来るか確認します。
私も、ここまでは問題なく出来たのですが、この先ではまりました。

TortoiseSVNや、コマンドラインでリポジトリにアクセスしようとしたところ、

svn: PROPFIND of '/repos': 403 Forbidden

というエラーが発生したのです。
ブラウザでは問題なくアクセス出来ているので、しばらくあれこれと調べてみたところ、apacheのエラーログにこんな記述が。
client denied by server configuration: /var/www/html/repos

「ブラウザではアクセス出来ているのに、なぜ設定で不許可?」と思いつつgoogleで検索したところ、参考になるサイトを発見!
どうやら、設定がされていたため、PROPFINDでのアクセスが弾かれていたようです。
さっそく上記のサイトを参考に、
<Directory /var/www/html/repos>
AllowOverride All
Options All
<Limit GET POST OPTIONS>
Order allow,deny
Allow from all
</Limit>
<LimitExcept GET POST OPTIONS PROPFIND MKACTIVITY CHECKOUT MKACTIVITY DELETE PROPPATCH MKCOL MERGE REPORT PUT COPY>
Order deny,allow
Deny from all
</LimitExcept>
</Directory>

とすることで、無事にアクセスが出来るようになりました。

コメント (1)

バージョンアップしました
サーバに利用しているOSの最新バージョンがリリースされたので、久しぶりに全面的なバージョンアップを行いました。
22時前後から開始して、ついさっきまで掛かったので、大体2時間弱の間サイトが見れない状態となってしまい、見に来て下さった方には大変失礼いたしまし...