とりあえず自分だけでもバージョン管理をしようと思い、
VMWare上のCentOSにSubversionをインストールすることにした。
今回の要件はこんな感じ。
・subversionのインストール
・WebDAV経由でリポジトリにアクセスできるようにする
・ディレクトリごとに細かくアクセス制限をかける
リポジトリ内のディレクトリ構成は以下のような感じを想定して作ってみる。
/path/to/dir
└ projects
├ project_name
│ ├ trunk
│ ├ branches
│ └ tags
│
└ project_name
:
:
今回自分の環境ではもともとsubversionがインストール済みであったが、
念のためインストールからの手順を示す。(rootユーザー)
といってもyumでインストールするだけなので、特に問題ないかと。
# yum install subversion ← Subversion本体
# yum install mod_dav_svn ← WebDAV
インストールが完了したら、リポジトリ用のディレクトリを切ってからリポジトリの作成
apache経由でアクセスするのでapacheから書き込めるようにオーナーをapacheにしておく。
# mkdir /path/to/dir/projects
chown apache:apache /path/to/dir/projects
# svnadmin create /path/to/dir/projects
そっからWebDAVでアクセスできるようにする。
ここでちょっとはまった。
いろんなサイトを見て回ったけど、モジュールの読み込み部分について触れてないブログが結構多くて、
gracefulで文法チェックするとエラーになってしまっていた。
WebDAVを使用する場合は以下の「mod_dav_svn.so」のモジュールを読み込んであげないとエラーになってしまう。
また、「mod_authz_svn.so」はディレクトリごとに細かくアクセス制限をかけることができるようになるモジュール。
ユーザーを作成し、ディレクトリごとに読み書きを制御できるようになる。
個人で使用する分にはまず必要ないが、勉強のためこれも組み込む。
ディレクトリごとにアクセス制限をかけるための設定ファイル(authzsvn.conf)をsubversion.confで読み込むので、
まずはそのファイルの作成をする。
# vi /path/to/dir/project/authzsvn.conf
[groups] ← グループの管理をしている部分の記述開始
#開発者
developers = kusagaya ← グループ名 = ユーザー名
test = userA, userB, userC
#管理者
manager = kusagaya
[/] ← ディレクトリごとのアクセス制限
#すべての人が読み込み可能
* = r
[projects:/trunk]
#開発者は読み書き可能
@developers = rw
[projects:/branches]
#管理者は書き込みも可能
@manager = rw
[projects:/tags]
#管理者は書き込みも可能
@manager = rw
この設定ファイルに関してのドキュメントが見つからなかったので、とりあえずコピペしたのをおく。
# vi /etc/httpd/conf.d/subversion.conf
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
<VirtualHost *>
ServerAdmin your_mail_address
DocumentRoot /path/to/dir/projects
ServerName your_server_name
ErrorLog /path/to/dir/logs/error_log
CustomLog /path/to/dir/logs/access_log common
<Location /svn>
DAV svn
SVNPath /path/to/dir/projects←svnadminコマンドで作成したリポジトリのディレクトリ
# our access control policy
AuthzSVNAccessFile /path/to/dir/projects/authzsvn.conf←mod_authz_svnによるアクセス制限の設定ファイルのパス
以下はただのBasic認証
# only authenticated users may access the repository
Require valid-user
# how to authenticate a user
AuthType Basic
AuthName "Subversion repository(sample)"
AuthUserFile /path/to/dir/projects/.htpasswd
</Location>
</VirtualHost>
問題なさそうならapacheの設定ファイルをリロード。
# /etc/rc.d/init.d/httpd reload
これで一応WebDAV経由でアクセスできるようになったはず。
参考文献
http://park1.wakwak.com/~ima/centos4_subversion0001.html