### 第6章配置服务器 **目录** 一个Subversion的版本库可以和客户端同时运行在同一个机器上,使用`file:///`访问,但是一个典型的Subversion设置应该包括一个单独的服务器,可以被办公室的所有客户端访问―或者有可能是整个世界。 本小节描述了怎样将一个Subversion的版本库暴露给远程客户端,我们会覆盖Subversion已存在的服务器机制,讨论各种方式的配置和使用。经过阅读本小节,你可以决定你需要哪种网络设置,并且明白怎样在你的主机上进行配置。 ### 概述 Subversion的设计包括一个抽象的网络层,这意味着版本库可以通过各种服务器进程访问,而且客户端“版本库访问”的API允许程序员写出相关协议的插件,理论上讲,Subversion可以使用无限数量的网络协议实现,目前实践中存在着两种服务器。 Apache是最流行的web服务器,通过使用**mod_dav_svn**模块,Apache可以访问版本库,并且可以使客户端使用HTTP的扩展协议WebDAV/DeltaV进行访问,另一个是**svnserve**:一个小的,独立服务器,使用自己定义的协议和客户端,表格6-1比较了这两种服务器。 需要注意到Subversion作为一个开源的项目,并没有官方的指定何种服务器是“主要的”或者是“官方的”,并没有那种网络实现被视作二等公民,每种服务器都有自己的优点和缺点,事实上,不同的服务器可以并行工作,分别通过自己的方式访问版本库,它们之间不会互相阻碍(见[“支持多种版本库访问方法”一节])。以下是对两种存在的Subversion服务器的比较―作为一个管理员,你更加胜任给你和你的用户挑选服务器的任务。 **表6.1.网络服务器比较** | 特性 | Apache + mod_dav_svn | svnserve | |-----|-----|-----| | 认证选项 | HTTP(S) basic auth、X.509 certificates、LDAP、NTLM或任何Apache httpd已经具备的方式 | CRAM-MD5或SSH | | 用户帐号选项 | 私有的'users'文件 | 私有的'users'文件,或存在的系统(SSH)帐户 | | 授权选项 | 整体的读/写访问,或者是每目录的读/写访问 | 整体的读/写访问,或者是使用pre-commit钩子的每目录写访问(但不是读) | | 加密 | 通过选择SSL | 通过选择SSH通道 | | 交互性 | 可以部分的被其他WebDAV客户端使用 | 不能被其他客户端使用 | | Web浏览能力 | 有限的内置支持,或者通过第三方工具,如ViewCVS | 通过第三方工具,如ViewCVS | | 速度 | 有些慢 | 快一点 | | 初始化配置 | 有些复杂 | 相当简单 |