使用基于Apache的 subversion/svn 管理代码

到版本1.5.6,subversion提供的svnserve搭建的SVN服务器,使用的仍然是名文密码文件。

为了使用加密的密码文件,需要借助于Apache,使用subversion的mod_dav_svnmod_authz_svn.so,使用基于Apache的认证机制。

假如使用发行版的Apache,那么一般发行版都带了相应的svn模块mod_dav_svn(CentOS)、libapache2-svn(Debian/Ubantu),直接安装即可。

下面主要介绍

源代码安装mod_dav_svn:

下载subversion的源代码:http://subversion.tigris.org/

与Apaceh相关的两个编译选择:

–with-apxs[=FILE]      Build shared Apache modules. FILE is the optional pathname to the Apache apxs tool; defaults to “apxs”.
–with-apache-libexecdir[=PATH] Install Apache modules to PATH instead of Apache’s configured modules directory; PATH “no” or –without-apache-libexecdir means install to LIBEXECDIR.

一般指定使用 –with-apxs=[apxs的绝对路径]来编译。默认会安装两个模块到Apache的modules目录内,分别mod_authz_svn.so、mod_dav_svn.so。

配置Apache:

1. 加载SVN依赖的模块

LoadModule dav_module             modules/mod_dav.so
LoadModule dav_fs_module         modules/mod_dav_fs.so
LoadModule dav_svn_module       modules/mod_dav_svn.so
LoadModule authz_svn_module    modules/mod_authz_svn.so

2. 建立svn仓库

svnadmin create /srv/_svndata/isystem
svnadmin create /srv/_svndata/iconfig

3. 配置apache对svn仓库的管理
# 注意,/svn目录不能在你的DocumentRoot目录下。
<Location /svn>
# 启用SVN
DAV svn
# 设置SVN仓库的路径
# SVNPath /srv/_svndata/isystem
# 假如在一个目录下有多个仓库,那么可以使用SVNParentPath来指定多仓库的根目录
# 也可以使用SVNPath来进行单独的设置
SVNParentPath /srv/_svndata

AuthType Basic
AuthName “Subversion Repository”
AuthUserFile /etc/apache2/dav_svn.passwd

# 设置SVN的权限控制
AuthzSVNAccessFile /etc/apache2/dav_svn.authz

<LimitExcept GET PROPFIND OPTIONS REPORT>
Require valid-user
</LimitExcept>

</Location>

4. 添加SVN访问账号

htpasswd /etc/apache2/dav_svn.passwd  caoyuwei

编辑:/etc/apache2/dav_svn.authz

[groups]
admin = caoyuwei
[/]
@admin = rw
[isystem:/]
@admin= rw
[iconfig:/]
@admin=rw

On this day..

Tags: , , , , , ,

Leave a comment