SVN和Apache结合总结
最近开始学习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文件,在里面写入:
admin=lds
[/]
* = r
@admin = rw
dangerman =
@admin = rw
@admin = r
@admin =
是给用户分组[/]为所有库[库名:/]为指定库,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
页:
[1]