服务配置

目录

概述
选择一个服务器配置
svnserve服务器
svnserve使用SSH通道
Apache 的 HTTP 服务器
推荐
svnserve,一个定制的服务器
调用服务器
内置的认证和授权
Using svnserve with SASL
SSH 隧道
SSH 配置技巧
httpd,Apache 的 HTTP 服务器
先决条件
基本的 Apache 配置
认证选项
授权选项
额外的糖果
基于路径的授权
支持多种版本库访问方法

一个Subversion的版本库可以和客户端同时运行在同一个机器上,使用file:///访问,但是一个典型的Subversion设置应该包括一个单独的服务器,可以被办公室的所有客户端访问—或者有可能是整个世界。

本小节描述了怎样将一个Subversion的版本库暴露给远程客户端,我们会覆盖Subversion已存在的服务器机制,讨论各种方式的配置和使用。经过阅读本小节,你可以决定你需要哪种网络设置,并且明白怎样在你的主机上进行配置。

概述

Subversion的设计包括一个抽象的网络层,这意味着版本库可以通过各种服务器进程访问,而且客户端“版本库访问”的API允许程序员写出相关协议的插件,理论上讲,Subversion可以使用无限数量的网络协议实现,目前实践中只有两种服务器。

Apache是最流行的web服务器,通过使用mod_dav_svn模块,Apache可以访问版本库,并且可以使客户端使用HTTP的扩展协议WebDAV/DeltaV进行访问,因为Apache是一个非常易于扩展的web服务器,它提供了许多“易于获取的”特性,例如加密的SSL通讯,日志和与第三方工具的集成,以及内置的版本库web浏览功能。

In the other corner is svnserve: a small, lightweight server program that speaks a custom protocol with clients. Because its protocol is explicitly designed for Subversion and is stateful (unlike HTTP), it provides significantly faster network operations—but at the cost of some features as well. While it can use SASL to provide a variety of authentication and encryption options, it has no logging or built-in web-browsing. It is, however, extremely easy to set up and is often the best option for small teams just starting out with Subversion.

第三个选择是使用SSH连接包裹的svnserve,尽管这个场景依然使用svnserve,它与传统的svnserve部署非常不同,SSH在多所有的通讯中使用加密方式,SSH也使用排他的认证,所以在服务器主机(svnserve与之不同,它包含了自己的私有用户帐号)上必须要有真实的系统帐户。最后,因为这些配置需要每个用户发起一个私有的临时svnserve进程,这与允许一组本地用户通过file://协议访问等同(从访问许可的视点)。因此路径为基础的访问控制变得没有意义,因为每个用户都可以直接访问版本库。

下面是三种典型服务器部署的总结。

表 6.1. 

特性Apache + mod_dav_svnsvnservesvnserve over SSH
认证选项HTTP(S) basic auth、X.509 certificates、LDAP、NTLM或任何Apache httpd已经具备的方式CRAM-MD5 by default; LDAP, NTLM, or any other mechanism available to SASLSSH
用户帐号选项private 'users' file, or other mechanisms available to Apache httpd (LDAP, SQL, etc.)private 'users' file, or other mechanisms available to SASL (LDAP, SQL, etc.)系统帐号
授权选项可以授予整个版本库的读/写权限,也可以指定目录的。可以授予整个版本库的读/写权限,也可以指定目录的。只能对版本库整体赋予读/写权限
加密通过可选的 SSLvia optional SASL featuresSSH通道的
Logging对每个HTTP请求记录完全的Apache日志,通过选项“高级”记录普通的客户端操作。no loggingno logging
交互性可以部分的被其他WebDAV客户端使用只同svn客户端通讯只同svn客户端通讯
Web浏览能力有限的内置支持,或者通过第三方工具,如ViewVC只有通过第三方工具,如 ViewVC只有通过第三方工具,如 ViewVC
Master-slave server replicationTransparent write-proxying available from slave to masterCan only create read-only slave serversCan only create read-only slave servers
速度有些慢快一点快一点
初始设置有些复杂极为简单相当简单