在 Ubuntu 上使用 Apache 配置 SVN 时出现问题 - 提交时出现 500 错误

在 Ubuntu 上使用 Apache 配置 SVN 时出现问题 - 提交时出现 500 错误

我正在尝试使用 Apache 上的 DAV 配置 SVN 服务器。根据互联网资源(例如https://help.ubuntu.com/10.04/serverguide/subversion.html),在 Ubuntu 上安装所有这些应该非常简单。而且,在安装和创建第一个存储库期间没有出现任何错误,除了在初始导入项目文件时出现问题(我通过 HTTP 访问存储库)。我在 SVN 客户端(KDESVN)中看到的是以下消息:

Server sent unexpected return value (500 Internal Server Error) in response to PROPFIND request for 'http://.../svn/myproject/trunk/test.txt'

Apache 和我在 DAV 中配置的error.log自定义日志中没有关于此错误的任何信息。其中有几行记录了此活动,其中包括这一行:svn.logaccess.log

{IP} - - [18/Mar/2014:22:47:24 -0300] "PROPFIND /svn/myproject/trunk/test.txt HTTP/1.1" 500 1150 "-" "SVN/1.7.9/SvnQt wrapper client neon/0.29.6" 

没有更多细节。

我的配置如下。

/etc/apache2/mods-enabled/dav_svn.conf:

<Location /svn>
        DAV svn
        SVNParentPath /var/www/svn-repos
        SVNListParentPath On
        #SVNPathAuthz Off
        AuthType Basic
        AuthName "Subversion Repository"
        AuthUserFile /etc/apache2/passwd
        Require valid-user
        LimitXMLRequestBody 0 
</Location>

CustomLog ${APACHE_LOG_DIR}/svn.log "%t %u %{SVN-ACTION}e" env=SVN-ACTION

权限/var/www/svn-repos

sudo chmod -R 777 /var/www/svn-repos
sudo chown -R www-data:www-data /var/www/svn-repos

添加了一位用户,/etc/apache2/passwd我在 KDESVN 和命令行中使用其数据--username--password参数。

版本:

  • Ubuntu 12.04.4 LTS i386
  • 阿帕奇/2.2.22
  • SVN 1.6.17(r1128011)

我能够创建初始存储库结构 (/trunk、/tags、/branches),使用 进行本地提交file:///...,并且能够在客户端或浏览器中列出它。但是当我使用commit从远程计算机执行此操作时http://,会出现上述错误。

我尝试了所有能找到的解决此错误的方案:

  • 将存储库位置从 /home/svn 更改为 /var/www/svn-repos
  • 更改存储库权限和所有权(我检查了两次,www-data 是 Apache 的用户)——即使使用荒谬的 777 也无济于事
  • DAV svn \ SVNParentPath /var/www/svn-repos仅保留DAV 配置中的部分
  • 更改loglevel为- 我在debug日志apache2.conf中看不到更多有用的信息

没什么帮助。仍然是同样的错误。

有没有办法配置更好的日志记录,只是为了看看这是什么谜500 Internal Server Error? 如何找出我遗漏了什么?

对于您的建议,我提前表示感谢。

答案1

尝试启用重写日志以验证您没有干扰 dav_svn 的 mod_rewrite 规则。我在 usvn 上遇到了同样的问题。

您可以通过以下方式启用重写日志记录(请确保在完成调试后禁用此功能):

RewriteLog "/usr/local/var/apache/logs/rewrite.log"
RewriteLogLevel 3

我通过在 .htaccess 文件中添加一行来排除 dav_svn 存储库的子目录来解决我的问题:

<Files *.ini>
Order Allow,Deny
Deny from all
</Files>

php_flag short_open_tag on
php_flag magic_quotes_gpc off

RewriteEngine on
#RewriteCond
RewriteBase "//usvn/"
RewriteRule ^svn/ - [L,NC] # This is the line I added to exclude this path
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]

相关内容