根据网络资源整理,结合实际搭建情况,在此做一简短小结:
- 分别安装Apache和Subversion;
- 把<subversion_root>/httpd/下的mod_dav_svn.so和mod_authz_svn.so复制到<apache_root>/modules/
- 把<subversion_root>/bin/下的libdb42.dll、libeay32.dll、ssleay32.dll复制到<apache_root>/bin或<apache_root>/modules
- 手工编辑<apache_root>/conf/httpd.conf,取消下面两行的注释:
#LoadModule dav_module modules/mod_dav.so
#LoadModule dav_fs_module modules/mod_dav_fs.so
然后在所有module的最后面新增两行:
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
- 手工创建svn的代码库目录<repo_path>
- 运行svnadmin命令,创建代码库:
svnadmin create <repo_path>
- 修改httpd.conf,在末尾增加:
<Location /<repo_url>/<project_name>>
DAV svn
SVNPath <repo_path>/<project_name>
</Location>
可以增加多个Location,每个Location对应一个project,它们都位于同一个svn代码库中;
- 也可以利用SVNParentPath来简化上述配置:
<Location /<svn_url>>
DAV svn
SVNParentPath <svn_repo>
</Location>
- 重启Apache,通过<svn_url>访问svn代码库,以验证配置是否正确;
- 运行svn的import命令,将代码导入svn代码库:
svn import . <svn_url> -m “…”
其中“.”为当前路径;
- (使用文件方式实现客户端验证)修改httpd.conf,增加用户验证相关配置:
<Location /<repo_url>/<project_name>>
DAV svn
SVNPath <repo_path>/<project_name>
AuthType Basic
AuthName “Subversion Repository”
AuthUserFile <userfile_path>
AuthzSVNAccessFile <accessfile_path>
AuthGroupFile d:/passwd/groups
</Location>
AuthUserFile指定了用户密码,利用<apache_root>/bin下的htpasswd命令可以创建一个经过加密的用户密码文件:
<apache_root>/bin/htpasswd –c <userfile_path> <user_name>
如果要生成明文文件,可以加上-p参数。
明文的密码文件格式如下:
username:password
AuthGroupFile指定了群组关系,可以在文本文件中手工定义,格式如下:
groupname: username1 username2
AuthzSVNAccessFile指定了详细的权限控制,可以在文本文件中定义,格式类似如下:
[project_name:/]
* =
zhangs = r
lis = rw
除了基于文本文件的简单验证机制外,SVN还支持通过Windows域用户身份、数据库、LDAP等方式来验证。