1. 软件版本:Setup-Subversion-1.6.16.msi、httpd-2.2.19-win32-x86-no_ssl.msi.
2. 安装Apache
直接安装Apache软件,在安装过程输入信息前两项Network Domain和Server Name中都输入localhost,下面那个email就随便了,如果机器安装了iis并且启动中,要先把iis服务停掉。否则会和apache的监听端口冲突的。
3. 安装subversion。运行安装程序,直接安装即可。
4. 集成Apache与subversion
拷贝svn安装目录下的文件到apache安装目录下。将SVNbin下的mod_dav_svn.so 和mod_authz_svn.so拷贝到apachemodules下,将SVNbin下的九个dll文件intl3_svn.dll,libapr-1.dll,libapriconv-1.dll,libaprutil-1.dll,libdb44.dll,libsvn_delta-1.dll,libsvn_fs-1.dll,libsvn_repos-1.dll,libsvn_subr-1.dll拷贝到apachebin下。
修改apache的httpd.conf文件。把在httpd 中找到以下2 行,并把前面的注释符# 删除:#LoadModule dav_fs_module modules/mod_dav_fs.so #LoadModule dav_module modules/mod_dav.so在LoadModule 结尾处添加以下2 行:LoadModule dav_svn_module modules/mod_dav_svn.so LoadModule authz_svn_module modules/mod_authz_svn.so。在http.conf 文件的结尾处添加以下配置行:
<Location /svn>
DAV svn
SVNParentPath D:svn
AuthType Basic
AuthName "Subversion repositories"
AuthUserFile D:svnpasswd
#AuthzSVNAccessFile D:svnaccessfile
Require valid-user
</Location>
注释:1. SVNParentPath D:svn 为svn 的主目录,参加1.2 中设置
2 .AuthUserFile D:svnpasswd 密码存储文件,(下面要使用)
说明:
<Location /svn/>
意味着可以通过像这样的URL(http://MyServer/svn) 来访问Subversion版本库
DAV svn
告诉Apache哪个模块 负责服务像那样的URL--在这里就是Subversion模块
SVNListParentPath on
在Subversion 1.3及更高版本中,这个指示器使得Subversion列出由SVNParentPath指定的目 录下所有的版本库
SVNParentPath F:svnROOT
告诉Subversion在目录F:svnROOT下寻找版本库
AuthType Basic
启用基本的验证,比如用户名/密码对
AuthName "Subversion repositories"
当一个验证对话框弹出时,告诉用户这个验证是用来做什么的
AuthUserFile F:svnROOThtpasswd
指定F:svnROOThtpasswd用为密码文件用来验证用户的用户名及密码
AuthzSVNAccessFile F:svnROOTauthz
指定F:svnROOTauthz来限定各个用户或组在版本库中目录的访问权限
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提供的功能。
创建passwd 文件 来管理svn 的访问权限
使用%apache%bin htpasswd .exe 来创建密码
第一个用户的命令: htpasswd -c D:svnpasswd %username%
第二个用户的命令: htpasswd D:svnpasswd %username%
注释:1.-c 是创建新文,%username% 是用户名,输入命令后还会提示输入密码二次。
2.D:svnpasswd 为3.1.3 中设置的路径文件
上面的配置仅仅是一个简单的示例。你还可以对Apache进行许许多多的配置。
1.如果你想让所有用户对版本库都有读的权限而只有特定的用户才有写的权限,你可以将这行
CODE:
Require valid-user
改为
CODE:
<LimitExcept GET PROPFIND OPTIONS REPORT>
Require valid-user
</LimitExcept>
2.上面的配置使用了passwd文件将你所有的版本库作为一个单元来限定访问权限。如果你想获得更多的控制,如限定某个用户可以访问版本库中的哪个目录,可以把下面这行的#去掉:
CODE:
#AuthzSVNAccessFile D:svnaccessfile
然后用文本编辑器创建一个Subversion授权文件。Apache将确保只有有效的用户可以访问你的/svn位置,然后将用户名传到 AuthzSVNAccessFile模块,这样可以依据Subversion授权文件得到更精细的权限控制。注意,路径将被指定为[库:路径]或者简单 的[路径]。如果你不明确指定一个库,访问规则将应用到由SVNParentPath指定的目录下所有的版本库中。一个授权文件例子可能像这样:
CODE:
[groups]
admin = john, kate
devteam1 = john, rachel, sally
devteam2 = kate, peter, mark
docs = bob, jane, mike
training = zak
# 为所有库指定默认访问规则
# 所有人可以读,管理员可以写,危险分子没有任何权限
[/]
* = r
@admin = rw
dangerman =
# 允许开发人员可以完全访问他们的项目版本库
[proj1:/]
@devteam1 = rw
[proj2:/]
@devteam2 = rw
[bigproj:/]
@devteam1 = rw
@devteam2 = rw
trevor = rw
# 文档编写人员对所有的docs目录有写权限
[/trunk/doc]
@docs = rw
# 培训人员可以完全访问培训版本库
[TrainingRepos:/]
@training = rw
5.Svn 与apache 结合容易产生的错误 :
httpd.exe: Syntax error on line 86 of D:/Program Files/Apache Software Fou
n/Apache2.2/conf/httpd.conf: API module structure 'dav_svn_module' in file
ogram Files/Apache Software Foundation/Apache2.2/modules/mod_dav_svn.so is
ed - expected signature 41503232 but saw 41503230 - perhaps this is not an
e module DSO, or was compiled for a different Apache version?
Note the errors or messages above, and press the <ESC> key to exit. 3....
解决办法就是使用2.0 版本的apache
6. httpd.exe: Syntax error on line 86 of D:/Program Files/Apache Software Foundatio
n/Apache2.2/conf/httpd.conf: Cannot load D:/Program Files/Apache Software Founda
tion/Apache2.2/modules/mod_dav_svn.so into server: xd5xd2xb2xbbxb5xbdxd6
xb8xb6xa8xb5xc4xb3xccxd0xf2xa1xa3
Note the errors or messages above, and press the <ESC> key to exit. 16...
可以看到已经说明了是2.2.9 以上的apache Syntax error on line 487 of D:/Program Files/Apache Software Foundation/Apache2.2/conf/httpd.conf:
Invalid command 'DAV', perhaps misspelled or defined by a module not included in
the server configuration
Note the errors or messages above, and press the <ESC> key to exit. 25...
把LoadModule dav_module modules/mod_dav.so 前的注释去掉