我最近在我的 papache web 服务器上设置了一个 SVN 服务器。我安装了 USVNhttp://www.usvn.fr/帮助从 Web 界面管理存储库。
当我创建一个存储库并尝试从 netbeans 向其中导入代码时出现以下错误:org.tigris.subversion.javahl.ClientException: RA layer request failed Server sent unexpected return value (403 Forbidden) in response to PROPFIND request for '/svn/python1'
我知道我的用户名和密码是正确的(我尝试了不同的用户)我做了一些研究,似乎这很可能是 Apache svn 错误。以下是此虚拟主机的配置文件。
<VirtualHost *:80>
ServerName svn.domain.com
ServerAlias www.svn.domain.com
ServerAlias admin.svn.domain.com
DocumentRoot /home/mrlanrat/domains/svn.domain.com/usvn/public
ErrorLog /var/log/virtualmin/svn.domain.com_error_log
CustomLog /var/log/virtualmin/svn.domain.com_access_log combined
DirectoryIndex index.html index.htm index.php index.php4 index.php5
<Directory "/home/mrlanrat/domains/svn.domain.com/usvn">
Options +SymLinksIfOwnerMatch
AllowOverride All
Order allow,deny
Allow from all
</Directory>
<Location /svn/>
ErrorDocument 404 default
DAV svn
Require valid-user
SVNParentPath /home/mrlanrat/domains/svn.domain.com/usvn/files/svn
SVNListParentPath on
AuthType Basic
AuthName "USVN"
AuthUserFile /home/mrlanrat/domains/svn.domain.com/usvn/files/htpasswd
AuthzSVNAccessFile /home/mrlanrat/domains/svn.domain.com/usvn/files/authz
</Location>
</VirtualHost>
有人能指出我可能做错了什么以及如何解决它吗?我已经测试过更改文件权限和更改配置,但没有成功。
提前致谢!
更新:这是 /home/mrlanrat/domains/svn.domain.com/usvn/files/authz 的内容
# This is an auto generated file! Edit at your own risk!
# You can edit this "/" section. Settings will be kept.
#
[/]
* =
#
# Don't edit anything below! All manual changes will be overwritten.
#
[groups]
python1 = mrlanrat, user
# Project python1
[python1:/]
@python1 = r
[python1:/branches]
@python1 = rw
[python1:/trunk]
@python1 = rw
这里是 /home/mrlanrat/domains/svn.domain.com/usvn/files/htpasswd
mrlanrat:*****
user:*****
以下是访问日志:http://pastebin.com/RRYL1kCx 错误日志如下:http://pastebin.com/vR2MJj0v
感兴趣的部分在这里:
[Wed Apr 21 12:13:25 2010] [error] [client 209.129.37.170] user not found: /svn/test/trunk
[Wed Apr 21 12:13:25 2010] [error] [client 209.129.37.170] client denied by server configuration: /home/mrlanrat/domains/svn.domain.com/usvn/public/svn
通过 Web 浏览器登录似乎可行,但是 Netbeans 和其他 svn 客户端都出现 403 错误。
答案1
我遇到了同样的问题,并且我发现无法为定义的虚拟主机禁用 mod_evasive。
以下“解决方法”配置对我的 svn 有用:
更改:/etc/apache2/mods-available/mod-evasive.load
整个文件:
LoadModule evasive20_module /usr/lib/apache2/modules/mod_evasive20.so
< If Module mod_evasive20.c>
DOSHashTableSize 3097
DOSPageCount 5
DOSSiteCount 15
DOSPageInterval 1
DOSSiteInterval 1
DOSBlockingPeriod 600
</IfModule>
更改后,您必须重新启动 Apache:
/etc/init.d/apache2 restart
玩得开心
答案2
/home/mrlanrat/domains/svn.domain.com/usvn/files/authz
你的文件是什么样的?
我的看起来像这样:
[groups]
everyone = user1, user2, user3
repo1users = user1
[/]
@everyone = r
[repo1:/]
@repo1users = rw
我们以前遇到过类似的问题,主要是由于 authz 文件配置错误。
答案3
经过一整天的谷歌搜索,我找到了各种可能导致此 403 错误的问题,但没有一个是我的问题。我终于找到了我的问题!
我在 Apache 中启用了 mod_evasive。显然 SVN/WED-DAV 发送命令的速度太快,以至于被阻止了。
那么回到解决方案!禁用 mod_evasive!:)
如果有人知道只为一个虚拟主机禁用它的方法,请告诉我。我仍然希望为其他虚拟主机启用它。
谢谢!