今まで Subversion は svnserve 経由で使ってたりしてましたけど,なんか svn+ssh とか書くのメンドいし,trac と連携させたいとか思ったことにして,Chapter 6. Server Configuration とかを読んだりしていました.ぼくは実際に使ってみるよりも,こういうドキュメントを読む方が好きですし,研究とかも自分でやるよか,論文を読む方が好きなクソみたいな人間です.
さて,今回試したのは Fedora だよー.
|tcsh|
cat /etc/redhat-release
Fedora release 9 (Sulphur) ||<
**subversion と mod_dav_svn を入れよう!
Fedora は DVD からインストールしたんですけど,インストールオプションとかは覚えていない.なんか見てみたらとりあえず Subversion は入っていた.
|tcsh|
yum list installed | grep -i subversion
subversion.i386 1.4.6-7 installed ||< mod_dav_svn は入っていなかったので,これをインストールします.これは,Apache から HTTP リクエストをパクって,リポジトリを操作してくれる感じのモジュール. |tcsh|
yum install mod_dav_svn
||<
httpd.conf に何か記述しろよなってことが Chapter 6. Server Configuration には書いてあったんですが,どうも mod_dav_svn を入れると Apache の conf.d に subversion.conf ていうコンフィグファイルが入るようなので,これに記述すれば良いですね.分かりやすい!!
|tcsh|
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.conf ですけど,最初は単にモジュールを読みこむだけの設定だ.
|tcsh| $ grep -v -e ^# -e ^$ /etc/httpd/conf.d/subversion.conf LoadModule dav_svn_module modules/mod_dav_svn.so LoadModule authz_svn_module modules/mod_authz_svn.so ||<
**リポジトリを作るよ!
四の五の言わずにさっさと作るし!
|tcsh|
mkdir -p /var/svn/
cd /var/svn
svadmin create repos
||<
**HTTP でアクセスしてみる
subversion.conf に最低限の設定をして,Apache に反映させるよー.Location ディレクティブによって,http://kiririmode-subversion/repos みたいな感じの URI へのアクセスを見て, mod_dav_svn がリポジトリ /var/svn/repos へのアクセスに変換してくれるみたいな感じ.
|tcsh| $ grep -v -e ^# -e ^$ /etc/httpd/conf.d/subversion.conf LoadModule dav_svn_module modules/mod_dav_svn.so LoadModule authz_svn_module modules/mod_authz_svn.so
DAV svn SVNPath /var/svn/repos apachectl graceful
**Digest 認証でもかけてみようやないか
このままだと,世界中の誰もがコミットしてくれてスゴい感じですけど,ぼくは世の中の人とか信じてないし! そんなわけで Digest 認証を設定する.HTTPS とかもあるんですけど,お前のリポジトリで何を暗号化するんだよアホかみたいな感じ. まず,ユーザ名とかパスワードとか realm とかを記録するファイルを作るよ.htdigest でできるんだけど,あんまし Chapter 6. Server Configuration には説明してなかったなー.Basic 認証の htpasswd は説明がわりとある.四の五の言わず,つくる!
|tcsh|
htdigest -c /path/to/auth-digest 'Subversion repository' kiririmode
||< よしゃ! そしたら subversion.conf を次みたく変更する! realm は AuthName と対応して,AuthUserFile は htdigest で作ったファイルへのパスですね.LimitExcept では,GET とか PROPFIND とか READ 系のリポジトリアクセス以外のアクセスに認証をかける! これで commit するヤツは全員ぼくが知ってる人間になった! |tcsh|
grep -v -e ^# -e ^$ subversion.conf
LoadModule dav_svn_module modules/mod_dav_svn.so LoadModule authz_svn_module modules/mod_authz_svn.so
DAV svn SVNPath /var/svn/repos AuthType Digest AuthName "Subversion repository" AuthDigestDomain /repos/ AuthUserFile /path/to/auth-digest ||< とりあえずそんな感じ.あと log とかの設定をしたいんだけど,また続く.Require valid-user