辅助开发的软件有很多种,在Visual Studio开发中,针对于版本管控,Subversion+apache+AnkSVN可能是比较好的搭配选择。在配置服务器的时候,需要花费很多时间,下班闲暇之余,我想mark一下,一边未来再次需要配置的时候可以比较从容,希望给阅读该文章的朋友也可以解决一些困惑。

Subversion:置于服务器端,开发源代码的版本管控软件的核心。

apache:置于服务器端,主要用于web管控,例如建制和开启“服务”。(Subversion脱离apache,需要用Subversion安装目录下的一个svnserve.exe启动服务repository,在这里我们不对此方法具体解释,如有兴趣的可留言mark,有机会一起讨论下)

AnkSVN:置于客户端,结合visual studio使用,有使用过Tortoise的朋友应该很容易上手,因为具体的功能和操作类似,只是在visual studio端作了一个结合,方便visual studio开发者使用

步骤如下:(注意:请没有配置过的朋友严格按照文章的顺序配置,跳过某段都可能导致配置时出现的问题无法处理)

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目录(该目录用于存储 htpasswd命令生成的passwd的文件,在配置文件的编写,你将看到)

2)     在DOS界面,输入如下命令:

C :\ \Apache\Apache2\bin > htpasswd -cm d:\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:\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"(这是你生成的密码文件,copy到该目录下,或将目录名称指向该文件)

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的名字前面有@,为了和用户名区分。

 

这暂时是大致的配置内容,后续再作修改~