Apache 2 + mod_dav_svnでsvnレポジトリをサブドメインで運用する
何気に結構ハマってしまったのでメモる。使用したOSはCentOS 5.1。
名前ベースのバーチャルホストを使う
今回は同一サーバで動かすので、名前ベースで利用する。
# # Use name-based virtual hosting. # #NameVirtualHost *:80
とコメントアウトされているのを外す。
# # Use name-based virtual hosting. # NameVirtualHost *:80
mod_dav_svn用のバーチャルホスト設定
おいらは下記のように /opt/svn/repos 以下にプロジェクトごとにレポジトリを作るやり方をいつもしている。
- opt
- svn
- repos
- project1
- project2
- project3
- repos
- svn
このとき、プロジェクトごとに設定を増やすのがめんどいので /opt/svn/repos以下を一気に設定できるようにしてみた。
<VirtualHost *:80>
ServerName svn.sample.com
<Location />
DAV svn
SVNListParentPath on
SVNParentPath /opt/svn/repos
AuthType Basic
AuthName "Authorization Realm"
AuthUserFile /opt/svn/repos/.htpasswd
Require valid-user
</Location>
</VirtualHost>
Locationディレクティブの部分を '/' で終わらせてSVNListParentPathをonにすると、SVNParentPath以下のsvnレポジトリを svn.sample.com にアクセスすることで /opt/svn/repos 以下のレポジトリ一覧を出力してくれるっぽい。そして svn.sample.com/project1, svn.sample.com/project2, svn.sample.com/project3 はそれぞれのレポジトリにアクセスできる。
おいらはVirtualHostの設定は全部 /etc/httpd/conf/sites 以下に入れているので、それを読みにいくように httpd.confの最終行にでも書き加える。
Include conf/sites/*.conf
別に指定の仕方は conf/sites/* でも構わないけど、一時的に使用不可にするのに *.conf.disable とかやるので、こういう感じの書き方で。