httpsでアクセスできるSubversionリポジトリの構築
問題
Subversionサーバーを立てたいです。
svn://~ は暗号化がないので却下。
svn+ssh://~ は悪くないけど、
https://~ にしようと思っています(運用上の都合で)。
答え
http(s)でアクセスできるのはクライアント側もだいたい対応していて楽ですね。gitもhttp対応しているぐらいだし。
以下、CentOS Stream 9 の場合
構想
将来いろいろ置くかもしれないのである程度ディレクトリを切っておく。
以下のようなURLにする。
https://repository.example.com/svn/project1
https://repository.example.com/svn/project2
……
リポジトリの物理的な場所は以下にする。
/var/svn/repos/project1
/var/svn/repos/project2
……
必要なパッケージ
http(s)でアクセスできるSVNリポジトリを作るには、以下のパッケージをインストール。
# yum install httpd subversion mod_dav_svn
apacheの設定
/etc/httpd/conf.d 以下に設定ファイルを追加。
# vi /etc/httpd/conf.d/subversion.conf <Location /svn/project1> DAV svn AuthType Basic AuthName "private" AuthUserFile /var/svn/.htpasswd Require valid-user SVNPath /var/svn/repos/project1 </Location> <Location /svn/project2> DAV svn AuthType Basic AuthName "private" AuthUserFile /var/svn/.htpasswd Require valid-user SVNPath /var/svn/repos/project 2 </Location>
SVNPath で指定するのはリポジトリ1個1個のディレクトリ。
SVNParentPath で複数のリポジトリが置かれている親ディレクトリの指定もできる。リポジトリの追加削除が頻繁に発生する場合は便利かもしれない。
# vi /etc/httpd/conf.d/subversion.conf <Location /svn/> DAV svn AuthType Basic AuthName "private" AuthUserFile /var/svn/.htpasswd Require valid-user SVNParentPath /var/svn/repos </Location>
認証設定
認証はベーシック認証と同じ要領。
# htpasswd -c /var/svn/.htpasswd user1 New password: Re-type new password: Adding password for user user1
場所を作る・リポジトリを作る
都合の良い場所でOK。上の設定と一致させること。
# mkdir /var/svn # mkdir /var/svn/repos # svnadmin create /var/svn/repos/project1 # svnadmin create /var/svn/repos/project2 # chown -R apache:apache /var/svn/repos
細かなアクセス制御をしたい場合は、新規作成したリポジトリの設定ファイルを編集して、apache側の AuthzSVNAccessFile に設定する。
# vi /var/svn/repos/project1/conf/authz [groups] developer=user1,user2,user3 manager=user4,user5 [/] * = r [project1:/trunk] @developer = rw [project1:/branches] @developer = rw [project1:/tags] @manager = rw
# vi /etc/httpd/conf.d/subversion.conf <Location /svn/project1> DAV svn AuthType Basic AuthName "private" AuthUserFile /var/svn/.htpasswd Require valid-user SVNPath /var/svn/repos/project1 AuthzSVNAccessFile /var/svn/repos/project1/conf/authz </Location>
AuthzSVNAccessFile を設定しない場合は、認証さえ通れば読み書き自由。
https対応
サーバー証明書取得。
上記の設定は443ポートのVirtualHostの設定内に書く。
<VirtualHost *:443> ServerName ~~~ <Location ~~> DAV svn # 略 </Location> SSLEngine on SSLCertificateFile ~~~~ SSLCertificateKeyFile ~~~~ </VirtualHost>
apache起動
# systemctl start httpd
その他の設定
必要なら使用する。
SVNListParentPath on
Debian、Ubuntuの場合
apache2とsubversionの連携にインストールするのが以下のパッケージになる程度の違い。
# apt install libapache2-mod-svn
KM 2024年3月7日 16:53
yum install httpd subversion mod_dab_svn
↓
yum install httpd subversion mod_dav_svn