CentOS へ WebDAV svn をインストールする。
環境
- CentOS 5.2
- Subversion 1.4.2
問題
CentOS で Subversion のリポジトリを SSL 公開したい。
解決方法
以下の手順で作業を進める。
- Apache mod_authz_svn のインストール
- Apache mod_dav_svn のインストール
- Subversion リポジトリ ユーザーの作成
- Subversion リポジトリ親ディレクトリの作成
- Subversion リポジトリの作成
- Subversion リポジトリ権限の設定
- 公開リポジトリ向け Apache 設定ファイルの編集
- 公開リポジトリ向け Apache の再起動
- 公開リポジトリ向け疎通確認
- 非公開リポジトリ向け Apache アクセス ファイルの作成
- 非公開リポジトリ向け Apache 設定ファイルの編集
- 非公開リポジトリ向け Apache の再起動
- 非公開リポジトリ向け疎通確認
- 非公開リポジトリ向け Subversion アクセス ファイルの作成
Apache mod_authz_svn のインストール
CentOS の場合はリポジトリにファイルがない。
後述する mod_dav_svn のインストールでまとめてインストールされるので、次のステップへ進む。
Apache mod_dav_svn のインストール
yum でインストールする。
# yum install mod_dav_svn
上記により /etc/httpd/conf.d/subversion.conf が自動作成される。
今回は下記の依存モジュールもアップデートした。
- neon-0.25.5-10.el5
- subversion-1.4.2-4
Subversion リポジトリ ユーザーの作成
リポジトリを配置するためにユーザーを作成する。
/var へリポジトリを配置してもいいが、メンテナンスの際に管理者になる必要が出てしまうので、ユーザーを作成することにする。
# useradd svn # passwd svn
Subversion リポジトリの作成
svnadmin コマンドでリポジトリを作成する。
今後、リポジトリを増やす場合は下記を繰り返す。
$ svnadmin create /home/svn/repos/REPO-NAME
Subversion リポジトリ権限の設定
上記で作成したリポジトリの権限を設定する。
chmod 707 としてはいけない。
chmod 707 ではファイルに実行権限が付いてしまう。
$ chmod -R o+w /home/svn/repos/REPO-NAME
公開リポジトリ向け Apache 設定ファイルの編集
/etc/httpd/conf.d/subversion.conf を編集する。
疎通確認をしつつ、設定作業をするためこの段階では以下の状態で設定する。
- 公開リポジトリ
- 暗号化無し
# vi /etc/httpd/conf.d/subversion.conf
ファイル末尾に下記を追記する。
<Location /repos> DAV svn SVNParentPath /home/svn/repos </Location>
非公開リポジトリ向け Apache 設定ファイルの編集
改めて subversion.conf を編集する。
認証方法がベーシック認証になっているが、SSL 通信のためパスワードは暗号化される。
<Location /repos> SSLRequireSSL DAV svn SVNParentPath /home/svn/repos AuthType Basic AuthName "Authentication" AuthUserFile /home/svn/repos/.htpasswd Require valid-user </Location>
非公開リポジトリ向け Apache アクセス ファイルの作成
Apache の htpasswd を使う。
$ htpasswd -c /home/svn/repos/.htpasswd USER-NAME New password: ******** Re-type new password: ********
複数のユーザーがいる場合は、下記操作を繰り返す。
初回設定と異なり -c オプションが無い点に注意。
$ htpasswd /home/svn/repos/.htpasswd USER-NAME2 New password: ******** Re-type new password: ********
非公開リポジトリ向け疎通確認
ブラウザおよび svn クライアントから下記アドレスへアクセスする。
プロトコルが http ではなく、https になっている点に注意。
https://example.com/repos/REPO-NAME
非公開リポジトリ向け Subversion アクセス ファイルの作成
Apache の認証情報と mod_dav_svn の認証情報をリンクさせるために、アクセス ファイルを作成する。
アクセス ファイルの本来の目的はアクセス制御である。
そのため作成は必須ではない。
だが、アクセス ファイルを作成しないと、コミット ユーザーがログに記録されない。
まずは subversion.conf を編集し、AuthzSVNAccessFile を追加する。
# vi /etc/httpd/conf.d/subversion.conf
<Location /repos> SSLRequireSSL DAV svn SVNParentPath /home/svn/repos AuthzSVNAccessFile /home/svn/repos/authz AuthType Basic AuthName "Authentication" AuthUserFile /home/svn/repos/.htpasswd Require valid-user </Location>
次にアクセス ファイルを配置する。
アクセス ファイルはリポジトリの個数とは関係なく、1ファイルだけ配置する。
$ vi /home/svn/repos/authz
[/] * = USER-NAME1 = rw USER-NAME2 = rw : USER-NAME3