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