已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
从subversion开始(svn安装配置全过程(+全套安装文件与配置文件)).关键字: svn subversion svn安装配置 svn安装配置文件 花了一天时间,走了不少弯路,解决N多错误,终于全部完成了,记下安装过程中遇到的各种问题,希望对初步使用svn的TX们有所帮助。 关于svn的介绍此处略过,直接进入正题。 svn服务的开启有两种方式, 自带的svnserve服务(访问地址类似于svn:/8/repos/) 与Apache配合使用 (访问地址类似于8:8077/repos/) 下面先进入第一种的配置: 1 安装,解压缩下载的svn压缩包到对应文件夹(建议路径不要有空格与中文) 2 建立版本库,首先建立 f:svn 空文件夹作为所有版本库的根目录。然后,进入命令行并切换到安装subversion的bin目录(建议将此目录设为path)。 输入如下命令: svnadmin create f:svnrepos 3 运行服务进程 在bin目录下输入: svnserve -d -r f:svn注:-d参数效果同于-daemon -r参数效果同于-root svnserve 将会在端口 3690 等待请求, -daemon(两个短横线)选项告诉 svnserve 以守护进程方式运行,这样在手动终止之前不会退出。不要关闭命令行窗口,关闭窗口会把 svnserve 停止。 -root选项设置根位置来限制服务器的访问目录,从而增加安全性和节约输入svnserve URL的时间 如果不加root参数,服务url为:svn:/localhost/svn/repos 而如果加上root参数,服务url为:svn:/localhost/repos 此处的启动配置会影响服务url,如果输入url错误,会导致访问的时候出现异常 4 为了验证svnserve正常工作,使用TortoiseSVN - Repo-browser 来查看版本库。在弹出的 URL 对话框中输入: svn:/localhost/repos 点 OK 按钮后就可以看见 repo1 版本库的目录树结构了,只不过这时 repo1 是个空库。 可能出现的问题: Error: Cant connect to host : 由于目标机器积极拒绝,无法连接。 解决:首先测试svn的3690端口是否打开:telnet localhost 3690 如果不成功说明服务没有被正常启动,请参考前面步骤 可以将svn服务添加到系统服务中去,步骤如下:这样可以避免每次重启后需要手动运行命令的烦恼 1 在subversion的安装路径下,找到bin文件夹 2 新建一个setupservice.bat文件,内容为: Java代码 1. sccreatesvnservebinpath=Subversion安装路径binsvnserve.exe-service-rf:svndepend=Tcpipstart=auto 2. scstartsvnserve 3. pause sc create svnserve binpath= Subversion安装路径binsvnserve.exe -service -r f:svn depend= Tcpip start= autosc start svnservepause 这里有个需要注意的问题:“start= auto等号后面要加上一空格 3 运行,这时在服务里可找到一个名为svnserve的服务。 在cmd命令行下查看打开的端口:netstat -ano就看到3690端口打开了 Error: No repository found in svn:/localhost/svn/repos/jmxDemo 解决: Java代码 1. A.测试1: 2. 运行svnserve-d-rf:svnreposjmxDemo/指定jmxDemo根目录为服务的根目录 3. 运行svn:/localhost,可以正常访问修改jmxDemo 4. 运行svn:/localhost/jmxDemo,出现:svn:/localhost/jmxDemonon-existentin 5. 6. B.测试2: 7. 运行svnserve-d-rf:svnrepos/指定jmxDemo上层目录为服务的根目录 8. 运行svn:/localhost/jmxDemo,可以正常访问修改Repository 9. 运行svn:/localhost,出现:Error*Norepositoryfoundinsvn:/localhost 10. 11. C.结论: 12. SVN服务启动时指定的根目录不同,会影响相同URL的访问结果 13. SVN在访问指定路径时会从服务的根目录下去寻找,即基于我们启动服务时指定的根目录 14. svn:/localhost指向默认的jmxDemo,svn:/localhost/jmxDemo指向jmxDemo 15. 测试情况一的步骤失败是因为我们已经把路径直接指向了jmxDemo的根目录 16. 测试情况二的步骤失败是因为我们只是把路径指向了jmxDemo的上层目录 A.测试1: 运行svnserve -d -r f:svnreposjmxDemo /指定jmxDemo根目录为服务的根目录 运行svn:/localhost,可以正常访问修改jmxDemo 运行svn:/localhost/jmxDemo,出现:svn:/localhost/jmxDemo non-existent in B.测试2: 运行svnserve -d -r f:svnrepos /指定jmxDemo上层目录为服务的根目录 运行svn:/localhost/jmxDemo,可以正常访问修改Repository 运行svn:/localhost,出现:Error * No repository found in svn:/localhost C.结论: SVN服务启动时指定的根目录不同,会影响相同URL的访问结果 SVN在访问指定路径时会从服务的根目录下去寻找,即基于我们启动服务时指定的根目录 svn:/localhost指向默认的jmxDemo,svn:/localhost/jmxDemo指向jmxDemo 测试情况一的步骤失败是因为我们已经把路径直接指向了jmxDemo的根目录 测试情况二的步骤失败是因为我们只是把路径指向了jmxDemo的上层目录 解决如下: svn:/localhost/repos/jmxDemo 而不是 svn:/localhost/svn/repos/jmxDemo 5 配置权限 打开建立的版本库文件夹/conf 编辑server.conf 添加如下几行: Java代码 1. general 2. password-db=passwd.conf 3. anon-access=none 4. auth-access=write 5. authz-db=authz.conf general password-db = passwd.conf anon-access = none auth-access = write authz-db = authz.conf 保证文件中只有这几行是不被注释的 在当前文件夹新建authz.conf 与passwd.conf文件 编辑passwd.conf文件,添加内容: Java代码 1. users 2. cjy=cjy users cjy = cjy 注意整个串前后都不要有空格 编辑authz.conf文件,添加内容: Java代码 1. / 2. cjy=rw / cjy = rw 6 导入文件夹 重启服务,在需要导入的文件夹上右键-TortoiseSVN - Import 输入url:svn:/localhost/repos/文件夹名 此处文件夹名需要被加上,不然会把文件夹下的所有文件弄到repos文件夹下,数据乱了 输入用户名密码:cjy 导入的时候可能出现的问题: Error: Authorization failed 解决:权限问题 这个问题弄了蛮久,一直以为是拼写url的问题,找了半天没找到,然后确认问题是权限配置错误,查了半天也没看出来,后来弄清楚,是因为导入涉及到在根下写东西,所以必须要有根下的w权限,添加如下配置后问题解决: Java代码 1. / 2. cjy=rw/cjy = rw注意: 版本库与导入项目最好不要重名,如果重名: 比如把arm下的东东导入到了这个版本库:svn:/localhost/arm。 而配置权限的时候,arm:/这才代表工程的根目录,即:svn:/localhost/arm 要想配到权限到目录下,就得这么写: arm:/arm/,不然出错,且问题不容易排出 7 check out之,svn:/localhost/repos/文件夹名 注意大小写区分,不然可能也会出现Error: Authorization failed错误 OK,至此svn自带服务配置完成,可以进行其他测试如update,commit等。都不会再出现问题。下面说明Apache配合svn提供http svn服务。 下面进入第二种配置:1、安装Apache,Apache的安装文件时一个msi文件可以直接双击运行(建议路径不要有空格与汉字) 2、从Subversion安装目录的 bin 子目录将 intl3_svn.dll、libdb44.dll 拷贝到Apache安装目录的bin 文件夹 3、从Subversion安装目录的 bin 子目录将 mod_authz_svn.so、mod_dav_svn.so 拷贝到Apache的模块目录(Apache 安装目录的 modules 文件夹)此步可省,配置的时候通过绝对路径的方式指定也可以 4、修改Apache的配置文件 httpd.conf ,使用LoadModule来加载mod_dav_svn模块。 Java代码 1. LoadModuledav_modulemodules/mod_dav.so 2. LoadModuledav_fs_modulemodules/mod_dav_fs.so 3. 4. LoadModuledav_svn_modulesvn安装目录/bin/mod_dav_svn.so5. LoadModuleauthz_svn_modulesvn安装目录/bin/mod_authz_svn.soLoadModule dav_module modules/mod_dav.soLoadModule dav_fs_module modules/mod_dav_fs.soLoadModule dav_svn_module svn安装目录/bin/mod_dav_svn.soLoadModule authz_svn_module svn安装目录/bin/mod_authz_svn.so注:如果拷贝了so文件到模块目录了,可以将上面两个的路径改成modules/mod_dav_svn.so 的形式,否则请使用正确的绝对路径 请确认文件中未注释的数据只有以上四句 确定用来作为Subversion版本库的目录 在配置文件最后添加如下几行: Java代码 1. 2. DAVsvn 3. SVNPathf:/svn/repos 4. DAV svn SVNPath f:/svn/repos 这个配置告诉Apache首先需要启用 dav_module,然后加载 dav_svn_module 。版本库对外的URL是: http:/localhost:8077/svn ,所有的Subversion版本库在物理上位于f:/svn/repos 。 配置完毕后重新启动 Apache,打开浏览器,输入 http:/localhost:8077/svn 将会看到成功画面: svn - Revision 10: /arm . diary/ ref/ temp/ - Powered by Subversion version 1.6.0 (r36650). 这表示 Apache 的 dav_svn 模块已经可以正常工作了(现在已经可以通过http的方式获取svn中的内容了)。 5、测试通过之后,进行权限配置 5.1、基本 HTTP 认证 最简单的客户端认证方式是通过 HTTP 基本认证机制,简单的使用用户名和密码来验证一个用户的身份。Apache提供了一个 htpasswd 工具来管理一个用户文件,这个文件包含用户名和加密后的密码,这些就是你希望赋予 Subversion 特别权限的用户。htpasswd 可以在 Apache 的 bin 安装目录下找到。具体使用方法如下: 创建用户文件: htpasswd -cm F:svnreposconfpasswordfile cjy 添加新用户(-m 表示以 MD5 加密密码): htpasswd -m F:svnreposconfpasswordfile dmm 这个地方如果加上c,会把以前的覆盖掉 更改用户密码: htpasswd -m F:svnreposconfpasswordfile cjy 删除用户(要用大写的 D ): htpasswd D F:svnreposconfpasswordfile cjy 接下来修改 httpd.conf,在 Location 标签中加入如下内容: Java代码 1. AuthTypeBasic 2. AuthNamesvnrepos3. AuthUserFileF:svnreposconfpasswordfile 4. Requirevalid-userAuthType BasicAuthName svn reposAuthUserFile F:svnreposconfpasswordfileRequire valid-user说明: AuthType Basic:启用基本的验证,比如用户名/密码对。 AuthName svn repos:当一个认证对话框弹出时,出现在认证对话框中的信息。(最好用英文,TortoiseSVN 不支持中文,安装语言包除外。) AuthUserFile F:svnreposconfpasswordfile:指定F:svnreposconfpasswordfile为用户文件,用来验证用户的用户名及密码。 Require valid-user:限定用户只有输入正确的用户名及密码后才能访问这个路径 重新启动 Apache ,打开浏览器访问版本库。Apache 会提示你输入用户名和密码来认证登陆了,现在只有 passwd 文件中设定的用户才可以访问版本库。也可以配置只有特定用户可以访问,替换上述 Require valid-user 为 Require user cjy dmm 将只有用户文件中的 cjy 和 dmm 可以访问该版本库。 有的时候也许不需要这样严格的访问控制,例如大多数开源项目允许匿名的读取操作,而只有认证用户才允许写操作。为了实现更为细致的权限认证,可以使用 Limit 和 LimitExcept 标签。例如: Java代码 1. 2. requirevalid-user 3. require valid-user以上配置将使匿名用户有读取权限,而限制只有 passwd 中配置的用户可以使用写操作。 如果这还不能满足你的要求,你希望精确的控制版本库目录访问,可以使用 Apache 的 mod_authz_svn 模块对每个目录进行认证操作。 5.2、用 mod_authz_svn 进行目录访问控制 首先需要让 Apache 将 mod_authz_svn 模块加载进来。在 Subversion 的安装目录中找到 mod_auth_svn 模块,将其拷贝到 Apache 安装目录的 modules 子目录下。修改 httpd.conf 文件,添加: LoadModule authz_svn_module modules/mod_authz_svn.so 现在可以在 Location 标签中使用 authz 的功能了。 注:在咱们的配置文件中已经进行了此步骤。此处可以略过 一个基本的 authz 配置如下: Java代码 1. #下面的/svn表示url为:http:/localhost:8077/svn/ 2. 3. #先需要启用dav_module,然后加载dav_svn_module 4. DAVsvn 5. #版本库的本地路径 6. SVNPathf:svnrepos 7. #下面一行是使用版本库上一级文件夹的方式来控制所有版本库 8. #SVNParentPathe:/svn 9. #权限控制文件 10. AuthzSVNAccessFileD:Javaapacheconfauthz.conf 11. #tryanonymousaccessfirst,resorttoreal 12. #authenticationifnecessary. 13. SatisfyAny 14. Requirevalid-user 15. #启用基本的验证,比如用户名/密码对。 16. #在用户名/密码对文件中的用户名才可以再authz.conf文件中配置生效 17. AuthTypeBasic 18. AuthNamecjyrepos19. AuthUserFileD:Javaapacheconfpasswordfile 20. #下面的/svn 表示url为:http:/localhost:8077/svn/#先需要启用 dav_module,然后加载 dav_svn_moduleDAV svn#版本库的本地路径SVNPath f:svnrepos#下面一行是使用版本库上一级文件夹的方式来控制所有版本库#SVNParentPath e:/svn#权限控制文件AuthzSVNAccessFile D:Javaapacheconfauthz.conf# try anonymous access first, resort to real# authentication if necessary.Satisfy AnyRequire valid-user#启用基本的验证,比如用户名/密码对。#在用户名/密码对文件中的用户名才可以再authz.conf文件中配置生效AuthType BasicAuthName cjy reposAuthUserFile D:JavaapacheconfpasswordfileAuthzSVNAccessFile 指向的是 authz 的策略文件,详细的权限控制可以在这个策略文件中指定。 AuthUserFile 指向加密用户文件的位置,只有在此文件中存在的用户才可以在authz策略文件中被正确配置 以(#)开头的行会被忽略;在它的简单形式里,每一小节命名一个版本库和一个里面的路径;认证用户名是在每个小节中的选项名;每个选项的值描述了用户访问版本库的级别:r(只读)或者rw(读写),如果用户没有提到或者值留空,访问是不允许的; * 表示所有用户,用它控制匿名用户的访问权限;符号区分组和用户。如: Java代码 1. groups 2. #定义组 3. vip=dmm 4. users=cjy,light 5. / 6. *=r 7. vip=rw 8. /branches/dev 9. users=rw 10. /tags 11. cjy=rw 12. /private 13. *= 14. vip=rgroups# 定义组vip = dmmusers = cjy,light/* = rvip = rw/branches/devusers = rw/tagscjy = rw/private* =vip= r使用 SVNParentPath 代替 SVNPath 来指定多个版本库的父目录时,其中所有的版本库都将按照这个策略文件配置。例如上例中 cjy将对所有版本库里的 /tags 目录具有读写权限。如果要对具体每个版本库配置,用如下的语法: Java代码 1. groups 2. project1_vip=cjy,dmm 3. project2_vip=cjy,light 4. repos1:/ 5. *=r 6. project1_vip=rw 7. repos2:/ 8. *=r 9. project2_vip=rwgroupsproject1_vip = cjy,dmmproject2_vip = cjy,lightrepos1:/* = r project1_vip = rwrepos2:/* = r project2_vip = rw这样 repos1的 project1_vip 组只能对 repos1 版本库下的文件具有写权限而不能修改版本库 repos2 ,同样 repos2 的 project2_vip 组也不能修改 repos1 版本库的文件。 可能出现的错误: 1、路径或权限不足时将出现错误信息提示: http:/localhost (路径不对) Error * PROPFIND request failed on / PROPFIND of /: 200 OK (http:/localhost) http:/localhost/svn (权限不足) Error * PROPFIND request failed on /svn PROPFIND of /svn: 403 Forbidden (http:/localhost) http:/localhost/svn/repos (正常显示) http:/localhost/repos (权限不允许) Error * PROPFIND request failed on /repos PROPFIND of /repos: 405 Method Not Allowed (http:/localhost) 2、不启动E:subversionbinsvnserve.exe ,但启动了ApacheSVN ,访问(tortoiseSVN Repo browser)或提交(SVN Commit)情形如下: 现象:svn:/localhost/svn/repos 不能访问或提交,提示:Error * Cant connect to host localhost: 由于目标机器积极拒绝,无法连接。 但 file:/e:/svn/repos 和 http:/localhost/svn/repos 可以访问或提交。 原因:svn:/ 是独立服务器 svnserver 自己的协议。file:/ 是本地访问,即服务器端和客户端在一个机器上 3、 具体到使用so的时候报错 Cannot load mod_dav_svn.so into server: xd5xd2xb2xbbxb5xbdxd6 解决:可能是版本的冲突,请使用2.2.9配1.6 解压缩下载的svn,里面会有一个readme文件,打开后会列出其支持的相关应用列表,请下载相对应的apache版本 推荐2.2.9+1.6.0,版本较新,且已经测试通过(附件中有安装文件) httpd.exe: Syntax error on line 87 of D:/Java/apache/conf/httpd.conf: Invalid LoadModule path modules/mod_dav_svn.so 解决:几个DLL冲突, apache/bin/*.DLL 最终列表: Java代码 1. -,需要删除的: 2. +.从Subs复制过来的 3. ?,未知,可以不要 4. 5. -libapr-1.dll
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年陕西省渭南市法官逐级遴选考试题及答案
- 2026年人文医师定期考核题库及答案
- 2026年气道管理相关知识考核试题及答案
- 2026年免疫规划理论知识考核试题及答案
- 老年人及中医药健康管理服务规范考核试题与答案
- 2026年山东省招远市高二历史上册期末考试测试卷附参考答案【达标题】
- 2026年云南省香格里拉市高一历史上册期末考试考试卷附参考答案(研优卷)
- 2026年河南省项城市高三历史下册期末考试自测卷及参考答案(研优卷)
- 2026年山东省诸城市高一历史上册期末考试模拟卷及答案一套
- 济宁市2026届高考仿真卷语文试题含解析
- 机器人操作系统(ROS2)入门与实践 课件全套 第1-12章 Linux Ubuntu入门基础 -基于ROS2的综合应用
- DL∕T 2340-2021 大坝安全监测资料分析规程
- 2024年陕西省西安市灞桥区西安国际港务区铁一中陆港初级中学陆港分校小升初分班考数学试题
- DB11T 489-2024 建筑基坑支护技术规程
- 《春夜喜雨》完美版课件
- 2021年山东省淄博市中考生物真题
- GB/T 38537-2020纤维增强树脂基复合材料超声检测方法C扫描法
- GB/T 28037-2011信息技术投影机通用规范
- GA/T 1400.2-2017公安视频图像信息应用系统第2部分:应用平台技术要求
- 多维阅读第4级Animal Fathers 动物爸爸 课件
- 颈动脉超声检查课件
评论
0/150
提交评论