Apache と Subversion の連携

Subversionリポジトリを HTTP 接続できるように Apache と連携する設定です ( 毎度ながらコピペ用記事です )。

1. Subversion のインストール


ソースコードからコンパイルすることにしました。現時点最新の 1.9.2 を使用します。

・Download Apache Subversion Sources
https://subversion.apache.org/download.cgi#recommended-release

ちょっと長いですが、ソースのダウンロード~コンパイルまでのコマンドは以下です。

mkdir -p /usr/local/subversion
cd /usr/local/subversion
wget http://ftp.yz.yamagata-u.ac.jp/pub/network/apache/subversion/subversion-1.9.2.tar.gz
tar zxvf subversion-1.9.2.tar.gz
cd subversion-1.9.2
mkdir -p /usr/local/subversion/1.9.2
wget http://www.sqlite.org/sqlite-amalgamation-3071501.zip
unzip sqlite-amalgamation-3071501.zip
mv sqlite-amalgamation-3071501 sqlite-amalgamation
./configure --prefix=/usr/local/subversion/1.9.2
make && make install

SQLite Amalgamation がないと configure の際に以下の感じで怒られます。

 - 略 -
checking sqlite amalgamation... no
checking sqlite amalgamation... no
checking sqlite3.h usability... yes
checking sqlite3.h presence... yes
checking for sqlite3.h... yes
checking sqlite library version (via header)... unsupported SQLite version
checking sqlite library version (via pkg-config)... none or unsupported 3.6.20
no

An appropriate version of sqlite could not be found.  We recommmend
3.7.15.1, but require at least 3.7.12.
Please either install a newer sqlite on this system

or

get the sqlite 3.7.15.1 amalgamation from:
    http://www.sqlite.org/sqlite-amalgamation-3071501.zip
unpack the archive using unzip and rename the resulting
directory to:
/usr/local/subversion/subversion-1.9.2/sqlite-amalgamation

configure: error: Subversion requires SQLite


パス等適当に通して、以下の出力が得られればひとまずインストール成功です。

svn --version
svn, version 1.9.2 (r1703836)
   compiled Dec 10 2015, 23:18:01 on i686-pc-linux-gnu
 - 略 -


2. Apache のインストール


Apache もソースからコンパイルすることにしました。現時点 2.2 系最新の 2.2.31 を使用します。

・Download - The Apache HTTP Server Project
https://httpd.apache.org/download.cgi


ソースのダウンロード~コンパイルまでのコマンドは以下です。

cd /usr/local/src
wget http://ftp.jaist.ac.jp/pub/apache//httpd/httpd-2.2.31.tar.gz
unzip httpd-2.2.31.tar.gz
cd httpd-2.2.31
./configure --enable-proxy --enable-proxy-ajp --enable-mods-shared="all"  --enable-ssl --with-ssl --enable-shared=so --enable-so
make && make install

以下の出力得られれば、インストール成功です。

/usr/local/apache2/bin/httpd -v
Server version: Apache/2.2.31 (Unix)
Server built:   Dec 10 2015 23:46:05


3.Subversion リポジトリを HTTP 接続できるようにする設定


/usr/local/subversion/1.9.2/libexec/ にあるモジュール mod_dav_svn.so が必要なので、/usr/local/apache2/modules にコピーする。

cp /usr/local/subversion/1.9.2/libexec/*.so /usr/local/apache2/modules/
ls -la /usr/local/apache2/modules/ | grep mod_dav_svn.so
-rwxr-xr-x  1 root root 759198 12月 11 00:07 2015 mod_dav_svn.so

設定ファイル svn.conf を作成する ( vi /usr/local/apache2/conf/extra/svn.conf )。

LoadModule dav_svn_module modules/mod_dav_svn.so
<Location /repos>
    DAV svn
    SVNParentPath /usr/local/apache2/htdocs/repos
</Location>


httpd.conf に Include conf/extra/svn.conf を追記して上記設定ファイルをインクルードする。


4.リポジトリに HTTP で接続してみる


svnadmin でリポジトリを作成、チェックアウト、ファイルを追加、コミットしておく。

svnadmin create test1
cd /usr/local/tmp/svnwork/
svn co file:///usr/local/apache2/htdocs/repos/test1/
cd test1/
echo aaa > aaa.txt
svn add aaa.txt 
svn commit -m "add aaa.txt" 

※ 本当は svn co の時点で HTTP でチェックアウトしたかったんですが、これには serf というライブラリが必要になるみたいです ( Subversionコンパイルからやり直す必要あります・・・ )。また今度やります。

ブラウザなりで http://*****/repos/test1 でアクセスするとリポジトリに接続できるはずです。

以上です。

[ 環境情報 ]
CentOS 6.2
Apache HTTP Server 2.2.31
Apache Subversion 1.9.2