当前位置: > Linux服务器 > SVN >

apache2 + WebDAV + svn 1.6安装配置

时间:2014-07-11 20:00来源:linux.it.net.cn 作者:IT网

一、安装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,在其中加入

[xhtml] view plaincopy
 
  1. <Location /svn/>  
  2.    DAV svn  
  3.    SVNListParentPath on  
  4.    SVNParentPath "/home/svn/repos"  
  5.    AuthType Basic  
  6.    Authname "Subversion repository"  
  7.    AuthUserFile "/home/svn/repos/passwd"  
  8.    AuthzSVNAccessFile "/home/svn/repos/authz"  
  9.    Require valid-user  
  10. </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)
------分隔线----------------------------