ApacheによるSSLサイトの構築、WebDAVモジュール設定、https通信経由でSVNリポジトリへアクセスできるようにする設定に関するメモ
WebDAV+Subversion構築
WebDAV経由でSVNレポジトリへアクセスできるように設定する。またSSLのBasic認証で部外者がレポジトリへアクセスできないようにする。
- ApacheのSSLサイトを有効にする
apache2のsslモジュールを有効にする
> a2enmod ssl
SSLを使用するバーチャルホストの雛形default-ssl
を使ってSSLを使用するサイトの設定を行う。
> a2ensite default-ssl
なんちゃって証明書
を作成する
とりあえず自分で証明書を作成する。ベリサインなどの公的機関が発行するわけではないので、ブラウザからアクセスすると「怪しいサイト」と疑われるが、あくまで個人利用なので良しとする。
> make-ssl-cert /usr/share/ssl-cert/ssleay.cnf /etc/apache2/apache.pem
default-sslを開いて、さきほど作成した証明書を指定する。
SSLCertificateFile "/etc/apache2/apache.pem"
SSLCertificateKeyFile "/etc/apache2/apache.pem"
WebDAV+Subversionの設定
apache2用のsvn
モジュールと文字化け対策用モジュール、Subversionのインストール
$ sudo apt-get install libapache2-mod-encoding
$ apt-get install subversion
$ apt-get install libapache2-svn
$ sudo a2enmod dav
$ sudo a2enmod encoding
$ sudo a2enmod dav_svn
- SVN用のパスワードファイルを作成
> htpasswd -c /etc/apache2/subversion.passwd [user name]
/etc/apache2/conf.d
ディレクトリに、svn
ファイルを作成して以下のディレクティブを追加する
<location repositories>
DAV svn
SVNListParentPath on
SVNParentPath /var/repogitories/
AuthType Basic
AuthName "Subversion Repositories"
AuthUserFile /etc/apache2/subversion.passwd
Require valid-user
</location>
設定ファイルの記述どおりの場所にsubversionレポジトリ
を作成する。
> svnadmin create /var/repogitories/svnrepo
apach2再起動後、リポジトリのチェックアウトとサンプルファイルの追加、およびコミットができるか確認する。
$ svn import sample.txt https://localhost/repositories/svnrepo -m "import test"
$ svn checkout https://localhost/repositories/svnrepo/
$ vi sample.txt
$ svn commit -m "commit test"
作成したリポジトリはapache2のユーザwww-data
から読み書きできるようになっていないといけない。パーミッションを確認して書き込み権限
があるかチェックしておく。クライアントからコミットしたときに「can’t write activity db」「permission denied can’t make directory 」が表示されたらリポジトリのパーミッションに問題がある。
$ sudo chmod 770 /var/repogitories/svnrepo/dav
$ sudo chmod 770 /var/repogitories/svnrepo/dav/activity.d
$ sudo chmod 770 /var/repogitories/svnrepo/db/rep-cache.db
またブラウザからリポジトリの一覧を表示してみる。Basic認証パネルでユーザ、パスワードを入力したらレポジトリの内容が一覧表示することを確認する。
https://localhost/repogitories/svnrepo