一、 安装程序下载
1、 Apache2.2版本下载:
http://labs.xiaonei.com/apache-mirror/httpd/binaries/win32/apache_2.2.11-win32-x86-openssl-0.9.8i.msi
2、 SVN1.6.3版本下载:
http://subversion.tigris.org/files/documents/15/46163/Setup-Subversion-1.6.3.msi
3、 Tortoise SVN1.6.3下载:
http://jaist.dl.sourceforge.net/sourceforge/tortoisesvn/TortoiseSVN-1.6.3.16613-win32-svn-1.6.3.msi
PS:SVN的版本与Tortoise SVN的版本最好一致,这样可以在命令行与界面同时操作SVN Repository。
4、 Tortoise SVN语言包下载:
http://jaist.dl.sourceforge.net/sourceforge/tortoisesvn/LanguagePack_1.6.3.16613-win32-zh_CN.msi
二、 安装
1、 安装Apache2.2
按照提示安装,一直按Next即可安装完毕。安装目录中不能出现中文,并且必须出现‘/’或‘/’符号,比如D:/Path/。安装完毕后,看Apache是否启用,通过“开始”找到快捷方式启动可以对Apache进行操作。Apache启动后,在浏览中输入http://localhost ,网页中显示“It Works”说明Apache安装成功。
2、 安装SVN1.6.3
运行Subversion安装程序,如果安装程序能够识别你已经安装了Apache,那么安装成功。如果它不能,那么你要做一些额外的步骤。
a) 进入Subversion的安装目录,将/Subversion/bin/目录下的mod_authz_svn.so和mod_dav_svn.so拷贝到Apache安装目录/Apache2.2/modules/下;
b) 进入Subversion的安装目录,拷贝文件libdb44.dll到Apache的modules目录;(注:这个不是必须的,文件名跟版本有差异如libdb43.dll)
c) 使用文本编辑器编辑Apache的配置文件(/Apache2.2/conf/httpd.conf),修改以下内容:
l 去掉以下两行的#号:
#LoadModule dav_module modules/mod_dav.so
#LoadModule dav_fs_module modules/mod_dav_fs.so
l 在LoadModule节的最后添加以下两行:
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
3、 安装Tortoise SVN1.6.3
运行Tortoise SVN安装程序,一直下一步即可完成安装,安装后必须重起计算机。
三、 配置
需要告诉mod_dav_svn模块,使用什么路径作为版本库目录,使用什么文件来进行认证。下面是一个典型的配置:(注意下面的‘/’和‘/’作为路径均是允许的,还有<Location /svn>的副作用,配置代码放在httpd.conf文件末尾)
<Location /svn/>
DAV svn
SVNListParentPath on
SVNParentPath "D:/source/SVN"
# SVNIndexXSLT "/svnindex.xsl" //使用列表模板
AuthName " Subversion repositories 版本控制中心"
AuthType Basic
# AuthBasicProvider file //似乎subversion 1.4.5不支持此项
AuthUserFile "D:/source/SVN/htpasswd"
AuthzSVNAccessFile "D:/source/SVN/authz"
require valid-user
#<LimitExcept GET PROPFIND OPTIONS REPORT> //下面表示允许匿名读取
#Require valid-user
#</LimitExcept>
</Location>
RedirectMatch ^(/svn)$ $1/
说明:
<Location /svn>
意味着可以通过像这样的URL(http://MyServer/svn/)来访问Subversion版本库
DAV svn
告诉Apache哪个模块负责服务像那样的URL--在这里就是Subversion模块SVNListParentPath on
在Subversion 1.3及更高版本中,这个指示器使得Subversion列出由SVNParentPath指定的目录下所有的版本库
第一行的<Location /svn/>,最后的反斜扛必须加上,否则可能访问失败!
若要使用http://MyServer/svn访问,最后需要加上RedirectMatch ^(/svn)$ $1/
SVNParentPath D:/source/SVN
告诉Subversion在目录D:/source/SVN下寻找版本库
AuthType Basic
启用基本的验证,比如用户名/密码对
AuthName " Subversion repositories 版本控制中心"
当一个验证对话框弹出时,告诉用户这个验证是用来做什么的
AuthUserFile "D:/source/SVN/htpasswd "
指定D:/source/SVN/ htpasswd用为密码文件用来验证用户的用户名及密码
AuthzSVNAccessFile "D:/source/SVN/ authz"
指定D:/source/SVN/ authz来限定各个用户或组在版本库中目录的访问权限
Require valid-user
限定用户只有输入正确的用户名及密码后才能访问这个路径(此项表示,无论是IE还是Tortoise,只有通过密码验证才能访问)。
下面表示允许匿名访问,对于读操作,不需要用户验证。
#<LimitExcept GET PROPFIND OPTIONS REPORT>
#Require valid-user
#</LimitExcept>
AuthUserFile和AuthzSVNAccessFile 的工作原理是,先使用Apache用户机制进行验证,通过之后将请求提交给mod_authz_svn.so进行认证,最后使用mod_dav_svn.so提供的功能。
a) Apache的密码文件制作方法、利用cmd进入目录apache2.2/bin/
htpasswd -cm 文件路径 用户名(-c表示创建新文件 -m表示md5加密)
文件路径必须与AuthUserFile参数指定路径一致
b) 添加新用户
htpasswd -m 文件路径 用户名
可以用htpasswd --help 查看命令帮助。
c) 使用svnadmin create D:/source/SVN/GPTLog创建库,建立Subversion数据库,当前版本Subversion支持两种格式数据库,一种是FSFS,另外一种是BDB(Berkeley Database)。在命令行下输入svnadmin create --fs-type bdb TestRepository建立BDB格式的数据库(确保当前目录已经切换到E:/SVN/),在命令行下输入svnadmin create --fs-type fsfs TestRepository建立FSFS格式的数据库(确保当前目录已经切换到E:/SVN/)。
d) 权限:AuthzSVNAccessFile文件格式
[groups]
developers = user1,user2,user3,user4
docs = user5,user6,user7
#to allow everyone read access
[/]
* = r
#allow all developers complete access
@developers = rw
#give the doc people write access to the docs folder
[/project/trunk/doc]
@docs = rw
首先定义了两个group,一个是developer,代表开发组,另外一个是docs,代表文档撰写组,然后
[/]
* = r
意思是对于所有的用户开放可读的权限。注意这里的[/],表示是对根目录下的所有代码仓库赋予权限。接着是
@developers = rw
[/project/trunk/doc]
@docs=rw 这这里的@应该代表的是group的意思注意这里对于docs这个组,一样指定了目录路径,而不是对于整个代码仓库。
接下来,重启Apache服务。若重起过程中出现了“the requested operation has failed”提示:
a) 重起计算机,再次启动服务。
b) 运行àCMD 进入到apache的bin目录。输入httpd.exe -w -n "Apache2.2" -k start会提示配置文件的具体那行出错。
注:命令里的"Apache2.2"是系统服务里apache服务的名称。
c) 若出现错误提示“Could not reliably determine the server's fully qualified domain name”,则需要在httpd.conf中加入一句
ServerName 192.168.18.3:80
其中IP地址为本机IP。
d) 若出现错误提示“make_sock: could not bind to address 0.0.0.0:80”,可以在CMD中利用命令
netstat –anb
查看所有程序对端口号的占用,关闭占用80端口的程序再重起即可。