Subversion 146 + apache 228 windows安装及配置Word文档下载推荐.docx
- 文档编号:833164
- 上传时间:2023-04-29
- 格式:DOCX
- 页数:13
- 大小:21.95KB
Subversion 146 + apache 228 windows安装及配置Word文档下载推荐.docx
《Subversion 146 + apache 228 windows安装及配置Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《Subversion 146 + apache 228 windows安装及配置Word文档下载推荐.docx(13页珍藏版)》请在冰点文库上搜索。
//localhost/test
当然,localhost也可以写成127.0.0.1或SVN所在电脑的IP
如没有弹出错误,正常显示,证明服务启动成功,只不过这时test只是一个空库
但是如果向这个空库里进行Import操作还是会出现验证失败的操作,Authorizationfailed.使用以下方法解决以下问题
修改配置文件使指定的用户才对SVN有访问权限
修改D:
\svndepositorys\test\conf下面的三个配置文件
Authzpasswdsvnserve.conf
以下我们将SVN配置成需要密码才能登录,账户admin,密码123456
Authz权限配置文件
最后一行下加上
[test:
/]
admin=rw
详解:
[/svn/p1/WebProject]
king=rw(表示king能够读写/svn/p1/WebProject目录下的所有信息)
[/svn/p1/web]
zp=r(表示zp能够读/svn/p1/web目录下的所有信息)
到此svn服务器的的安装和配置就已经完成了。
[MyProject:
hadeslee=rw
/module1]
tom=rw
hadeslee=rw
这表示,MyProject下面的所有子目录hadeslee都是有权限读写的,但是tom只有权限读写此项目下面的module1目录,这个各自的访问权限就分的更细致了.到MyProject:
/module1导到有关于MyProject文件夹下面的设置,我们就告一段落了,我们现在开始设置apache,使它能和subvertion一起工作.
Passwd用户名及密码文件
admin=123456
svnserve.confSVN服务配置文件
将以下语句前的#号去掉,需要注意的是删除#号时要保证语句顶格,如在语句前有空格的话也会出现错误
#anon-access=read
#auth-access=write
#password-db=passwd
#authz-db=authz
#realm=MyFirstRepository改为realm=test
anon-access控制非鉴权用户访问版本库的权限。
取值范围为"
write"
、"
read"
和"
none"
。
即"
为可读可写,"
为只读,"
表示无访问权限。
缺省值:
read
auth-access控制鉴权用户访问版本库的权限。
即"
缺省值:
write
authz-db指定权限配置文件名,通过该文件可以实现以路径为基础的访问控制。
除非指定绝对路径,否则文件位置为相对conf目录的相对路径。
authz
realm指定版本库的认证域,即在登录时提示的认证域名称。
若两个版本库的
认证域相同,建议使用相同的用户名口令数据文件。
一个UUID(UniversalUniqueIDentifier,全局唯一标示)。
这时再次使用SVN客户端进行导入操作,svn:
//127.0.0.1/test提示输入用户名密码后即可导入成功
如果SVN只在本地(局域网内)使用的话,使用svn:
//(SVN协议)来进行各种操作就可以了,如应用在公网上则必须则必须使用APACHE与其整合,以HTTP的方式来访问SVN服务器Subversion的设计包括一个抽象的网络层,这意味着版本库可以通过各种服务器进程访问。
理论上讲,Subversion可以使用无限数量的网络协议实现,目前实践中存在着两种服务器。
SVNServer:
svnserve是一个小的(也叫轻型的)、独立服务器,使用自己定义的协议和客户端。
(作者注:
以下称这种服务器为“svnserver服务器”,上面的安装配置就是安装svnserver服务器。
)
ApacheSVN:
Apache是最流行的web服务器,通过使用mod_dav_svn模块,Apache可以访问版本库,并且可以使客户端使用HTTP的扩展协议WebDAV/DeltaV进行访问。
以下称这种服务器为“ApacheSVN服务器”)
通过Http协议访问版本库是Subversion的亮点之一。
ApacheSVN服务器具备了许多svnserve服务器没有的特性,使用上更加灵活,但是有一点难于配置,灵活通常会带来复杂性。
∙一、必备条件
为了让你的版本库使用HTTP网络,你必需具备以下几个条件:
配置好httpd2.2.x,并且使用mod_dav启动。
为mod_dav安装mod_dav_svn插件。
配置你的httpd.conf,使http协议能访问版本库。
下面以我的配置过程具体讲解。
环境:
OS:
WindowsXPSP2
Web:
Apache2.2.8SVN:
svn-win32-1.4.6、安装Subversion
将下载下来的svn-win32-1.4.6.zip直接解压即可,比如我解压到e:
\subversion。
从Subversion安装目录的bin子目录将mod_authz_svn.so、mod_dav_svn.so及所有DLL文件拷贝到Apache的模块目录(Apache安装目录的modules文件夹)。
三、基本的Apache配置
修改Apache的配置文件httpd.conf,使用LoadModule来加载mod_dav_svn模块。
将:
#LoadModuledav_modulemodules/mod_dav.so
改成:
LoadModuledav_modulemodules/mod_dav.so
即去掉前面的“#”号。
添加:
LoadModuledav_svn_modulemodules/mod_dav_svn.so
一定确定它在mod_dav之后。
现在你已经设置了Apache和Subversion,但是Apache不知道如何处理Subversion客户端,例如TortoiseSVN。
为了让Apache知道哪个目录是用来作为Subversion版本库,你需要使用编辑器(例如记事本)编辑Apache的配置文件。
在配置文件最后添加如下几行:
<
Location/repository>
DAVsvn
SVNPathe:
/svn/repos1
/Location>
这个配置告诉Apache首先需要启用dav_module,然后加载dav_svn_module。
版本库对外的URL是:
http:
//服务器IP/repository,所有的Subversion版本库在物理上位于e:
/svn/repos1。
配置完毕后重新启动Apache,打开浏览器,输入http:
//服务器IP/repository将会看到如下画面:
(注意如果APACHE使用80端口启动的话,要确认无其它程序占用了80端口,如IIS等,这次做实验居然发现SKYPE如果在APACHE启动时开启了的话也无法启动。
所以最好改成8080端口)
这表示Apache的dav_svn模块已经可以正常工作了。
用户可以使用任何一种Subversion的客户端通过Http协议访问你的版本库。
假如想要指定多个版本库,可以用多个Location标签,也可以使用SVNParentPath代替SVNPath,例如在D:
\svndepositorys下有多个版本库test,work等等,用如下方式指定:
Location/svn>
SVNParentPathD:
/repository
“SVNParentPathe:
/svn”表示D:
/repository下的每个子目录都是一个版本库。
可以通过http:
//服务器IP/svn/test,http:
//服务器IP/svn/work来访问。
现在你的版本库任何人都可以访问,并且有完全的写操作权限。
也就是说任何人都可以匿名读取,修改,提交,以及删除版本库中的内容(注:
这时不需要配置E:
\svn\repos\conf\svnserve.conf文件,并且也不需要启动E:
\subversion\bin\svnserve.exe。
因为提交是通过Apache的dav模块处理的,而不是由svnservice处理。
)。
我们用TortoiseSVN客户端验证即知。
显然大部分场合这是不符合需求的。
那么如何进行权限设置呢,Apache提供了基本的权限设置:
四、认证选项
1、基本HTTP认证
最简单的客户端认证方式是通过HTTP基本认证机制,简单的使用用户名和密码来验证一个用户的身份。
Apache提供了一个htpasswd工具来管理一个用户文件,这个文件包含用户名和加密后的密码,这些就是你希望赋予Subversion非凡权限的用户。
htpasswd可以在Apache的bin安装目录下找到。
具体使用方法如下:
创建用户文件:
htpasswd-cE:
\usr\Apache2.2\bin\passwd.confusername
添加新用户(-m表示以MD5加密密码,可选项):
htpasswd[-m]E:
\usr\Apache2.2\bin\passwd.confNewusername
更改用户密码:
删除用户(要用大写的D):
htpasswdDE:
接下来修改httpd.conf,在Location标签中加入如下内容:
AuthTypeBasic
AuthName"
svnrepos"
AuthUserFile"
E:
/usr/Apache2.2/bin/passwd.conf"
Requirevalid-user
说明:
AuthTypeBasic:
启用基本的验证,比如用户名/密码对。
:
当一个认证对话框弹出时,出现在认证对话框中的信息。
(最好用英文,TortoiseSVN不支持中文,安装语言包除外。
AuthUserFileE:
/usr/Apache2.2/bin/passwd:
指定E:
\usr\Apache2.2\bin\passwd为用户文件,用来验证用户的用户名及密码。
Requirevalid-user:
限定用户只有输入正确的用户名及密码后才能访问这个路径
重新启动Apache,打开浏览器访问版本库。
Apache会提示你输入用户名和密码来认证登陆了,现在只有passwd文件中设定的用户才可以访问版本库。
也可以配置只有特定用户可以访问,替换上述"
Requirevalid-user"
为"
Requireusertonyrobert"
将只有用户文件中的tony和robert可以访问该版本库。
有的时候也许不需要这样严格的访问控制,例如大多数开源项目答应匿名的读取操作,而只有认证用户才答应写操作。
为了实现更为细致的权限认证,可以使用Limit和LimitExcept标签。
例如:
LimitExceptGETPROPFINDOPTIONSREPORT>
requirevalid-user
<
/LimitExcept>
修改完成后如下
Location/svn>
svn"
D:
\ProgramFiles\ApacheSoftwareFoundation\Apache2.2\bin\passwd.conf"
试验成功
以上配置将使匿名用户有读取权限,而限制只有passwd中配置的用户可以使用写操作。
假如这还不能满足你的要求,你希望精确的控制版本库目录访问,可以使用Apache的mod_authz_svn模块对每个目录进行认证操作。
2、用mod_authz_svn进行目录访问控制
首先需要让Apache将mod_authz_svn模块加载进来。
在Subversion的安装目录中找到mod_auth_svn模块,将其拷贝到Apache安装目录的modules子目录下。
修改httpd.conf文件,添加:
LoadModuleauthz_svn_modulemodules/mod_authz_svn.so
现在可以在Location标签中使用authz的功能了。
一个基本的authz配置如下:
Location/repository>
SVNParentPathe:
/svn
#ouraccesscontrolpolicy
AuthzSVNAccessFileE:
/usr/Apache2.2/bin/accesspolicy.conf
#tryanonymousaccessfirst,resorttoreal
#authenticationifnecessary.
SatisfyAny
#howtoauthenticateauser
Subversionrepository"
/usr/Apache2.2/bin/passwd.conf
AuthzSVNAccessFile指向的是authz的策略文件,具体的权限控制可以在这个策略文件中指定。
可以将D:
\svn\svndepositorys\conf\authz这个文件复制过来,然后重命名后进行修改
chenjq=rw
cjq=r
使用import进行测试,果然发现chenjq可以进行import,而cjq不行,但cjq依然可以进行访问(读的操作)
/part1]
cjq=rw
chenjq对test这个版本库有完全读写权限,而cjq只对其下的part1目录有读写权限,需注意的是如果首次使用cjqimport到part1时会出现权限不足的情况,须使用chenjq先访问test版本库,再使用cjqimport时即可
以(#)开头的行会被忽略;
在它的简单形式里,每一小节命名一个版本库和一个里面的路径;
认证用户名是在每个小节中的选项名;
每个选项的值描述了用户访问版本库的级别:
r(只读)或者rw(读写),假如用户没有提到或者值留空,访问是不答应的;
*表示所有用户,用它控制匿名用户的访问权限;
@符号区分组和用户。
如:
[groups]
committers=paulex,richard
developers=jimmy,michel,spark,sean
[/]
*=r
@committers=rw
[/branches/dev]
@developers=rw
[/tags]
tony=rw
[/private]
*=
@committers=r
使用SVNParentPath代替SVNPath来指定多个版本库的父目录时,其中所有的版本库都将按照这个策略文件配置。
例如上例中tony将对所有版本库里的/tags目录具有读写权限。
假如要对具体每个版本库配置,用如下的语法:
project1_committers=paulex,richard
project2_committers=jimmy,michel,spark,tony,Robert
[repos1:
@project1_committer=rw
[repos2:
@project2_committer=rw
这样项目1的project1_committer组只能对repos1版本库下的文件具有写权限而不能修改版本库repos2,同样项目2的project2_commiter组也不能修改repos1版本库的文件。
4、FAQ
1、路径或权限不足时将出现错误信息提示:
http:
//localhost(路径不对)
Error*PROPFINDrequestfailedon'
/'
PROPFINDof'
:
200OK(http:
//localhost)
//localhost/svn(权限不足)
/svn'
403Forbidden(http:
//localhost/svn/repos(正常显示)
//localhost/repos(权限不答应)
/repos'
405MethodNotAllowed(http:
2、不启动E:
\subversion\bin\svnserve.exe,但启动了ApacheSVN,访问(tortoiseSVN>
Repobrowser)或提交(SVNCommit)情形如下:
现象:
svn:
//localhost/svn/repos不能访问或提交,提示:
Error*Can'
tconnecttohost'
localhost'
由于目标机器积极拒绝,无法连接。
但file:
///e:
/svn/repos和http:
//localhost/svn/repos可以访问或提交。
原因:
//是独立服务器svnserver自己的协议。
file:
///是本地访问,即服务器端和客户端在一个机器上。
4.在配置httpd.conf时,如果HTTPD起不来,可以直接在命令行中输入D:
\ProgramFiles\ApacheSoftwareFoundation\Apache2.2\bin>
httpd
这样启动时,会有错误提示,再根据错误提示看是什么问题
心得:
SVNPath对应认证文件
#[/foo/bar]
#harry=rw
#*=
SVNParentPath对应
#[repository:
/baz/fuz]
#@harry_and_sally=rw
#*=r
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Subversion 146 apache 228 windows安装及配置 windows 安装 配置
![提示](https://static.bingdoc.com/images/bang_tan.gif)
链接地址:https://www.bingdoc.com/p-833164.html