第 6 章 配置服务器

目录

概述
网络模型
请求和响应
客户端凭证缓存
svnserve,一个自定义的服务器
调用服务器
内置的认证和授权
创建一个用户文件和域
设置访问控制
SSH认证和授权
SSH配置技巧
初始设置
控制调用的命令
httpd,Apache的HTTP服务器
必备条件
基本的Apache配置
认证选项
基本HTTP认证
SSL证书管理
授权选项
整体访问控制
每目录访问控制
关闭路径为基础的检查
额外的糖果
版本库浏览
其它特性
支持多种版本库访问方法

一个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_svnsvnserve
认证选项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
速度有些慢快一点
初始化配置有些复杂相当简单