一、安裝apache2
1. 從apache的源碼目錄裡面找到apr和apr-util單獨安裝,以便subversion安裝時使用
進入apr目錄:
./configure --prefix=/usr/local/apr
make
make test
make install
進入apr-util目錄:
./configure --prefix=/usr/local/apr-util
make
make test
make install
2. 安裝apache
./configure --prefix=/usr/local/apache2
--with-apr=/usr/local/apr
--with-apr-util=/usr/local/apr-util
--enable-so
--enable-dav
--enable-rewrite
--enable-maintainer-mode
make
make install
二、安裝subversion 1.6
1. 由于系統已經有zlib、sqlite等庫,是以隻單獨安裝了serf。
./configure --prefix=/usr/local/serf
--with-apr=/usr/local/apr
--with-apr-util=/usr/local/apr-util
make
make check
make install
2. 安裝subversion
./configure --prefix=/usr/local/svn
--with-apxs=/usr/local/apache2/bin/apxs
--with-apr=/usr/local/apr
--with-apr-util=/usr/local/apr-util
--with-serf=/usr/local/serf
--with-ssl
--enable-maintainer-mode
make
make check
make install
三、配置
1. 檢視apache安裝目錄的modules目錄下是否有mod_authz_svn.so和mod_dav_svn.so
2. 確定conf/httpd.conf檔案裡面有如下兩行:
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
3. 建立一個目錄比如/home/svn/repos來存放版本庫,可以将多個版本庫放在這個目錄中統一管理。比如可以在此目錄下建一版本庫gr:
svnadmin create /home/svn/repos/gr
4. 配置httpd.conf,在其中加入
<Location /svn/>
DAV svn
SVNListParentPath on
SVNParentPath "/home/svn/repos"
AuthType Basic
Authname "Subversion repository"
AuthUserFile "/home/svn/repos/passwd"
AuthzSVNAccessFile "/home/svn/repos/authz"
Require valid-user
</Location>
由于我們在同一個目錄中有多個版本庫,是以指定SVNParentPath,通過指定SVNListParentPath可以列出版本庫清單。
AuthUserFile指定用于使用者驗證的檔案,裡面是使用者名和密碼,由于是用apache進行使用者驗證,是以這個檔案要用apache的htpasswd指令建立的,密碼是用MD5加密的。
AuthzSVNAccessFile指定版本庫的通路規則。
htpasswd -c /home/svn/repos/passwd user1
-c選項用于建立新檔案,以後用-m選項,htpasswd會提示輸入密碼。
建立文本檔案/home/svn/repos/authz,内容格式如下:
[groups]
admin = user1
[/]
* = r
@admin = rw
[gr:/]
重新開機apache就可以通路到http://host/svn/gr了。
但是通路http://host/svn出現403 Forbidden,換用http://host/svn/則可以列出版本庫清單。這是因為在authz檔案中指定通路規則的根目錄為"/"。
可以使用apache的重定向使http://host/svn定向到http://host/svn/,在httpd.conf中加入
RedirectMatch ^(/svn)$ $1/
這樣就不會有403錯誤碼。
另外,向版本庫送出時出現如下錯誤:
svn: Can't open file '/home/svn/repos/gr/db/txn-current-lock': Permission denied
這是因為版本庫目錄的權限問題。可以将其改為apache所有。apache預設用daemon使用者運作,可以增加apache組和使用者。
在httpd.conf中修改如下兩行:
User daemon
Group daemon
為
User apache
Group apache
讓apache以apache使用者運作,然後将版本庫目錄改為apache所有即可。