Apache结合mod_dav_svn和mod_authz_svn打造SVN服务器

制作SVN服务器的软件和工具有很多,比如每个SVN都有的svnserve,以及图形化界面超容易使用的VisualSVN Server。但是,现在既然有Apache服务器,那就直接用就是了,而且还可以使用Web浏览目录。

首先,前往这里下载对应的SVN发行包,我下载的是Win32Svn。里面自带mod_dav_svn.so与mod_authz_svn.so。使用与Apache2.2,其他版本请自行测试。

然后,把Win32Svn解压缩,如d:\Subversion,然后在系统环境变量中加上d:\Subversion。

接着,把mod_dav_svn.so与mod_authz_svn.so拷贝到apache的modules目录。

修改httpd.conf,把以下两行前面的“#”注释去掉:

LoadModule dav_fs_module modules/mod_dav_fs.so
LoadModule dav_module modules/mod_dav.so

在所有LoadModule的最后加上下面两行:

LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so

假设使用d:\svn作为仓库的地址,则在httpd.conf或对应虚拟主机的配置中加上:

#SVN START
<Location /svn>
    DAV svn
    SVNParentPath D:\svn
    AuthType Basic
    AuthName "blog.creke.net SVN"
    AuthUserFile D:\svn\.htpasswd
    AuthzSVNAccessFile D:\svn\.ht_svn_authz
    Require valid-user
</Location>
#SVN END

具体的配置参数可以查看这里这里

其中的.htpasswd是用户密码文件,与apache的一样。

.ht_svn_authz是访问控制文件,可以在svnadmin create后,在conf目录下authz.conf找到该文件带有注释的原型。

如果在blog.creke.net的虚拟主机中加上以上配置,再执行“svnadmin create d:\svn\rep1”后,我们访问http://blog.creke.net/svn/rep1时,就会访问到对应的rep1的仓库。

使用这个方法,apache就会兼做svn服务器,就不需要单独启动svnserve了。

2 comments

  1. Xiaoxia says:

    好像还是ssh svn来的方便!!!啥都不用配,装好subversion就可以用了。。。

    1. creke says:

      这个还要培训使用SSH,成本太高,嘻嘻

Leave a comment