到版本1.5.6,subversion提供的svnserve搭建的SVN服务器,使用的仍然是名文密码文件。
为了使用加密的密码文件,需要借助于Apache,使用subversion的mod_dav_svn和mod_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