SVN服务器在SVNServer和Apache中搭建之技术分享

开发 项目管理
本文向大家介绍一下SVN服务方面的知识,主要包括用SVNServe搭建SVN服务器和在Apache下建立subversion服务器两部分内容。

本节接着上节和大家一起来学习一下SVN服务的问题,经过一段时间对SVN的学习有了一些心得,于是和大家分享一下,看完本文SVN服务问题的介绍你肯定有不少收获,希望本文能教会你更多东西。

用SVNServe搭建SVN服务器
我们要把svnserve运行起来,我将在例子中介绍具体的使用方法。
下面假设我在本机上运行svnserve,IP为192.168.0.1,这个svn服务器为局域网内的电脑提供svn服务。我打算把svn服务器的访问地址设为http://192.168.0.1/svnprojects/projectX,其中X为不同的多个项目。整个过程如下(以windows下为例):
首先确定repo在本机上的储存的位置,比如我准备把repo放在D:svnprojetcs下,那么在命令行运行svnserve-d-rd:svnprojects就可以了。其中-d参数让svnserve运行在后台,-r参数限定了repo在网络上可以访问的地址。这样如果网络上其它的计算机要checkout这个服务器,只需要输入svncheckoutsvn://192.168.0.1/project1而repo在本机上实际的位置是d:svnprojectsproject1。同理,如果想checkoutproject2,则把上面的project1改成project2就可以了。到此,一个简单的svn服务器就算是基本架设好了。但如果要正常使用,我们还需要设定用户的验证和相应的权限。
现在我们先建立一个叫project1的repo,然后转到project1中:
svnadmincreated:svnprojectsproject1
cdd:svnprojectsproject1
project1目录下有一堆目录,进入conf并打开svnserve.conf这个文件,找到以下几行,并把前面的注解符号‘#’去掉,注意千万在每行的前面别留任何空格。
anon-access=read
auth-access=write
password-db=passwd
其中anon-access和auth-access分别为匿名和有权限用户的权限,默认给匿名用户只读的权限,这很好,我们不需要改它们。但如果想拒绝匿名用户的访问,只需把read改成none就能达到目的。password-db后的passwd则为定义用户名及密码的文件路径。这个文件默认跟snvserve.conf在同一个目录,下面看看怎么配置passwd中的内容。
[user]
#harry=harryssecret
#sally=sallyssecret
harry和sally这两行分别定义了可以对repo进行写入的用户的用户名和密码。我们可以在下面加上自己的用户名和密码,比如testsvn=tester
这样就给了用户testsvn往repo中写的权限。存盘退出后,svn服务器就算正式可以运行了!把所有需要管理的项目都放在d:svnprojects这个目录下,像正常那样用svnadmincreate命令建立repo,如果要checkoutrepo,则在命令行中输入:svncheckoutsvn://192.168.0.1/project1如果要commit刚需要输入刚才设置好的用户名和密码:svncommit-m"wearecommitingchanges!"--usernametestsvn--passwordtester
给Windows用户的建议
如果你打算在Windows系统上运行svnserve,只是简单的在命令行输入svnserve-d-rd:svnprojects不是个好方法,一是每次都这么干太麻烦,二是服务器启动后为了保持它的运行,你必须让命令提示符窗口一直悬在桌面上,影响美观。最好是把svnserve作为系统的一个进程每次启动自动运行:
D:>sccreatesvn
binpath="D:svnbinsvnserve.exe--service-rD:svnprojects"
displayname="SubversionServer"
depend=Tcpip
start=auto把当中的路径换成你的svn安装目录就可以了。
在Apache下建立SVN服务器
在Apache中部署Subversion实际上并不比用svnserve难多少,它的难点在于一般人没有修改Apache配置的权限,如果你有相应的修改权限,那么搭建一个svn服务器不是一件难事,我们来看看应该怎么配置。
准备工作
首先确定Apache正确安装,mod_dav和mov_dav_svn这两个模块也被启用,在Debian系的Linux上可以这么安装:
sudoapt-getinstallapache2subversionlibapache2-svn
在Windows平台上,可以下载一个XAMPP,ApacheMySQLPHP什么的就都有了。
确定mod_dav和mod_dav_svn被打开:a2enmoddavdav_svn
基本设置
SVN服务介绍时以上的准备工作做完后,就正式开始了,还是拿part2的机器网络环境,同样的例子。
我准备让repo的网络访问地址成为http://192.168.0.1/svnprojects/projectX,
修改/etc/apache2/conf下的httpd.conf,加入如下代码:
<Location/svnprojects>
DAVsvn
SVNParentPath/path/to/svnprojects
</Location>
更多详细的<Location>命令用法请参见Apache手册,下同。SVNParentPath命令用来把网络访问地址和repo的实际地址对应起来。
这样就设置完了,如果你把repo建立好了,现在就已经可以checkout了,输入:svncheckouthttp://192.168.0.1/svnprojects/project1设定用户的权限和验证
但这样肯定是不够的,因为还没有设定相应的用户权限,现在不管谁都可以往repo里塞东西,为了更好的控制,我们还需要设定访问权限,比如让指定的用户可以commit,其他的只能checkout。因为我们在Apache上,所以访问权限的控制就可以直接借用Apache的,首先为你的用户设定用户名和密码:
htpasswd-cmb/path/to/passwdfile/passwordsuser1test1这样就把用户名和密码储存在passwords中了,加密方式为MD5。如果需要添加新的用户,htpasswd-mb/path/to/passwdfile/passwordsuser2test2以此类推。
然后回到我们在httpd.conf中添加的代码,修改一下:
 

  1. <Location> 
  2. DAVsvn  
  3. SVNParentPath/path/to/svnprojects  
  4. AuthTypeBasic  
  5. AuthName"TestRepository"  
  6. AuthUserFile/path/to/passwdfile/passwords  
  7. <LimitExceptGETPROPFINDOPTIONREPORT> 
  8. Requirevalid-user  
  9. </LimitExcept> 
  10. </Location> 

