zoukankan      html  css  js  c++  java
  • 基于svnserve的SVN服务器(windows下安装与配置)

    基于svnserve的SVN服务器(windows下安装与配置)
    关键字: svn

    安装SVNserve

    http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=91得到最新版本的Subversion。
    如果你已经安装了Subversion,svnserve已经运行,你需要在继续之前把它停下来。

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

    打开资源管理器,进入Subversion的安装目录(通常是C:Program FilesSubversion)的bin目录,找到文件svnserve.exe,intl3_svn.dll,libapr.dll,libapriconv.dll,libapriutil.dll,libdb*.dll,libeay32.dll和ssleay32.dll,复制这些文件,或所有bin目录内的文件到你的服务器目录,例如c:svnserve。

    运行SVNSERVE

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

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

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

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

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

    svn://localhost/repos/TestRepo
    当被版本库浏览器提示输入。

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

    svnserve.exe --daemon --root drive:pathtorepositoryroot
    以前面的测试为例,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 服务。

    为了将 svnserve 安装为 Windows 服务,在一行内执行下面的命令,创建一个当 Windows 启动后,自动启动的服务。

    sc create svnserve binpath= "c:svnservesvnserve.exe --service     --root c:repos" displayname= "Subversion" depend= tcpip start= auto
    如果任一个路径包含空格,你必须使用双引号(逃逸字符)包含路径,例如:

    sc create svnserve binpath= ""C:Program FilesSubversionbinsvnserve.exe"    --service --root c:repos" displayname= "Subversion" depend= tcpip start= auto
    在创建服务以后,你还可以增加描述。它在 Windows 服务管理器中显示。

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

    提示

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

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

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

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

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

    svnservice -remove
    即可删除服务。

    SVNSERVE的认证

    缺省的 svnserve 配置提供了匿名的只读访问。这意味着你可以使用 svn:// 的 URL 进行检出和更新,或者使用 TortoiseSVN 的版本库浏览器查看版本库,但是不能提交任何修改。

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

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

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

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

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

    [general]anon-access = noneauth-access = writepassword-db = userfile
    这个例子拒绝所有的未认证用户(匿名)访问,给 userfile 中的用户读写权限。

    提示

    如果使用相同的密码数据库维护多个版本库,使用一个认证域将让用户的工作更加简单,因为 TortoiseSVN 可以缓存你的凭证,所以你只需要输入一次,更多的信息可以参考 Subversion 手册的 创建用户文件和域 和 客户端凭证缓存。

    使用SVN+SSH认证

    另一种svnserve认证的方法是使用SSH来建立请求通道。

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

    It is beyond the scope of this documentation to detail the installation and setup of a secure shell, however you can find further information in the TortoiseSVN FAQ, SSH How-To. You can find other SSH topics within the FAQ by searching for “SSH”.

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

    SVNSERVE基于路径的授权
    从Subversion1.3开始,svnserve支持与mod_authz_svn相同的路径为基础的授权模式,你需要编辑版本库路径下的conf/svnserve.conf引用的授权文件。
    [general]authz-db = authz
    在这里,authz是你创建用来定义访问权限的文件,你可以为每一个版本库使用单独的文件,或者为所有的版本库使用相同的文件,关于此文件的格式可以查看“路径为基础的授权”一节。

    支持SASL

    从 Subversion 1.5.0 开始,svnserve 和 TortoiseSVN 支持 svn:// 协议的 Cyrus SASL(简单认证和安全层)。你可以在 Subversion 程序笔记中找到更多信息:在 Subversion 中使用 Cyrus SASL 认证。

  • 相关阅读:
    Java开发环境搭建(一)
    Android随笔之——Android广播机制Broadcast详解
    Ubuntu 14.04 LTS中怎样安装fcitx中文输入法
    Jenkins:容器化微服务持续集成-高配版
    Jenkins:容器化微服务持续集成-低配版
    JVM(1):JVM与Java体系结构
    RocketMQ:集群搭建
    RocketMQ:单机搭建
    Spring Cloud OAuth2:分布式认证授权
    Spring Security OAuth2:SSO单点登录
  • 原文地址:https://www.cnblogs.com/xd502djj/p/1777492.html
Copyright © 2011-2022 走看看