使用Apache2.2和SVN1.6搭建SVN版本控制平台

1、安装Apache
直接安装Apache软件,在安装过程输入信息前两项Network Domain和Server Name中都输入localhost,下面那个email就随便了,如果机器安装了iis并且启动中,要先把iis服务停掉。否则会和apache的监听端口冲突的。
2、安装Subversion
注:如果是1.4.6版本则有exe二进制安装文件,而1.6目前只有source版,解压下来即可用.
3、集成Apache与subversion
第一步:
复制svn安装路径\bin中的文件mod_dav_svn.so和mod_authz_svn.so,将它们拷贝到Apache的modules目录下,复制SVN\bin\libdb44.dll、libeay32.dll、以及 ssleay32.dll到 Apache\bin下。
第二步:
使用记事本之类的文本编辑器编辑Apache的配置文件\conf\httd.conf做如下修改:
去掉以下行的注释(将开头的#删除):
#LoadModule dav_fs_module modules/mod_dav_fs.so
#LoadModule dav_module modules/mod_dav.so
在LoadModule节的最后添加以下两行:
LoadModule dav_svn_module "C:/Program Files/Subversion/bin/mod_dav_svn.so"
LoadModule authz_svn_module "C:/Program Files/Subversion/bin/mod_authz_svn.so"
第三步:
在这个文件的最后,追加如下语句:
<Location /repository>
DAV svn
SVNParentPath D:/SVN/repository
</Location>
其中/repository是告诉Apache使用这个URI作为SVN的访问点,可以任选;下面D:/SVN/repository是SVN仓库的存储位置,也可以自己任选,但是这个目录一定要存在。
上面这种是多库的配置方式,对于单库,可以把SVNParentPath变成SVNPath。这两个啥区别?简单来说,多库就是下面可以有多个repository,比如可以用http://localhost/repository/repo01,http://localhost/repository/repo02来访问不同的repository,对应于D:/SVN/repository下面的子目录repo01,repo02,而单库只能用http://locahhost/repository/,来访问唯一的repository。
    心急的人现在可能就去访问这几个link了,是不是结果让你失望啊?因为我们还没有建立repository,当然不能访问, 建立的方法是用SVN安装目录\bin下面的svnadmin.exe,在命令行输入“svnadmin create D:/SVN/repository/repo01”,就建立了repo01,然后重启Apache,再访问http://localhost/repository/repo01,是不是看到了“Revision 0: /”?这说明版本库已经开始运作了(初始版本0)。
4、基本认证和权限控制
SVN repository成功跑起来,你的repository总要搞个用户名密码?此外 你可能还需要给不同的帐户或角色在不同的目录上赋予不同的权限(只读、可写。
更改第三步中的设置
<Location /repository>
DAV svn
SVNParentPath "D:/SVN/repository"
AuthType Basic
AuthName "your-name's subversion repository"
AuthUserFile "D:/SVN/svn_auth"
Require valid-user
</Location>
    红色这几行就是我们要的,其中AuthName随便写问题不大,那个AuthUserFile也随便放,里面存的是用户名和密码。注意这个文件是 Apache生成的,可不是你随便建立个文本文件把用户名密码写进去就OK:) 具体是用Apache的htpasswd命令:
htpasswd -c filename username                #新建一个password file,并写入username的信息,回车后提示你输入密码
htpasswd filename username                #在当前password file里面追加一个username的信息
    这一步做好后,重启Apache,再用浏览器访问你的repository,是不是提示你输入用户名和密码了
    基本的认证就是这样,接下来是权限。还是照例先改httpd.conf:
<Location /repository>
DAV svn
SVNParentPath "D:/SVN"
AuthzSVNAccessFile "D:/SVN/svn_rule"
AuthType Basic
AuthName "your-name's subversion repository"
AuthUserFile "D:/SVN/svn_auth"
Require valid-user
</Location>

这个svn_rule是啥?其实就是个文本文件,这里没加扩展名是Unix的风格, 这个文件里定义了每个帐号或者每个角色可以干什么。看几个例子:
[repo01:/]
user1 = rw
user2 = r
对于多库,定义其中的一个repo01下的所有目录,允许user1读写,user2只读
[repo01:/Project1]
user1 = rw
user2 = r
和上面类似,只不过规定细化到了子目录:)
[/Project1]
user1 = rw
user2 = r
这个说的是单库的情况:)
[groups]
admin = user1, user3
readonly = user2, user4

[repo01:/]
@admin = rw
@readonly = r
这个就是设定角色了,和前面的区别主要是有了group,然后group的名字前面有@,为了和用户名区分。

猜你喜欢

转载自ligure.iteye.com/blog/912138
今日推荐