最近开始学习SVN ,遇到的第一个问题就整了我二天时间,网上查到的资料大多都是重复的,参考了一些资料,终于和apache 结合好了,下面总结一下:
1 、版本兼容问题:
试过好几个版本的SVN 和apache ,总是整合不成功,apache 启动不起来,试过svn 1.6.6 和apache2.2.15 ,最终没有成功,最后终于用svn1.6.1 和apache2.2.11 整合成功,到现在还弄不清楚到底哪几个版本 之间有冲突。
2 、整合过程
安装:安装apache 和svn, 在安装apache 的时候domain 那些可以设成localhost 。svn 我用的解压版的,直接解压就可以使用,最后在环境变量在path 后加上%svn%/bin 就可以,%svn% 为svn 的安装路径。建立svn 目录,假设在此为d:\svn
整合:
1、把%svn%/bin 下面的mod_dav_svn.so 和mod_authz_svn.so 复制到 %apache %/ modules 目录下
2 .2 .2 、把 %svn%/bin 下的九个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 拷贝到 %apache % bin 目录下
2、修改%apache%/conf/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:\svn\passwd
#AuthzSVNAccessFile D:\svn\accessfile
Require valid-user
</Location>
备注: <Location /svn/> 可列出d:\svn 下的版本库, 若为<Location /svn> 则不能访问https://127.0.0.1/svn 下的项目只能这样访问, 如https://127.0.0.1/svn /proj1
3、 创建passwd 文件来管理svn 的访问权限
使用%apache%\bin\htpasswd.exe 来创建密码
第一个用户的命令:htpasswd -c D:\svn\passwd username%
第二个用户的命令:htpasswd D:\svn\passwd%username%
-c 是创建新文,%username% 是 用户名,输入命令后还会提示输入密码二次。
D:\svn\passwd 为文件保存路径
4、权限设置
在d:\svn目录下面新建accessfile文件,在里面写入:
[groups]
admin=lds
[/]
* = r
@admin = rw
dangerman =
[proj1:/]
@admin = rw
[proj2:/]
@admin = r
[proj3:/]
@admin =
[groups]是给用户分组[/]为所有库[库名:/]为指定库,r为只读属性,w为可写
基本含义是根目录下任何人有读权限,admin 组有读写权限;admin 对proj1 读写权限 对proj2 有读权限,对 proj3 没有任何权限。
说明:
<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:\svnROOT\htpasswd
指 定 F:\svnROOT\htpasswd 用为密码文件用来验证用户的用户名及密码
AuthzSVNAccessFile F:\svnROOT\authz
指 定 F:\svnROOT\authz 来限定各个用户或组在版本库中目录的访问权限
Require valid-user
限 定用户只有输入正确的用户名及密码后才能访问这个路径(此项表示,无论是 IE 还是 Tortoise ,只有通 过密码验证才能访问)。
下面表示允许匿名访问,对于读操作,不需要用户验证。
#<LimitExcept GET PROPFIND OPTIONS REPORT>
#Require valid-user