`
韩悠悠
  • 浏览: 839970 次
  • 性别: 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服务器中,管理员通常需要手动更改用户的密码,这可能对用户造成不便,特别是在大型团队协作环境中。本文将详细介绍如何通过JSP实现远程修改基于svnserve配置的Subversion服务器密码...

    Linux下SVN服务器同时支持Apache的http和svnserve独立服务器两种模式且使用相同的访问权限账号

    本文将详细介绍如何在Linux环境下配置SVN服务器,使其能够同时支持通过Apache HTTP服务器提供的HTTP访问方式以及通过svnserve提供的独立服务器模式访问,并确保这两种访问方式使用相同的用户权限。 #### 实现目标...

    ubuntu下简单安装svn服务器

    以上就是基于Ubuntu系统安装和使用SVN服务器的基本步骤和知识点。由于SVN在版本控制领域的重要性和实用性,掌握其在Linux下的安装和配置是非常必要的。本指南为初学者提供了一个较为全面的入门教程,但实际操作时还...

    svn服务器配置.doc

    本文将基于给定的文件信息,深入解析如何在Windows环境下搭建SVN服务器,包括前期准备、服务器端和客户端的安装、版本库的建立、服务器的运行以及如何将其注册为Windows服务。 #### 一、前期准备 在搭建SVN服务器...

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

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

    svn服务器搭建步骤文档和svn服务器exe

    - **配置仓库**:根据需求配置仓库的访问权限,可以使用`svnserve.conf`(对于svnserve服务)或`httpd.conf`(对于基于Apache的服务)进行设置。 - **启动服务**:启动SVN服务器服务,如使用`svnserve -d`命令启动...

    Linux-FTP和SVN服务器的配置服务器教程-电脑资料.doc

    Linux FTP和SVN服务器配置教程 FTP(File Transfer Protocol)是一种用于在网络上进行文件传输的标准协议,常被用来在不同计算机之间共享文件。在Linux环境中,VSFTPD(Very Secure FTP Daemon)是一个流行的FTP...

    svn jsvnadmin 搭建 svn服务器

    `svnserve`是SVN服务器的一个轻量级守护进程,用于提供SVN服务。 其次,`jsvnadmin`是Jungle SVN项目的一部分,它是一个基于Java的SVN管理员工具,提供了创建、删除、备份、恢复仓库等功能,相比标准的`svnadmin`,...

    阿里云ESC服务器搭建svn服务器

    2. **操作系统**:本教程基于CentOS 7系统进行演示。 3. **网络环境**:服务器能够正常访问互联网。 #### 三、安装Subversion 1. **打开终端**:首先,通过SSH连接到您的阿里云ESC服务器。 2. **安装Subversion**:...

    svn安装与服务器搭建完整版

    本教程将详细讲解如何进行SVN的安装与服务器搭建。 一、SVN的安装 1. **Windows系统安装**: 可以通过下载`VisualSVN Server`进行安装,这是一个易于使用的SVN服务器管理工具。下载完成后,按照向导进行安装,设置...

    svn客户端和svn服务器

    svn服务器通常基于Apache Subversion服务器软件,像"Setup-Subversion-1.6.5.msi"这样的安装包就是用来在本地计算机上设置svn服务器的。 安装svn客户端: 1. 下载并运行"TortoiseSVN-1.6.6.17493-win32-svn-1.6.6....

    mac下配置svn服务器.docx

    - **svnserve.conf** 是SVN服务器的配置文件,其中定义了访问规则。例如,你可以设置匿名用户和已认证用户的访问权限。以下是一个示例配置: ``` [general] anon-access = none auth-access = write password-...

    svn配置文件...............

    2. **配置文件**:在SVN服务端,主要的配置文件是`svnserve.conf`(对于svnserve守护进程)和`httpd.conf`(对于基于Apache的服务)。`svnserve.conf`包含了如仓库路径、匿名访问权限、用户认证方式等设置。`httpd....

    svn服务器搭建

    本文将详细介绍基于 Apache 服务器的 Subversion 安装与配置过程,Subversion 是管理工程本版的必备工具,对比 vss 及其前身 cvs 都有着无与伦比的优势。 一、安装 svn 依赖包 在安装 svn 之前,需要安装相关依赖...

    小米路由R1D上的svn服务器程序

    这是一款基于Linux系统的智能路由器,它提供了一定的计算能力和存储空间,可以进行一些轻量级的服务器功能部署。在这样的设备上架设SVN服务器,可以帮助远程或本地的开发者同步代码、管理项目版本。 Subversion的...

    linux下安装配置svn独立服务器.pdf

    5. 授权规则文件`authz.conf`允许基于路径的访问控制,可以根据需要编写具体规则。 完成以上步骤后,SVN服务器已配置完毕。通过启动`svnserve`服务,即可开始使用。在需要的时候,可以使用`svnserve -d -r /opt/...

Global site tag (gtag.js) - Google Analytics