一个Subversion的版本库可以和客户端同时运行在同一个机器上,使用file:///访问,但是一个典型的Subversion设置应该包括一个单独的服务器,可以被办公室的所有客户端访问—或者有可能是整个世界。
本小节描述了怎样将一个Subversion的版本库暴露给远程客户端,我们会覆盖Subversion已存在的服务器机制,讨论各种方式的配置和使用。经过阅读本小节,你可以决定你需要哪种网络设置,并且明白怎样在你的主机上进行配置。
概述
Subversion的设计包括一个抽象的网络层,这意味着版本库可以通过各种服务器进程访问,而且客户端“版本库访问”的API允许程序员写出相关协议的插件,理论上讲,Subversion可以使用无限数量的网络协议实现,目前实践中只有两种服务器。
Apache是最流行的web服务器,通过使用mod_dav_svn模块,Apache可以访问版本库,并且可以使客户端使用HTTP的扩展协议WebDAV/DeltaV进行访问,因为Apache是一个非常易于扩展的web服务器,它提供了许多“易于获取的”特性,例如加密的SSL通讯,日志和与第三方工具的集成,以及内置的版本库web浏览功能。
在另一个角落是svnserve:一个更小,轻型的服务器程序,同客户端使用自定义的协议。因为协议是为Subversion专门设计的,并且是有状态的(不像HTTP),它提供了更快的网络操作—但也有一些代价。它只理解CRAM-MD5的认证,然而它非常易于配置,是开始使用Subversion的小团队的最佳选择。
第三个选择是使用SSH连接包裹的svnserve,尽管这个场景依然使用svnserve,它与传统的svnserve部署非常不同,SSH在多所有的通讯中使用加密方式,SSH也使用排他的认证,所以在服务器主机(svnserve与之不同,它包含了自己的私有用户帐号)上必须要有真实的系统帐户。最后,因为这些配置需要每个用户发起一个私有的临时svnserve进程,这与允许一组本地用户通过file://协议访问等同(从访问许可的视点)。因此路径为基础的访问控制变得没有意义,因为每个用户都可以直接访问版本库。
下面是三种典型服务器部署的总结。
表 6.1.
特性 Apache + mod_dav_svn svnserve svnserve over SSH 认证选项 HTTP(S) basic auth、X.509 certificates、LDAP、NTLM或任何Apache httpd已经具备的方式 CRAM-MD5 SSH 用户帐号选项 私有的'users'文件 私有的'users'文件 系统帐号 授权选项 可以授予整个版本库的读/写权限,也可以指定目录的。 可以授予整个版本库的读/写权限,也可以指定目录的。 只能对版本库整体赋予读/写权限 加密 通过可选的 SSL 无 SSH通道的 Logging 对每个HTTP请求记录完全的Apache日志,通过选项“高级”记录普通的客户端操作。 no logging no logging 交互性 可以部分的被其他WebDAV客户端使用 只同svn客户端通讯 只同svn客户端通讯 Web浏览能力 有限的内置支持,或者通过第三方工具,如ViewVC 只有通过第三方工具,如 ViewVC 只有通过第三方工具,如 ViewVC 速度 有些慢 快一点 快一点 初始设置 有些复杂 极为简单 相当简单
以上介绍摘自Subversion 手册
本文以下只介绍SVN使用Apache http 服务,将完成多个项目版本库管理、SSL加密、web界面管理项目、mysql 存放用户密码等全套SVN解决方案。
好了,打起精神开始用功学习吧~
一、环境说明
Server : CentOS 5.5 IP: 10.1.254.241
Client : Win2003 IP:10.1.96.9
二、软件包安装
1、
[root@subversion-1 ~]# yum -y install mysql mysql-server mysql-devel per-DBI perl-DBD-MySQl mod_auth_mysql php-common Php-cli php http http-devel mod_sslsubversion subversion-devel subversion-perl mod_dav_svn php-mysql
Mod_auth_mysql 把用户名字和密码保存到MySQL数据库,然后直接使用它们进行身份验证。
Mod_dav_svn Apache通过Apache HTTP服务器用来维护Subversion版本库配置指示。(详见:
)
2、查看subversion是否安装成功
[root@subversion-1 ~]# svnserve --version
svnserve, version 1.6.11 (r934486)
compiled Jun 8 2011, 16:21:54
三、配置mysql
1、新建一个账户
GRANT all privileges ON *.* TO usvn@localhost IDENTIFIED BY 'usvn';