您的位置:首页 > 其它

windows系统搭建svn服务器

2010-03-04 09:37 477 查看
本文阐述Apache+mod_dav_svn配置方式。这种方式更灵活(例如无须开放额外的端口),但配置会复杂一些。Subversion通过Apache使用WebDAV协议来提供服务,客户端使用标准的http://打头的URL访问服务器上的资源。

软件版本
Subversion:svn-win32-1.4.6-Apache 2.2.x.zip(查看README.txt文件,These binaries were built with: Apache 2.2.6,该二进制包支持Apache2.2.X版本)
Apache:apache_2.2.8-win32-x86-no_ssl.msi

安装目录结构



图1(安装目录结构)





图2(svn目录结构)





图3(svn项目库目录结构)

1、 安装Apache。将Apache安装成 for all Users,on Port 80,as a service。(注意:如果已经有一个IIS或者其它的程序使用80端口,安装可能会失败。如果是这样,可以到程序目录下的Apache Group/Apache2/conf目录中找到文件httpd.conf,将Listen 80改成一个不用的端口,比如Listen 8999。然后重新运行安装程序。)
在这里安装路径为:C:/Java/Apache2.2,端口为:8999。
Apache安装结束后,在浏览器地址栏输入http://localhost:8999,若呈现了一个已经配置好的网站,那么Apache就安装成功了;



图4(Apache安装成功)

2、 停止Apache服务;

3、 复制svn文件到apache。将svn-win32-1.4.6/bin目录里所有的.so文件和.dll文件拷贝到Apache2.2/modules目录里。
其中mod_dav_svn.so是包含apache应该怎么处理svn的相关操作
而mod_authz_svn.so是包含apache怎么去判断权限的方法。对于个人开发可以不用加载mod_authz_svn.so.但对于团队开发最好就加上,方便管理。

4、 修改apache的conf/httpd.conf文件,配置apache处理svn。
去掉以下行的注释(将开头的#删除):
1. #LoadModule dav_fs_module modules/mod_dav_fs.so
2. #LoadModule dav_module modules/mod_dav.so
在LoadModule节的最后添加以下两行:
1. LoadModule dav_svn_module modules/mod_dav_svn.so
2. LoadModule authz_svn_module modules/mod_authz_svn.so
到此已把svn需要的程序加载进Apache,已完成Apache和Subversion安装配置,但Apache还不知道怎么去处理svn,接下来需要设定Apache的svn访问路径,让Apache知道哪个URL将被Subversion使用;

5、 设定访问权限。在设定访问路径前,可以先建立访问权限和访问密码。
配置访问权限定义文件C:/Java/svn/passwords/ svnaccessfile.txt,该文件用于定义用户组和授权,但不包括用户和密码的管理。在设置该配置文件前需要预先规划好版本库的目录结构,这些目录结构将对哪些用户或/和组开放,是允许读还是允许读写。
#groups节中创建用户组
[groups]
admin = chenhao
devteam1 = chenhao,suzg
#/节是指整个版本库根目录的权限控制,所有人可读,允许admin组读写
[/]
* = r
@admin = rw
#允许devteam1组对dwgh读写 允许devteam2组对cwb读写
[dwgh:/]
@devteam1 = rw
该配置文件类似于一个ini文件,其中含有3种段:
1) groups段
在该段中定义组名及该组包括的用户名,格式为group_name = user1, user2, user3
2) 未指定版本库的目录授权段
段名的格式为[/directory_name],directory_name是要授权的目录。因为没有指定版本库的名称,这种段通常适用于只有一个版本库的情况。
在该段中定义用户或组对该目录的访问授权,格式为user_name = privileges或@group_name = privileges,其中privileges可以是r,w,rw或空,对应的权限分别是读,写,读写或无权限。
3) 指定版本库的目录授权段
段名的格式为[repository_name:/directory_name],其中repository_name是指定的版本库名称,通常为创建版本库时的顶级目录名称。段中定义同第2)部分。

6、 设定访问密码
进入到Apache目录:cd C:/Java/Apache2.2/bin
生成用户密码文件:htpasswd -c passwords chenhao
Passwords是要生成的用户密码文件名,chenhao是用户,确定后会提示输入密码,输入结束后会在apache根目录生成passwords.pass密码文件,再将该密码文件移动到C:/Java/svn/passwords目录下即可。
注:也可用批处理进行用户批量添加,参见批处理文件:SvnPassword.bat。

7、 设定Apache的svn访问路径。在conf/httpd.conf配置文件的最后追加一下内容:
<Location /svn>
DAV svn
SVNListParentPath on
SVNParentPath C:/Java/svn/projects
AuthType Basic
AuthName "Subversion repositories"
AuthUserFile "C:/Java/svn/passwords/passwords.pass"
AuthzSVNAccessFile "C:/Java/svn/passwords/svnaccessfile.txt"
Require valid-user
</Location>
<Location /svn>
意味着可以通过像这样的URL(http://MyServer/svn)来访问Subversion版本库

DAV svn
告诉Apache哪个模块负责服务像那样的URL--在这里就是Subversion模块

SVNListParentPath on
在Subversion 1.3及更高版本中,这个指示器使得Subversion列出由SVNParentPath指定的目录下所有的版本库

SVNParentPath C:/Java/svn/projects
告诉Subversion在目录D:/SVN下寻找版本库

AuthType Basic
启用基本的验证,比如用户名/密码对

AuthName "Subversion repositories"
当一个验证对话框弹出时,告诉用户这个验证是用来做什么的

AuthUserFile C:/Java/svn/passwords/passwords.pass
指定D:/passwd用为密码文件用来验证用户的用户名及密码

AuthzSVNAccessFile C:/Java/svn/passwords/svnaccessfile.txt
指定D:/svnaccessfile来限定各个用户或组在版本库中目录的访问权限

Require valid-user
限定用户只有输入正确的用户名及密码后才能访问这个路径

8、 建库。以上文件目录结构规划、配置已结束,接下来建立svn储存代码库。
进入到Subversion目录:cd C:/Java/svn-win32-1.4.6/bin
建立新库:svnadmin create C:/Java/svn/projects/dwgh,即可生成下图目录结构:



图5(dwgh项目库结构)

9、 重启Apache服务器,请求svn项目路径http://localhost:8999/svn/dwgh,第一次请求需要验证用户名密码,若环境搭建成果即可出现下图结果




图6(安装成功)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: