Ubuntuサーバが無事に動いたので、続いてSubversionを入れてみる。apache
こんな感じの環境を考える。svn
sudo apt-get install subversion libapache2-svn
はい終わり。ui
まずはリポジトリ自體を置くディレクトリを做成。お好みで。spa
sudo mkdir /var/lib/svn
んで、とりあえず適當にリポジトリを做ってみる。rest
sudo svnadmin create /var/lib/svn/foo sudo chown -R www-data /var/lib/svn/foo
後々Apache経由でアクセスするのでオーナーをApacheユーザ(www-data)に変えておく*1。code
libapache2-svnを入れた時點で/etc/apache2/mods-available/dav_svn.confというファイルが出來てるんだけど、SSL限定にするにはdefault-sslのVirtualHostディレクティブの中に書く必要があるので、こいつは使わない。server
/etc/apache2/sites-available/default-sslに同様の內容を書き込む。htm
<IfModule mod_ssl.c> <VirtualHost _default_:443> </VirtualHost> : : # other configuration : # 如下を追加 <Location /svn> DAV svn SVNParentPath /var/lib/svn AuthType Digest AuthName "Subversion Repository" AuthUserFile /etc/apache2/.htdigest AuthzSVNAccessFile /etc/apache/dav_svn.authz Require valid-user Satisfy Any </Location> </IfModule>
パスなどの設定內容はお好みに合わせて。blog
綺麗に管理したいなら外部ファイルにしてIncludeすればいい。ただ、sites-availableとかに置くとトラブルの元なので避けた方がいいかも。
続けてDigest認証用のファイルを做成する。
sudo htdigest -c /etc/apache2/.htdigest "Subversion Repository" username
realmが追加されている之外はhtpasswdと同じ。ファイルを做成するときだけ-cオプションを付ける。追加・変更時はつけない。
realmはAuthNameと合わせる必要があるので注意。
做るのはAuthzSVNAccessFileで指定したファイル。
[groups] foo-dev = user-a, user-b [/] * = [foo:/] @foo-dev = rw user-c = rw * = r
書き方はSubversionのマニュアルを読めってことで。
これを使うとリポジトリ(とパス)単位でユーザ毎に読み書きの制御ができる。
上の例だとfooリポジトリは誰でも見れるけど、コミットはuser-a, user-b, user-cしかできない。
設定が終わったのでモジュールを有効にしてApacheを再起動する。
sudo a2enmod ssl sudo a2enmod auth_digest sudo a2enmod dav_svn sudo a2ensite default-ssl sudo /etc/init.d/apache2 restart
これでhttps経由でアクセス出來るようになったはず。