一、安装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所有即可。
(责任编辑:IT) |