博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
基于svnserve的SVN服务器(windows下安装与配置)
阅读量:5982 次
发布时间:2019-06-20

本文共 3887 字,大约阅读时间需要 12 分钟。

基于svnserve的SVN服务器(windows下安装与配置)

关键字: svn

安装SVNserve

从得到最新版本的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 认证。

转载地址:http://vxeox.baihongyu.com/

你可能感兴趣的文章
Scala模式匹配的亮点——Martin Odersky访谈(四)
查看>>
2018 GitHub最火技术趋势
查看>>
Uber提出基于Metropolis-Hastings算法的GAN改进思想
查看>>
Netty消息接收类故障案例分析
查看>>
解读:Java 11中的模块感知服务加载器
查看>>
端到端的超媒体REST API设计
查看>>
让天下没有难做的研发:解读阿里CI/CD、DevOps、分层自动化技术
查看>>
专访英特尔(中国)开源技术中心:HTML5要如何达到原生性能
查看>>
为了云,阿里、腾讯和百度一年花了多少钱?
查看>>
最新的Java SE平台和JDK版本发布计划
查看>>
英国政府的开源开发
查看>>
Spark Summit EU重头戏:TensorFlow、结构化的流和GPU硬件加速
查看>>
安全半月谈:Mozilla遭入侵、GitHub被DDoS
查看>>
DevOps采用现状情况报告
查看>>
Eclipse发布MicroProfile 1.4和2.0
查看>>
Mozilla工程师观点:开源不赚钱,因为它不是为赚钱而设计的
查看>>
经纬中国熊飞:底层技术创业的春天来了
查看>>
亚马逊发布 Corretto 8 GA 版本
查看>>
云监控状态调查:公有云和混合云的监控成熟度落后于传统数据中心
查看>>
半数以上国产手游曾使用他开源的引擎:Cocos和王哲的故事 | 二叉树视频
查看>>