阅读引导:
apache 和 SVN 的整合配置可能会遇到一些问题,本篇提供了几个常见问题的解决方案,仅供参考,
附: the requested operation has failed 错误解决方案
附: Could not open the requested SVN filesystem 错误的解决方案
附 : authentication failure 和 Password Mismatch 的解决方案
apache 和 SVN 关系图
1.下载文件
注意: 客户端要和服务端版本一致
tortoisesvn 是客户端程序 需要 下载并安装即可
下载地址: http://sourceforge.net/projects/tortoisesvn/files/?source=navbar
英文不好的可以下载一个客户端的中文插件,必须在安装好客户端安装
下载地址: http://downloads.sourceforge.net/tortoisesvn/LanguagePack_1.8.1.24570-win32-zh_CN.msi?download
subversion 是 SVN 服务端 是一个压缩包 本篇主要介绍这个压缩包的配置
下载地址: http://jaist.dl.sourceforge.net/project/win32svn/
2. 客户端 服务端 apache 的版本选择 (重要)
本篇的所有程序版本:
系统: win7-32bit
tortoisesvn: 1.8.0
subversion: 1.8.0
apache: 2.4.4 (wamp)
wamp 下载地址: http://www.wampserver.com/en/
客户端和服务端一定要版本匹配,上面已经说过.
最重要的就是 服务端要和 apache 相匹配 不然你的apache 是无法启动的
可以在下载的 subversion 里的 README.txt 查看和什么版本的服务器匹配
3.subversion 解压后的存放位置
推荐存放在 apache 文件的同级目录,
4.配置环境变量
需要在 path 中配置 svn 和 apache 的 bin 文件目录
加入以下参数,以个人安装位置为准:
D:\wamp\bin\apache\Apache2.4.4\bin;D:\wamp\bin\svn\bin
5.svn模块引入
在svn/bin 中有两个文件需要复制到 apache 的 modules 文件夹中
6. apache 与 svn 配置整合
修改apache 的配置文件 httpd.conf ;
<1 . 引入SVN 的依赖模块
1: #svn 系统模块
2: LoadModule dav_module modules/mod_dav.so
3: LoadModule dav_fs_module modules/mod_dav_fs.so
4: #svn 自身模块
5: LoadModule dav_svn_module modules/mod_dav_svn.so
6: LoadModule authz_svn_module modules/mod_authz_svn.so
<2. 设置apache 和 SVN 的调用关系
1: <Location /svn>
2: DAV svn
3: SVNParentPath "D:/www/depot"
4: </Location>
第三行 设置的是SVN 仓库的位置 depot 是父目录,
可以在里面设置子目录, 这只是我的仓库位置,可以根据 需要自行设置
<3. 重启系统 附: the requested operation has failed 错误解决方案
如果重启系统后, wamp 无法启动 查看apache 的 日志文件 apache_error.log
最后一行 提示 the requested operation has failed
出现这种问题请检查如下几个方面 :
(1. 检查服务端 是否支持 apache 版本
(2. 检查是否引入了SVN 的 模块到 apache 的 modules 文件夹
(3. 检查是否正确的修改了环境变量
(3.检查所修改的 apache 配置文件 是否存在语法或者输入错误
(4. 检查 是否缺少 VSN 的依赖运行环境 可以安装微软的 VC6 和 VC9 支持库 下载地址: http://www.baidu.com/
(5.如果以上都操作正确 问题还没有解决,请重启电脑 ,如果重启也没有解决
可以在 cmd 中 输入以下命令 查看apache 报错的 配置所在的行,定位检查错误
httpd.exe -w -n "wampapache" -k start
wampapache 是指 apache 在系统中的服务的名称,不同的电脑可能会有不同的名称,可以在服务列表中查看
找到错误后根据提示自行解决,这里就不深入讲解了,
7.创建仓库
cmd 命令行 执行 : vsnadmin create d:/www/depot/maliro
depot 是我的仓库 父目录
maliro 是我仓库下的子仓库
vsnadmin 的所有命令 可以 用 vsnadmin help 查看是
创建好的仓库:
8. 测试是否可以访问正确的访问仓库
<1. 在浏览器输入 localhost/vsn/maliro maliro是 子仓库名
需要注意的是 我这里 已经将 localhost 的 访问目录 指向了我所创建的 D:\www 目录, 具体情在 apache 配置文件里面修改配置项
成功打开网页后有以下提示:
maliro - Revision 0: /
<2. 附: Could not open the requested SVN filesystem 错误的解决方案
如果打开网页提示 Could not open the requested SVN filesystem 则表示和apache 的整合没有问题 ,但是VSN 没有找到仓库
请检查如下方面:
(1. 在 apache 的配置文件中 是否正确的指定了仓库的父路径
(2. 是否用命令行正确的创建了仓库 而且创建的位置 和配置项一致!
9. 设置指定的用户访问仓库
<1. 配置 服务器配置文件
1: <Location /svn>
2: DAV svn
3: SVNParentPath D:/www/depot
4:
5: AuthZSVNAccessFile "D:\www\depot\authz"
6: AuthUserFile "D:\www\depot\passwd"
7:
8: Satisfy Any
9: Require valid-user
10:
11: AuthType Basic
12: AuthName " Welcome to my SVN , But you need input password! (-: "
13: </Location>
将以前的配置 修改成以上代码
第五行 设置权限配置 文件的位置
第六行 设置密码文件的 存放位置
一般都是 存放在 仓库的父目录下
<2. 添加用户
在设置的存放权限配置的目录中 创建文件 authz 并键入以下信息
1: [maliro:/]
2: maliro = rw
maliro:/ //表示设置的用户作用于该子仓库
maliro = rw //用键值对的形式设置用户和用户的权限 r --> 读操作 w –> 写操作
<2.设置明文密码
在指定目录创建文件 passwd 并键入以下信息
maliro:111 // 键值对形式设置 maliro的密码为 111
<3.设置加密密码
在cmd 命令行 输入命令:
1: htapache -cmb d:/www/depo/passwd maliro 111
注: 命令里的 c 参数是用来创建文件 同时创建加密用户密码 会覆盖以前的passwd 文件
最好的使用方式是指定 -mb 参数
也可以这样创建密码:
1: htapache -b d:/www/depot/passwd maliro
创建一个经过 hash 方式 加密的用户密码
<4. 附 : authentication failure 和 Password Mismatch 的解决方案
如果访问svn 服务器的时候 不停地让你输入密码, 那么查看 apache_error.log 你会发现有这样一句话
字面意思是没有权限或者口令不正确,
分析原因: 口令不正确肯定是存在一个用户,用户的密码不匹配.
解决:
(1. 检查密码文件是否存在,并且创建了指定用户的密码
(2. 检查apache的配置文件中的 VSN 配置密码文件路径是否正确
(3. 用命令行创建用户的时候是否用了这样的指令 :
错误1 : htapache –c xxxxxxxx maliro
错误2 : htapache xxxxxxxx maliro
可能是因为版本问题,在SVN的高级版本中 用这样的指令创建的加密用户密码 是不能被正确解密匹配的
具体情参考 指令 htapache help