### 第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 |
| 速度 | 有些慢 | 快一点 |
| 初始化配置 | 有些复杂 | 相当简单 |
- 第1章介绍
- Subversion的历史
- Subversion的特性
- Subversion的架构
- 安装Subversion
- Subversion的组件
- 快速入门
- 第2章基本概念
- 版本模型
- Subversion实战
- 摘要
- 第3章指导教程
- 导入
- 修订版本: 号码、关键字和日期,噢,我的!
- 初始化的Checkout
- 基本的工作周期
- 检验历史
- 其他有用的命令
- 摘要
- 第4章分支与合并
- 使用分支
- 在分支间拷贝修改
- 常见用例
- 转换工作拷贝
- 标签
- 分支维护
- 摘要
- 第5章版本库管理
- 版本库的创建和配置
- 版本库维护
- 添加项目
- 摘要
- 第6章配置服务器
- 网络模型
- svnserve,一个自定义的服务器
- httpd,Apache的HTTP服务器
- 支持多种版本库访问方法
- 第7章高级主题
- 属性
- Peg和实施修订版本
- 外部定义
- 卖主分支
- 本地化
- Subversion版本库URL
- 第8章开发者信息
- 使用API
- 进入工作拷贝的管理区
- WebDAV
- 使用内存池编程
- 为Subversion做贡献
- 第9章Subversion完全参考
- svn add
- svn blame
- svn cat
- svn checkout
- svn cleanup
- svn commit
- svn copy
- svn delete
- svn diff
- svn export
- svn help
- svn import
- svn info
- svn list
- svn log
- svn merge
- svn mkdir
- svn move
- svn propdel
- svn propedit
- svn propget
- svn proplist
- svn propset
- svn resolved
- svn revert
- svn status
- svn switch
- svn update
- svnadmin
- svnadmin create
- svnadmin deltify
- svnadmin dump
- svnadmin help
- svnadmin hotcopy
- svnadmin list-dblogs
- svnadmin list-unused-dblogs
- svnadmin load
- svnadmin lstxns
- svnadmin recover
- svnadmin rmtxns
- svnadmin setlog
- svnadmin verify
- svnlook
- svnlook author
- svnlook cat
- svnlook changed
- svnlook date
- svnlook diff
- svnlook dirs-changed
- svnlook help
- svnlook history
- svnlook info
- svnlook log
- svnlook propget
- svnlook proplist
- svnlook tree
- svnlook uuid
- svnlook youngest
- svnserve
- svnversion
- mod_dav_svn Configuration Directives
- 附录A.Subversion对于CVS用户
- 目录的版本
- 更多离线操作
- 区分状态和更新
- 分支和标签
- 元数据属性
- 冲突解决
- 二进制文件和转化
- 版本化的模块
- 认证
- 转化CVS版本库到Subversion
- 附录C.WebDAV和自动版本化
- 自动版本化交互性
- Subversion和DeltaV
- 术语表