`
韩悠悠
  • 浏览: 828411 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

基于 svnserve 的服务器

阅读更多

简介

在 Subversion 中包含 Svnserve - 一个轻型的独立服务器,它使用一个基于一般 TCP/IP 连接的定制协议。用于小型安装,或者不能使用全能 Apache 服务器的地方。

In most cases svnserve is easier to setup and runs faster than the Apache based server, although it doesn't have some of the advanced features. And now that SASL support is included it is easy to secure as well.

安装 svnserve

 

  1. 可以从这里获取最新版本的 Subversion http://subversion.apache.org/getting.html。另外,也可以从 ColabNet 获取一个打包好的安装程序 http://www.collab.net/downloads/subversion 。这个安装程序将会把 svnserve 设置为 Windows 服务,并且还包含了一些你需要的工具,如果你为了安全而使用 SASL。

  2. 如果你已经安装了 Subversion,svnserve 已经运行,你需要在继续之前把它停下来。

  3. 运行 Subversion 安装程序,如果你在你的服务器(推荐)上运行,可以跳过第 4 步。

  4. 打开资源管理器,进入Subversion的安装目录(通常是C:\Program Files\Subversion)的bin目录,找到文件svnserve.exeintl3_svn.dlllibapr.dlllibapriconv.dlllibapriutil.dlllibdb*.dlllibeay32.dllssleay32.dll,复制这些文件,或所有bin目录内的文件到你的服务器目录,例如c:\svnserve

 

运行 svnserve

现在svnserve已经安装了,你需要在你的server运行它,最简单的方法是在DOS窗口或者windows快捷方式输入:

svnserve.exe --daemon

svnserve将会在端口3690等待请求,--daemon选项告诉svnserve以守护进程方式运行,这样在手动终止之前不会退出。

如果你没有创建一个版本库,根据下面的Apache服务器设置指令“配置”一节

为了验证svnserve正常工作,使用TortoiseSVN版本库浏览器来查看版本库。

假定你的版本库位于c:\repos\TestRepo,你的服务器叫做localhost,输入:

svn://localhost/repos/TestRepo

当被版本库浏览器提示输入。

你也可以使用 --root 选项设置根位置来限制访问服务器的目录,从而增加安全性和节约输入 svnserve URL 的时间:

svnserve.exe --daemon --root drive:\path\to\repository\root

以前面的测试为例,svnserve 现在的运行命令为:

svnserve.exe --daemon --root c:\repos

然后在 TortoiseSVN 中我们的版本库浏览器 URL 缩短为:

svn://localhost/TestRepo

注意,当 svnserve 和版本库位于不同分区或盘符时也需要使用 --root 选项。

Svnserve 可以提供任意数量的版本库服务。只要将这些版本库放到你刚才定义的根目录下即可,然后使用相对于根的URL访问它们。

警告

不要创建和访问网络共享上的 Berkeley DB 版本库,它不能存在于一个远程的文件系统,即使是映射到盘符的共享。如果你希望在网络共享使用 Berkeley DB,结果难以预料-你可能会立刻看到奇怪的错误,也有可能几个月之后才发现数据库已经损坏了。

以服务形式运行 svnserve

使用普通用户直接运行 svnserve 通常不是最好的方法。它意味着你的服务器必须有一个用户登录,还要记着重新启动服务器后重新启动 svnserve。最好的方法是将 svnserve 作为 windows 服务运行。从 Subversion 1.4 开始,svnserve 可以安装为 windows 服务。

To install svnserve as a native windows service, execute the following command all on one line to create a service which is automatically started when windows starts.

sc create svnserve binpath= "c:\svnserve\svnserve.exe --service 
    --root c:\repos" displayname= "Subversion" depend= tcpip 
    start= auto

If any of the paths include spaces, you have to use (escaped) quotes around the path, like this:

sc create svnserve binpath= "
    \"C:\Program Files\Subversion\bin\svnserve.exe\"
    --service --root c:\repos" displayname= "Subversion" 
    depend= tcpip start= auto

You can also add a description after creating the service. This will show up in the Windows Services Manager.

sc description svnserve "Subversion server (svnserve)"

注意 sc 的命令行很特殊。在 key= value 对中,key 与 = 之间不能有空格,但是在 value 之前,必须有空格。

提示

Microsoft 现在建议服务程序使用本地服务或网络服务帐户运行,参考 The Services and Service Accounts Security Planning Guide。以本地服务帐户创建服务,需要在上面的例子里追加下面几行。

obj= "NT AUTHORITY\LocalService"

请注意需要给本地服务帐户一些目录的适当权限,包括的 Subversion 和你的版本库,还有所有钩子脚本使用的应用。此帐号的内置组名是"LOCAL SERVICE"。

服务安装完毕后,你需要在服务管理器中启动它(仅此一次;当服务器重启后它会自动启动)。

为了得到更详细的信息,可参考 Windows Service Support for Svnserve

如果你已经使用 SvnService 包装安装了早期的 svnserve,现在想使用内置服务,那么你需要将其从服务中删除(切记先停止服务!)。使用简单的命令

svnservice -remove

即可删除服务。

svnserve 与基本认证

The default svnserve setup provides anonymous read-only access. This means that you can use an svn:// URL to checkout and update, or use the repo-browser in TortoiseSVN to view the repository, but you won't be able to commit any changes.

为了打开对版本库的写访问,你可以编辑版本库目录的conf/svnserve.conf文件,这个文件控制了svnserve守护进程的配置,也提供了有用的文档。

为了打开匿名的写访问,只需要简单得设置:

[general]
anon-access = write

然而,你不会知道谁修改了版本库,因为svn:author属性是空的,你也不能控制谁来修改版本库,这是一个很危险的设置。

解决这个问题的一个方法是创建密码数据库:

[general]
anon-access = none
auth-access = write
password-db = userfile

这里的 userfilesvnserve.conf 文件在同一个目录,这个文件也可以存在于文件系统的其他地方(当多个版本库使用相同的访问权限时尤其有用),可以使用绝对路径,或者是 conf 的相对目录,使用 \ 或盘符不能工作。userfile 的结构如下:

[general]
anon-access = none
auth-access = write
password-db = userfile

这个例子拒绝所有的未认证用户(匿名)访问,给 userfile 中的用户读写权限。

提示

If you maintain multiple repositories using the same password database, the use of an authentication realm will make life easier for users, as TortoiseSVN can cache your credentials so that you only have to enter them once. More information can be found in the Subversion book, specifically in the sections Create a 'users' file and realm and Client Credentials Caching

使用 SASL 以便更安全

什么是 SASL?

Cyrus 简单的认证和安全层(The Cyrus Simple Authentication and Security Layer)是一个由卡耐基梅隆大学编写的开源软件。它可以为任何网络协议增加通用认证和加密的能力,并且从 Subversion 1.5 开始所有的后续版本,包括 svnserve 服务器和 TortoiseSVN 客户端知道如何使用这个库。

要获得这一选项可用性的更充分讨论,你应该看一下 Subversion 手册中的通过 SASL 使用 svnserve 。如果你仅仅是找一种简单的方法为 Windows 服务器设置安全的认证和加密,因此你的版本库可以安全的通过又大又乱的互联网访问,请继续阅读。

SASL 认证

要在服务器上激活详尽的 SASL 功能,你需要做 3 件事。首先,在你的版本库的 svnserve.conf 文件中创建一个 [sasl] 节,包括这样一个配置项:

use-sasl = true

其次,在一个合适的地方创建一个名为 svn.conf 的文件 - 通常在 Subversion 的安装目录中。

第三,创建 2 个新的注册表项目来告诉 SASL 到哪里找到需要的东西。创建一个名为的 [HKEY_LOCAL_MACHINE\SOFTWARE\Carnegie Mellon\Project Cyrus\SASL Library] 注册表键并在其中创建两个新的字符串值:SearchPath 设置为 sasl*.dll 插件所在的目录路径(通常是 Subversion 的安装目录),ConfFile 设置为 svn.conf 文件所在的目录。如果你使用 CollabNet 安装程序,这两个注册表键就已经为你创建好了。

编辑文件 svn.conf,使其包括下列内容:

pwcheck_method: auxprop
auxprop_plugin: sasldb
mech_list: DIGEST-MD5
sasldb_path: C:\TortoiseSVN\sasldb

最后一行指示认证数据库的位置,认证数据库是一个名为 sasldb 的文件。它可以在任何地方,不过一个方便的选择是在版本库的上层目录中。确认 svnserve 服务有读取这个文件的权限。

如果 svnserve 已经在运行,你需要重启服务,并确保它读取了更新后的配置参数。

现在所有的东西已经设置完成,你要做的事情就是创建用户和密码。你需要 saslpasswd2 程序来做这件事。如果你使用 CollabNet 安装程序,这个程序会在安装目录内。使用像这样的命令:

saslpasswd2 -c -f C:\TortoiseSVN\sasldb -u realm username

选项 -f 指明数据库的位置,realm 必须与版本库的 svnserve.conf 文件中设置相同的值, username 就是你要使用的用户名。注意 realm 不允许包含空字符。

你可以使用 sasldblistusers2 程序列出数据库中储存的用户名。

SASL 加密

为了启用或禁用加密的不同等级,你可以设置版本库内文件 svnserve.conf 中的两个值:

[sasl]
use-sasl = true
min-encryption = 128
max-encryption = 256

变量 min-encryptionmax-encryption 控制服务器所需要的加密强度。要完全禁用加密,就将这 2 个变量的值都设为 0。要启用简单的数据校验(例如,为了防止篡改和保证数据的完整,不加密),就将这 2 个值都设为 1。如果你想允许(但不强制)加密,将最小值设为 0,最大值设为任意位数。要强制加密,将这 2 个值设为大于 1 的数字。在前面的例子中,我们要求客户端至少进行 128 位加密,但是不大于 256 位加密。

使用 svn+ssh 认证

另一种 svnserve 认证的方法是使用 SSH 来建立请求通道。它不像设置 SASL 那样简单,但是某些场合却很有用。

通过此方法,svnserve 不会作为守护进程启动,而是 SSH 为你启动 svnserve,以 SSH 认证的用户身份运行,为此,你需要在你的服务器上有 SSH 守护进程。

设置服务器的基本方法请参见附录 G, 用 SSH 使服务器更安全。你可以在常见问题(FAQ)中使用关键词 “SSH” 找到其它 SSH 相关的主题。

更多的关于svnserve的信息可以看《使用 Subversion 进行版本管理》

svnserve 基于路径的授权

从 Subversion 1.3 开始,svnserve 支持与 mod_authz_svn 相同的基于路径的授权模式,你需要编辑版本库路径下的 conf/svnserve.conf 引用的授权文件。

[general]
authz-db = authz
分享到:
评论

相关推荐

    修改基于svnserve配置的subversion服务器密码(使用JSP)

    如果用户不能远程修改自已的密码,非常的不方便也不符合安全性要求。该程序是为能远程修改基于svnserve配置的subversion服务器密码。里面含有详细的操作部署流程。

    Windows基于Apache的svn服务器配置

    Windows基于Apache的svn服务器配置

    Linux下源码编译安装配置SVN服务器的步骤分享

    还有一种是基于svnserve的独立服务器模式。 SVN的数据存储方式也有两种:一种是在Berkeley DB数据库中存储数据;另一种是使用普通的文件FSFS存储数据。 由于Berkeley DB方式在使用中有可能锁住数据,一般建议使用...

    使用Subversion进行版本控制(针对 Subversion 1.4)

    svnserve服务器 svnserve使用SSH通道 Apache 的 HTTP 服务器 推荐 svnserve,一个自定义的服务器 调用服务器 svnserve作为守护进程 使用svnserve通过inetd 通过通道使用svnserve svnserve作为Windows服务 内置的认证...

    SVN操作手册中文版网页格式

    3.6. 基于 svnserve 的服务器 3.6.1. 简介 3.6.2. 安装 svnserve 3.6.3. 运行 svnserve 3.6.3.1. 以服务形式运行 svnserve 3.6.4. svnserve 与基本认证 3.6.5. 使用 SASL 以便更安全 3.6.5.1. 什么是 SASL? ...

    subversion-TortoiseSVN-使用手册(CHM+HTML,中英完整版)

    3.2. Svnserve服务器 3.2.1. 简介 3.2.2. 安装svnserve 3.2.3. 运行svnserve 3.2.3.1. 以服务形式运行svnserve 3.2.4. svnserve的认证 3.2.5. 使用svn+ssh的认证 3.2.6. svnserve以路径为基础的授权 4. 版本库 4.1. ...

    TortoiseSVN

    3.6. 基于 svnserve 的服务器 ............................................. 19 3.6.1. 简介 ......................................................... 19 3.6.2. 安装 svnserve ................................

    svn-1.4.3-setup.exe.7z

    mod_authz_svn 模块可以根据用户名和路径实现细粒度的权限控制,它对 Apache 服务器有效,在 Subversion 1.3 以上版本的 svnserve 中也实现了基于路径的授权。 一个可能的例子: [groups] admin = john, kate ...

    TortoiseSVN中文教程

    iii 目录 前言 ............................................................................................................................................... 配置服务器 ...............................

    TortoiseSVN中文手册

    3.2. 基于 svnserve 的服务器 ............................................. 23 3.2.1. 简介 ......................................................... 23 3.2.2. 安装 svnserve ................................

Global site tag (gtag.js) - Google Analytics