虽然原来也在使用Subversion,但使用的不是http服务器,用的是把svnservice.exe安装成window服务的方式。原来的开发环 境配置一直不统一,这次花的功夫好好弄一下,想搭建一个全部基于开源的Apache+SVN+Trac的配置,希望能给自己不一样的感觉。本文先说 Apache和SVN的集成,下一篇再集成Trac。
安装过程还是有点复杂的,可能是我用的都是最新版本的缘故,网上的好多文章目前没有针对最新版本的,好在大致相当,问题不大。
一.准备安装软件
- 先下载Http服务器,官方网站为http://httpd.apache.org/ ,目前最新版本为Apache 2.2.6,我下载的是apache_2.2.6-win32-x86-no_ssl.msi
- 再下载SVN服务器,官方网站为http://subversion.tigris.org/ ,最新版本为Subversion 1.4.6,可能是才发布,还没有安装程序,只有二进制解压版的,下载时要注意下载和Apache2.2.x版本对应的,我下载的是svn-win32- 1.4.6.zip;同时下载svn-python-1.4.6.win32-py2.5.exe
- TortoiseSVN,客户端程序。TortoiseSVN是扩展Windows Shell的一套工具,可以看作Windows资源管理器的插件,安装之后Windows就可以识别Subversion的工作目录,点鼠标右键即可看到。网址为http://tortoisesvn.tigris.org/ ,我下载的是TortoiseSVN-1.4.6.11647-win32-svn-1.4.6.msi
- TortoiseSVN的中文语言包,注意这个需要下和客户端程序版本相同的。这个可以在language packs下面下载。
二. 安装
1.先安装Apache服务器。自己手动填写ServerInfo。安装完成之后到安装目录下找到conf目录下的httpd.config文件,搜索 Listen,并将Listen后面的80改为8080(或者你希望的端口),然后重新启动Apache服务器,这时可以用 http://localhost:8080 来测试是否安装正确。
2.再安装SVN服务器,直接解压即可。
3.安装TortoiseSVN,很简单,一路安装下去。
三. 集成Apache和SVN
- 首先将Subversion安装目录bin/下面的两个文件:mod_authz_svn.so和mod_dav_svn.so复制到Apache安装目录modules/目录下; 再将Subversion安装目录bin/下面的所有.dll文件复制到Apache安装目录bin/目录下
- 需要再修改httpd.conf,并做如下修改:
找到Apache安装目录下的conf目录,用文本编辑器打开httpd.conf,找到一下两行:
#LoadModule dav_module modules/mod_dav.so
#LoadModule dav_fs_module modules/mod_dav_fs.so
将每行前面的注释符“#”去掉。再在所有LoadModule语句的最后添加一下几行:
#SVN
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so -
注意下面的状态栏已经是Apache/2.2.6 SVN1.4.6 DAV/2- 建立一个SVN存放文件的目录,我在D盘下创建一个文件夹:D:/svn
- 接下来我们必须告诉Apache我们的资源 库所在的路径,可以通过Location指令来完成这个设置。因为不希望为每个单独的项目都进行单独的设置,所以我们把所有项目都存放在统一的资源库目 录,那么可以使用SVNParentPath指令来指定存放所有项目的路径。在httpd.conf文件最后添加下面配置:
#SVN
<Location /svn>
DAV svn
SVNListParentPath on
SVNParentPath "D:/svn"
#SVNPath "D:/svn/test"
####################认证的类型
AuthType Basic
####################认证的名称,显示于登录提示框
AuthName "Subversion 资源库,请登录!"
####################Which password file to use for authentication 存储用户登录信息的文件
AuthUserFile D:/svn/passwd
####################限定各个用户或组在版本库中目录的访问权限
AuthzSVNAccessFile D:/svn/svnaccessfile
####################让所有用户对版本库都有读的权限而只有特定的用户才有写的权限
Require valid-user
</Location> - 在命令行窗口中转到Apache所在的目录,执行下列命令,创建用户及密码
说明:创建用户zj
输入:htpasswd –c D:/svn/passwd zj
说明:使用-c参数来创建一个passwd文件
输出:
New password: *****
Re-type new password: *****
Adding password for user zj
再创建用户的时候就不用-c参数,而是用-m参数,因为文件passwd 已经创建。
打开passwd文件,密码使用MD5加密过了,而且同样的密码加密出来的内容却不相同。用TortoiseSVN在D:/svn下创建test和java资源库.(很简单,不多说)
-
然后用文本编辑器创建一个Subversion授权文件,文件名为svnaccessfile,内容如下:
[groups]
admin = john, kate
devteam1 = john, rachel, sally
devteam2 = kate, peter, mark
# 为所有库指定默认访问规则
# 所有人可以读,管理员可以写,危险分子没有任何权限,[/]代表根目录
[/]
* = r
@admin = rw
dangerman =
# 允许开发人员可以完全访问他们的项目版本库
[test:/]
@devteam1 = rw
[java:/]
@devteam2 = rw - 保存好上面的所有配置文件之后,重新启动Apache服务器。此时我们就可以在IE里面通过http://localhost:8080/test和http://localhost:8080/java 来测试用户登录,以及不同用户组权限。