/ 中存储网

Apache服务器中配置svn

2014-11-14 15:10:01 来源:kejihao
总体来说,配置比较简单,先安装Apache http server,down了一下2.0.58的msi版本。安装后打开安装目录下的/modules目录,发现库很全,特别是webdav需要的 mod_dav.so在,好了,apache安装结束。同事的2.0.54版本里/modules下面so库没有几个,建议他重新安装2.0.58版。

原理如下,利用apache服务访问svn服务器,在apache服务启动时,加载svn启动库,客户就可以通过webdav的方式访问了。Svn启动时 需要必须加载的库是mod_dav_svn.so,如果需要对访问的repository进行用户和目录的权限设置,则需要 mod_authz_svn.so库。这两个库都在%subversion%/bin目录下,先把这两个文件拷入到%apache%/modules目录 下。

    物理文件准备完毕,修改%apache%/conf/下面的httpd.conf文件。可以看到

# LoadModule dav_module modules/mod_dav.so

也就是说,apache默认启动不是以webdav方式,去掉#,再下面添加如下两行

LoadModule dav_svn_module modules/mod_dav_svn.so

LoadModule authz_svn_module modules/mod_authz_svn.so

现在apache启动时会加载上面三个so。

在文件末尾加上如下内容,下面是比较简单的配置:

<Location /repos>                     # "/repos"是在url上指定的访问路径,客户访问需要键入这个路径。

  DAV svn                             # 声明svn

  SVNPath E:/svn                      # "E:/svn"是服务器上svn的repository的目录。

#  SVNParentPath E:/svn               # 对于一个目录下存在多个工程的情况,可以声明这个变量。

# 在apache中配置svn有两种,可以混合使用,一种是apache自身的认证机制,

# 对进入/repos目录的用户进行统一认证,

# 一种是应用svn的认证,可以深入到目录级别进行权限控制,

# 和svn独立启动时设置权限一样。

### apache auth begin

  AuthType Basic                     

  AuthName "Subversion repository"    # 认证的名字

  AuthUserFile D:/svn_auth_file       # D:/svn_auth_file里面存放的是使用htpasswd -m D:/svn_auth_file user

# 生成的用户名与密码的加密文件。注意,此处的路径不能有空格。

  Require valid-user                  # 声明,必须是有效的用户才可以访问

### apache auth end

### svn auth begin 

  AuthzSVNAccessFile D:/svn_authz     # D:/svn_authz文件是根据%respository%/conf/authz的规则编写,其实就

     # 是svn对用户权限读取的文件格式,mod_authz_svn.so要求的格式。

#  SVNIndexXSLT "d:/svnindex.xsl"     # d:/svnindex.xsl是用户可以自定义的显示模版,设计好模板,html上的显

          # 会更漂亮。

 # authentication if necessary.

  Satisfy Any             # 字面翻译是:都要满足,是声明用户要满足条件   

  Require valid-user                  # 声明,必须是有效的用户才可以访问

### svn auth end 

</Location>

这时,通过 http://serverip/repos 可以根据设定好的权限进行访问,访问时可以看到最新的版本号,如何让http访问的时候也可以像cvs那样看到更多的内容,老的版本,比较信息呢?可以使 用viewvc来做,原来viewvc支持cvs,现在,也已经开始支持subversion了。

    配置结束了,使用apache启动svn服务其实是加载了svn的库,我们看到,此种方式下,对svn的权限设置不同于svn独立模式的要求,用不上 svn自己的配置,但配置要求都是一样的格式,都是svn的核心认证库modmod_authz_svn.so在决定内容。只是不同的启动方式而已。

from: http://magnetocn.bokee.com/viewdiary.10973859.html