一.环境配置
Windows (2003,xp)+ Subversion1.6.6+ apache2.2.16+ TortoiseSVN 1.6.6.12
1. Subversion
安装包 (服务器端) http://subversion.tigris.org
2. TortoiseSVN (客户端) http://tortoisesvn.net
3 apache2.2.16 , http://www.apache.org
二.配置Appche
1步骤如下:
1) 复制C:\Program Files\Subversion \bin目录下的mod_dav_svn.so、mod_authz_svn.so到C:\Program Files\Apache Software Foundation\Apache2.2\modules目录下。
2) 复制C:\Program Files\Subversion \bin目录下的所有dll文件(共17个文件)到C:\Program Files\Apache Software Foundation\Apache2.2\bin目录下
3) C:\Program Files\Apache Software Foundation\Apache2.2\conf\httpd.conf配置文件,找到#LoadModule dav_module modules/mod_dav.so和#LoadModule dav_fs_module modules/mod_dav_fs.so文件 ,并取消前面的“#”。并在LoadModule dav_fs_module modules/mod_dav_fs.so的下一行增加:LoadModule dav_svn_module modules/mod_dav_svn.so和LoadModule authz_svn_module modules/mod_authz_svn.so,一个语句一行,最后的形式为:
LoadModule dav_module modules/mod_dav.so
LoadModule dav_fs_module modules/mod_dav_fs.so
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module
modules/mod_authz_svn.so
2. 使用Apache自带的htpasswd工具,生成密码文件,操作如下:
1) 建立C:\Program Files\Apache Software Foundation\Apache2.2\conf_svn目录
2) 在DOS界面,输入如下命令:
C :\ \Apache\Apache2\bin > htpasswd -cm
d:\svndata\test\passwd user1 //用htpasswd命令创建第一个用户(user1),同时生成密码认证文件,c参数为create,m参数为MD5加密方式
New password: ******
Re-type new password: ******
Adding password for user user1 //加入用户成功
C:\Program Files\Apache Group\Apache2\bin>
htpasswd -m d:\svndata\test\passwd user2 //用htpasswd命令创建第二个用户(user2),注意如果在这时加入c参数会覆盖掉之前创建的用户及文件。
New password: ******
Re-type new password: ******
Adding password for user user2 //加入用户成功
三.SVN配置
版本库配置
首先创建版本库存储位置,如:D:\svnserver\repository。
版本库分单库模式和多库模式,简单的说多库就是在\repository目录下有多个版本库,比如可以用http://localhost/repository/repo01,http://localhost/repository/repo02,...来访问不同的版本库,这些版本库对应于D:\svnserver\repository下面的子目录repo01、repo02,…。而单库只能用http://localhost/repository来访问唯一的版本库。
1. 单库模式配置
打开配置文件:
C:\Program Files\Apache Software Foundation\Apache2.2\conf\httpd.conf,在文件最后增加:
<Location /repository>
DAV svn
SVNPath "D:\svnserver\repository"
AuthType Basic
AuthName "LiMengLei subversion repository"
AuthUserFile "C:\Program Files\Apache Software Foundation\Apache2.2\conf_svn\passwd"
Require valid-user
</Location>
配置表示:你所有的版本库将位于D:\svnserver\repository目录下,要访问你的版本库可以使用这样的URL:http://YourIP/ repository /,访问权限将由passwd文件中的用户名/密码来限制。
详细说明如下:
---------------------------------------------------------------------
<Location /repository > //访问SVN服务器的URL组成模式
意味着可以通过这样的URL(http://serverIP/ repository)来访问Subversion版本库
DAV svn
告诉Apache哪个模块负责负责上面的URL--在这里就是Subversion模块
SVNPath "D:\svnserver\repository"
告诉Subversion在目录D:\svnserver\repository下寻找版本库
AuthType Basic
启用基本的验证,比如用户名/密码
AuthName "LiMengLei subversion repository"
当一个验证对话框弹出时,告诉用户这个验证是用来做什么的
AuthUserFile "C:\Program Files\Apache Software Foundation\Apache2.2\conf_svn\passwd"
指定C:\..\passwd作为密码文件用来验证SVN用户的用户名及密码
Require valid-user
限定用户只有输入正确的用户名及密码后才能访问这个路径
若想配置无需用户名验证的登录方式,可在httpd.conf的最后添加如下内容:
<Location /repository>
DAV svn
SVNPath "D:\svnserver\repository"
</Location>
2. 多库模式配置
多库模式的配置方式实际上就是将SVNPath "D:\svnserver\repository"中的SVNPath变为SVNParentPath。全部文件如下:
<Location /repository>
DAV svn
SVNParentPath "D:\svnserver\repository"
AuthType Basic
AuthName "LiMengLei subversion repository"
AuthUserFile "C:\Program Files\Apache Software Foundation\Apache2.2\conf_svn\passwd"
Require valid-user
</Location>
3. 运行版本库
1).若已安装TortoiseSVN,在D:\svnserver目录下,选中repository文件夹,右键TortoiseSVN--->Create repository here
2).通过命令方式建立版本库,
DOS命令输入:C:\Program Files\Subversion\bin >svnadmin create
D:\svnserver\repository
重启Apache,在IE地址栏中输入http://localhost/repository。输入用户名limenglei密码123456,界面中出现Revision 0:/。恭喜,你的版本库已经开始运作。
4. 权限控制
打开配置文件:
C:\Program Files\Apache Software Foundation\Apache2.2\conf\httpd.conf。将最后添加的<Localtion /repository>内容修改如下:
<Location /repository>
DAV svn
SVNPath "D:\svnserver\repository"
AuthzSVNAccessFile D:\svnserver\repository\conf\authz
AuthType Basic
AuthName "LiMengLei subversion repository"
AuthUserFile "C:\Program Files\Apache Software Foundation\Apache2.2\conf_svn\passwd"
Require valid-user
</Location>
在authz文件中定义了每个账号或者每个角色可以干什么,看以下的例子:
[repo01:/]
User1 = rw
User2 = r
对于多库,定义其中一个repo01下的所有目录,运行user1读写,users只读
[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的名字前面有@,为了和用户名区分。