Ubuntu 12.04 サーバー構築3 ( Apache WebDAV, SVN )

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