Apache2 + Subversion1.4(WebDAV) の構築

Apache2 + Subversion1.4 (WebDAV) を Debian GNU/Linux (Etch) にインストールしたときのログ。
# svnserve ではなくて、Apache(HTTP+WebDAV) 経由でのアクセスでやりたい方向け。

Subversionは、現時点の最新版(1.4.3)で構築。

ダウンロード

普通にwgetあたりで取得。

$ cd install
$ wget http://www.meisei-u.ac.jp/mirror/apache/dist/httpd/httpd-2.0.59.tar.gz
$ wget http://subversion.tigris.org/downloads/subversion-1.4.3.tar.gz

Apacheのインストール

解凍して、まずはconfigureから。

$ tar zxvf httpd-2.0.59.tar.gz
$ cd httpd-2.0.59/
$ ./configure \ 
--prefix=/usr/local/apache2 \
--enable-shared=yes \
--enable-dav=yes \
--enable-dav-fs=yes \
--with-ldap \
--enable-ldap=yes \
--enable-auth-ldap=yes \
--enable-rewrite \
--enable-ssl

エラーが出た。OpenSSLのheaderがない、と。
この手は、大抵develパッケージがないときなんだよね。

checking for SSL/TLS toolkit base... /usr
checking for SSL/TLS toolkit version... OpenSSL 0.9.8c 05 Sep 2006
checking for SSL/TLS toolkit includes... configure: error: OpenSSL headers not found 

調べてみると、openssl-develパッケージを入れろ、と皆おっしゃっている。
が、aptでは、そんなパッケージ名は無かったので、cacheをサーチしていたら、それっぽい(libssl-dev)のを発見。

上記パッケージをインストール後、もう一回、configureし直すと、今度は成功。

$ su -
# apt-get update
# apt-get install libssl-dev 
# exit

$ ./configure \
--prefix=/usr/local/apache2 \
--enable-shared=yes \
--enable-dav=yes \
--enable-dav-fs=yes \
--with-ldap \
--enable-ldap=yes \
--enable-auth-ldap=yes \ 
--enable-rewrite \
--enable-ssl

$ make
$ make install
$ cd ..

Subversionのインストール

同じ要領でサクサクっと。

$ tar zxvf subversion-1.4.3.tar.gz
$ cd subversion-1.4.3/
$ ./configure --prefix=/usr/local --with-apxs=/usr/local/apache2/bin/apxs
$ make
$ make install

うまくインストールできたみたい。ここまででインストール自体は完了。次は設定。

Subversionのリポジトリの作成

テスト用として、testリポジトリの作成。
# リポジトリのowner, permissionに注意!

$ sudo mkdir -p /var/svn/repos
$ sudo svnadmin create /var/svn/repos/test
$ sudo chown -R apache /var/svn/repos

ownerやpermissionをきちんとapacheのプロセスのownerにあわせておかないと、参照はできても、コミットできないとかになっちゃうので。

Apacheのconfigファイルの編集

Apacheの設定ファイル(httpd.conf)の詳しいことについては、他の素晴らしいWebサイトでたくさん紹介されているので、そちらをご参考に。


ここには、Apacheのドキュメントへのリンクを貼っておきます。
http://httpd.apache.org/docs/2.0/ja/


ということで、httpd.confを編集。

$ sudo vi /usr/local/apache2/conf/httpd.conf

User、Group、ServerNameあたりを適切なものに変更。
User、Groupは、まずはApacheとかでいいか。Apacheユーザは必要になるので作っておきましょう。
# apacheユーザは、ログイン不可とかにしておきましょう。


あと、以下を追記。

<Location /svn> 
  DAV svn
  SVNParentPath /var/svn/repos
  SVNListParentPath On
  #AuthType Basic
  #AuthName "Subversion Server"
  #AuthUserFile /usr/local/apache2/conf/svn-users
  #Require valid-user 
</Location>

認証を行う場合は、上記のコメントアウト部分を外してください。
もちろん認証用ファイル(AuthUserFile)も必要になります。

Apacheの起動

あとは、Apacheを起動して、、、

$ sudo /usr/local/apache2/bin/apachectl start

ブラウザから、さっき作ったtestリポジトリにアクセス!

http://{hostname or IPアドレス}/svn/test

うまくリポジトリ内が参照できて、かつクライアント(TortoiseSVN等)からコミットするところまで確認して構築完了。