在这段代码的控制下,任何人都可以对repo进行checkout,但只有user1和user2才可以commit,<LimitExcept>的作用是控制HTTP请求,如果HTTP请求是GETPROPFINDOPTIONREPORT中的一种,则不需要去验证用户。
最后,你需要把repo所在的目录和文件的所有权都改成系统中操作Apache的用户,这样在commit的时候才会被Apache认可。在Ubuntu中,这个用户叫www-data:
sudochown-Rwww-data/path/to/repo如果你用其它系统或是用Windows,可以在Apache的配置文件中找到User这个命令来知道应该把目录的所有权交给谁。
以上就是一个初步的Subversion服务器的搭建,这一篇考虑到实际上用的人可能不多,要用的人估计肯定会自己配置,因此我写的不够细致,比如说没有说到基于SSL的设置步骤。本节关于SVN服务问题讲解完毕,请关注本节其他相关报道。

 【编辑推荐】

  1. 技术分享 SVNServe如何建立SVN服务
  2. 配置本地SVN服务器简明步骤详解
  3. ApacheSVN服务器安装指导手册
  4. 六小步轻松实现在Centos上配置SVN服务器
  5. SVN服务器安装指导手册
责任编辑:佚名
相关推荐

2014-08-06 11:25:00

LinuxSVN服务器

2010-06-02 19:48:23

搭建SVN服务器

2010-06-02 16:32:28

SVN代码管理

2010-05-25 09:32:04

搭建SVN服务器

2010-06-02 18:51:35

搭建SVN服务器

2010-05-19 17:06:33

Subversion服

2010-05-24 09:59:54

SVN服务器搭建

2010-06-02 13:05:52

tomcat和svn

2010-05-21 13:07:14

Windows下SVN

2010-02-24 10:25:21

2010-05-25 08:46:12

2010-05-24 09:24:18

SVN服务器搭建

2010-06-02 18:38:08

搭建SVN服务器

2020-03-03 19:24:30

Web服务器ApacheTomcat

2010-05-21 11:50:54

IIS服务器

2010-05-17 16:50:38

IIS服务器

2010-05-27 16:06:13

SVN设置

2011-01-10 14:48:22

2010-06-02 19:01:38

搭建SVN服务器

2011-03-11 15:52:59

LAMP优化
点赞
收藏

51CTO技术栈公众号