svn服务器配置笔记

        前几天在网上找资料给我们的项目配了一个SVN服务器,今天想把这些资料和心得写下来,以后用得着!

一、准备工作

1、下载subversion,地址:http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=11151&expandFolder=11151&folderID=91。这里有各个版本的安装文件,我用的是1.6.1windows msi格式的安装文件,这个版本的安装文件支持用Apache服务器作为SVN服务器,Apache服务器版本要求2.2以上。

2、下载TortoiseSVN,地址:http://tortoisesvn.net/downloads

3、下载IDE插件,如果用visual studio2005,2008或者2010作为开发环境,可以下载AnkhSVN插件来在visual studio中利用SVN管理源代码,地址:http://ankhsvn.open.collab.net/downloads。如果是用Eclipse或者MyEclipse作为开发环境,可以下载subeclipse插件来在Eclipse中利用SVN管理源代码 http://subclipse.tigris.org/servlets/ProjectProcess?pageID=p4wYuA。我们项目用的是c#开发,所以我们用的IDE是vs2008,所以下面主要介绍的是在vs2008上安装AnkhSVN插件来管理源代码。

4、下载Apache服务器,地址:http://httpd.apache.org/download.cgi,在Apache官网上可以找到2.2以上版本的Apache服务器。

二、安装

这几个软件的安装都很傻瓜式,都是一直next到最后,TortoiseSVN安装完后需要重启系统,不过如果安装了AnkhSVN插件的话,TortoiseSVN不是必须的。

安装好AnkhSVN后,打开vs2008,打开菜"工具"->选项,找到souce control 选择”插件选择“在右边的插件选择下拉列表中选择AnkhSVN-subversion support for visual studio。这样visual studio就会出现相应的菜单和界面,然后就可以在visual studio上直接进行svn操作了。

三、建立版本库

安装subversion的时候会自动配置好环境变量。建立版本库可以直接通过dos命令,或者用TortoiseSVN。我这里介绍用dos命令创建版本库。打开dos界面,输入:

svnadmin create e:\svn\repository

这样就在e盘的svn目录下建立了名为repository的版本仓库。在repository文件夹下subversion会自动建立一些文件夹,待会儿会讲到。

四、架设SVN服务器

svn服务器的架设有两种方式:
一是基于svnserve,这种方式是让客户端通过svn协议访问版本库,如果代码只是在局域网内共享的话,优先考虑这种方式,因为这种方式最原始,最高效。

二是基于Apache服务器,这种方式是让客户端通过http协议访问版本库,当代码需要跨网共享的时候,我们就要用到这种方式了。

架设基于svnserve的svn服务器,在dos界面输入以下命令:

svnserve --daemon --root e:\svn

这个命令在服务器端建立了一个守护线程监听3690端口(svn默认端口)等待请求。dos窗口不能关闭,否则守护线程退出。这个方法不是最好的方法,因为这样,每次重启服器的时候都要重新打开一个dos窗口,并且要一直保持dos窗口。最好的方法是将svnserve作为windows服务运行,运行如下命令:
      sc create svnserve binpath= "c:\svnserve\svnserve.exe --service 

     --root c:\repos" displayname= "Subversion" depend= tcpip start= auto

sc 的命令行很特殊。在 key= value 对中,key 与 = 之间不能有空格,但是在 value 之前,必须有空格。服务安装完毕后,你需要在服务管理器中启动它(仅此一次;当服务器重启后它会自动启动)。可以通过TortoiseSVN的访问svn://localhost/repository测试svn服务器是否架设成功。

架设基于Apache服务器的svn服务器。

找到 Subversion 安装目录下的以下文件:

bin/mod_authz_svn.so
bin/mod_dav_svn.so

复制到 Apache 安装目录下 modules 目录中

bin/intl3_svn.dll
bin/libdb*.dll
复制到 Apache 安装目录下 bin 目录中(这里似乎并不是必须的,我猜想这里或许是为了支持 Berkeley DB 而所作的操作,但我并不打算深入研究下去)

找到 Apache 安装目录下 conf/httpd.conf 文件,用文本编辑器修改:

找到以下两句取消注释:

#LoadModule dav_fs_module modules/mod_dav_fs.so
#LoadModule dav_module modules/mod_dav.so


增加以下两句

LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so

在Apache的conf/httpd.conf文件,在末尾添加以下内容

#配置虚拟目录
<location /svn>
#引用远程访问模块
DAV svn

#版本库路径
SVNPath e:\SVN\Repository

#授权文件
AuthzSVNAccessFile e:\SVN\Repository\conf\authz

#所有用户都需要身份验证
Satisfy Any
Require valid-user

#验证方式
AuthType Basic

#项目的名称
AuthName "svn repository"

#用户文件
AuthUserFile e:\SVN\Repository\conf\passwd.apache
</location>

      这样基于Apache服务器的svn服务器就配置好了,下面我们就可以进行权限配置了。

五、权限控制

 上面说过,建立版本库后,subversion会在版本库中建立若干文件夹,其中conf文件夹就是进行权限控制配置的,里面有三个文件svnserve.conf,password,authz。用记事本打开svnserve.conf文件:找到以下两行:
#password-db = passwd
...
#authz-db = authz

修改为:
password-db = passwd
...
authz-db = authz

用户配置,用记事本打开password文件,添加如下几行:
[users]
admin = admin
thinker = 123456

这里配置了两个用户,用户名分别为"admin"和"thinker"。其中"admin"用户的口令为"admin";"thinker"用户的口令为"123456"。如果是Apache服务器的话,password文件应该由Apache来生成,因为在 Subversion 和 Apache 中无法使用相同的 passwd 文件,因为 Apache 是以加密方式存储密码,而 Subversion 使用明文储存密码,所以要使用Apache服务器就要使用Apache生成的passwd文件。

使用Apache的bin目录下的htpasswd.exe可执行文件生成用户文件,第一次生成使用-cb参数,添加新用户使用-b。
htpasswd -cb [filename] [username] [password]

如:

htpasswd -cb passwd.apache islee 123
htpasswd -b passwd.apache another 456

然后将生成的passwd.apache文件拷到版本库的conf文件夹下,并将Apache conf文件夹下的httpd.conf刚刚添加的<location>段AuthUserFile属性值改为passwd.apache文件。

组和权限配置

用文本编辑器打开authz文件,添加如下文字:

[group]

all=thinker,admin

 

[/]

@all=rw

*=r

上面两段文字的意思是,添加一个用户组all,包括admin合thinker两个用户,对所有库给all用户组添加读写权限,所有用户添加读权限。

Apache服务器配置好后就可以在浏览器中通过输入http://localhost/svn测试。

 

 



 

posted @ 2010-09-28 00:14  IT_chen  阅读(1287)  评论(0编辑  收藏  举报