インストール
FreeBSD に入れたかったが、業務の都合上、しかたなく Turbo Linux 10 Server に入れる。
(最小構成にしたつもりなのに、いらないモノがインストールされすぎ・・・Linux 不慣れ克服しなくてわ!)
尚、本説明は、試験用の為、セキュリティ等を一切考慮していない。
(FreeBSD + ports の場合のインストール方法は、ずーっと下の方に追記した)
以下、全て /usr/local/src 配下で root ユーザで作業を行っている。
neon
http://www.webdav.org/neon/ ここから最新版をダウンロード
cd neon-0.26.0 ./configure --with-ssl make make install
Berkeley DB
http://dev.sleepycat.com/downloads/releasehistorybdb.html ここから最新版をダウンロード。
(以下、4.4.20 をダウンロードしたと仮定)
cd /usr/local/src/db-4.4.20/build_unix ../dist/configure --enable-compat185 make make install
dist ディレクトリ内で configure を実行するとエラーとなるので気をつける必要がある。
作業後、/etc/ld.so.conf に「/usr/local/BerkeleyDB.4.4/lib」を追加し、/sbin/ldconfig を実行する。
expat
turbopkg で expat を予め入れていたが、Apache2 をインストールする際に expat 関連のヘッダファイルが無いとエラーが出たので、インストールしなおす。(面倒だったので・・・)
http://sourceforge.net/projects/expat/ ここから最新版をダウンロード。
(以下、2.0.0 をダウンロードしたと仮定)
cd /usr/local/src/expat-2.0.0 ./configure make make install
Apache2
解に説明なし。面倒だった為、configure オプションも適当(笑
DAV を使う指定と Berkeley DB のディレクトリを指定する事。
(以下、2.2.0 をダウンロードしたと仮定)
cd /usr/local/src/httpd-2.2.0 ./configure --enable-so=yes ? --enable-dav=yes ? --with-berkeley-db=/usr/local/BerkeleyDB.4.4 ? --enable-ssl=yes ? --with-ssl=/var/ssl make make install
作業後、/etc/ld.so.conf に「/usr/local/apache2/lib」を追加し、/sbin/ldconfig を実行する。
Subversion
http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=260 ここから最新版をダウンロード。
(以下、1.3.0 をダウンロードしたと仮定)
cd subversion-1.3.0 ./configure --with-apxs=/usr/local/apache2/bin/apxs ? --with-apr=/usr/local/src/httpd-2.2.0/srclib/apr ? --with-apr-util=/usr/local/src/httpd-2.2.0/srclib/apr-util ? --with-berkeley-db=/usr/local/BerkeleyDB.4.4 make make install
apr と apr-util は、Apache2 インストール時の作業ディレクトリの Path を使用する。
「--with-apr」と「--with-apr-util」を省略すると下記のようなエラーが出るので気を付ける。
Can't set position pointer in file '/crypt/svn/repos/db/revs/0': Invalid argument
リポジトリ作成
mkdir /crypt/svn svnadmin create /crypt/svn/repos chown -R apache:apache /crypt/svn
Apache2 準備
httpd.conf に下記を追加
<Location /svn/repos> DAV svn SVNPath /crypt/svn/repos </Location>
httpd.conf 内の User と Group が、daemon となっていたので apache に変更。
当然、apache ユーザと apache グループは事前に作成する必要がある。
Apache2 起動
apachectl configtest を実行した所、下記のエラーが発生。
Syntax error on line 235 of /usr/local/apache2/conf/httpd.conf: Cannot load /usr/local/apache2/modules/mod_dav_svn.so into server: libsvn_repos-1.so.0: cannot open shared object file: No such file or directory
何度確認しても、/usr/local/lib/libsvn_repos-1.so.0 が存在しているので、念の為に /sbin/ldconfig を実行すると解消・・・(へんだなぁ・・・orz)
apachectl start で起動。
確認
# telnet localhost 80 Trying 127.0.0.1... Connected to localhost.localdomain (127.0.0.1). Escape character is '^]'. OPTIONS /svn/repos/ HTTP/1.0 HTTP/1.1 200 OK Date: Wed, 15 Mar 2006 10:45:31 GMT Server: Apache/2.2.0 (Unix) DAV/2 SVN/1.3.0 DAV: 1,2 DAV: version-control,checkout,working-resource DAV: merge,baseline,activity,version-controlled-collection DAV: <http://apache.org/dav/propset/fs/1> MS-Author-Via: DAV Allow: OPTIONS,GET,HEAD,POST,DELETE,TRACE,PROPFIND,PROPPATCH,COPY,MOVE,LOCK,UNLOCK,CHECKOUT Content-Length: 0 Connection: close Content-Type: text/plain Connection closed by foreign host.
ユーザ認証の設定
httpd.conf を下記のように修正
<Location /svn/repos> DAV svn SVNPath /crypt/svn/repos AuthzSVNAccessFile /etc/svn-access-file Require valid-user AuthType Basic AuthName "Subversion Repository" AuthUserFile /etc/svn-auth-file </Location>
/etc/svn-auth-file ファイルは、htpasswd コマンドで作成しておく。
/etc/svn-access-file ファイルは、下記の書式で作成する。
[/] cooldaemon = rw
括弧でデリレクトリ名を囲い、その下にユーザ名と権限を記載する。
さて、次は、Trac だ。
追記(2007.05.05)
checkout 等、参照系の処理のみユーザ認証を行わない場合は、下記の通り。
<Location /svn/repos> DAV svn SVNPath /crypt/svn/repos AuthzSVNAccessFile /etc/svn-access-file AuthType Basic AuthName "Subversion Repository" AuthUserFile /etc/svn-auth-file <LimitExcept GET PROPFIND OPTIONS REPORT> Require valid-user </LimitExcept> </Location>
[/] * = r cooldaemon = rw