【IT168 技术文档】摘要:详细讲解了在Windows下Subversion版本控制的多种认证方式。特别分析了怎么用MySQL数据库认证Subversion。其中,集成用户文件(UserFile)认证和MySQL数据库认证是我的心得所在。
目录
一、安装 ApacheSVN 服务器
1、必备条件
2、安装
3、基本的Apache配置
二、认证选项
1、基本 HTTP 认证
2、用 mod_authz_svn 进行目录访问控制
3、用MySQL认证Subversion
4、集成用户文件(UserFile)认证和MySQL数据库认证
三、FAQ
------------------------------------------------------------------分 割 线-----------------------------------------------------------------
一、安装 ApacheSVN 服务器
通过 Http 协议访问版本库是 Subversion 的亮点之一。ApacheSVN 服务器具备了许多 svnserve 服务器没有的特性,使用上更加灵活,但是有一点难于配置,灵活通常会带来复杂性。
由于 Subversion 需要版本化的控制,因此标准的 Http 协议不能满足需求。要让 Apache 与 Subversion 协同工作,需要使用 WebDAV(Web-based Distributed Authoring and Versioning:)Web 分布式创作和版本控制)。WebDAV 是 HTTP 1.1 的扩展,关于 WebDAV 的规范和工作原理,可以参考 IETF RFC 2518 (http://www.ietf.org/rfc/rfc2518.txt)。
1、必备条件
为了让你的版本库使用HTTP网络,你必需具备以下几个条件:
(1)配置好httpd 2.2.x,并且使用mod_dav启动。
(2)为mod_dav安装mod_dav_svn插件。
(3)配置你的httpd.conf,使http协议能访问版本库。
下面以我的配置过程详细讲解。
环境:
OS:Windows XP SP2
Web:Apache 2.2.6
SVN:svn-win32-1.4.6
2、安装
(1)安装Apache
具体安装方法见我写的《Windows下安装Apache 2.2.x》一文。
(2)安装 Subversion
将下载下来的 svn-win32-1.4.6.zip 直接解压即可,比如我解压到 e:\subversion 。
从Subversion安装目录的 bin 子目录将 intl3_svn.dll、libdb44.dll、mod_authz_svn.so、mod_dav_svn.so 拷贝到Apache的模块目录(Apache 安装目录的 modules 文件夹)。
3、基本的Apache配置
修改Apache的配置文件 httpd.conf ,使用LoadModule来加载mod_dav_svn模块。
将:
改成:
即去掉前面的“#”号。
添加:
注意:一定确定它在 mod_dav 之后。
现在你已经设置了Apache和Subversion,但是Apache不知道如何处理Subversion客户端,例如TortoiseSVN。为了让Apache知道哪个目录是用来作为Subversion版本库,你需要使用编辑器(例如记事本)编辑Apache的配置文件。
在配置文件最后添加如下几行:
DAV svn
SVNPath e:/svn/repos1
</Location>
这个配置告诉Apache首先需要启用 dav_module,然后加载 dav_svn_module 。版本库对外的URL是:http://服务器IP/repository/ ,所有的Subversion版本库在物理上位于e:/svn/repos1/ 。
配置完毕后重新启动 Apache,打开浏览器,输入 http://服务器IP/ repository/ 将会看到如下画面:
图1 连接成功
这表示 Apache 的 dav_svn 模块已经可以正常工作了。用户可以使用任何一种 Subversion 的客户端通过 Http 协议访问你的版本库。
如果想要指定多个版本库,可以用多个 Location 标签,也可以使用 SVNParentPath 代替 SVNPath,例如在 e:\svn 下有多个版本库 repos1,repos2 等等,用如下方式指定:
DAV svn
SVNParentPath e:/svn
</Location>
“SVNParentPath e:/svn ” 表示 e:\svn 下的每个子目录都是一个版本库。可以通过 http://服务器IP/repository/repos1/,http://服务器IP/repository/repos2/ 来访问。
现在你的版本库任何人都可以访问,并且有完全的写操作权限。也就是说任何人都可以匿名读取,修改,提交,以及删除版本库中的内容(注:这时不需要配置E:\svn\repos\conf\svnserve.conf 文件,并且也不需要启动E:\subversion\bin\svnserve.exe。因为提交是通过Apache的dav模块处理的,而不是由svnservice处理。)。我们用 TortoiseSVN 客户端验证即知。
显然大部分场合这是不符合需求的。那么如何进行权限设置呢,Apache 提供了多种认证方式来实现权限设置。