使用 Websvn 配置 Apache Subversion
Posted
技术标签:
【中文标题】使用 Websvn 配置 Apache Subversion【英文标题】:Configuring Apache Subversion with Websvn 【发布时间】:2010-10-01 12:06:36 【问题描述】:平台:
CentOS release 5.5 (Final)
SVN, version 1.4.2 (r22196)
Apache httpd.i386 2.2.3-43.el5.centos.3
我有一个名为subversion.conf
、/etc/httpd/conf.d/subversion.conf
的文件:
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
# Virtual path for websvn
Alias /wsvn /var/www/websvn/
<Directory /var/www/websvn>
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
# Subversion configuration
<location /wsvn>
DAV svn
SVNListParentPath on
SVNParentPath /var/www/wsvn
AuthzSVNAccessFile /etc/svn-acl-conf
AuthType Basic
AuthUserFile /etc/svn-auth-conf
Require valid-user
</Location>
在我的 svn-acl-conf 中,我有以下内容:
[/]
joeblogs = rw
在我的 svn-auth-conf 中,我有以下内容,并使用了 #htpasswd -cm svn-auth-conf joeblogs
:
joeblogs:$apr1$ellT3...$2spAjOJ2W1kFDieAoJJeg
在我的目录 /var/www/ 我有这个:
4 drwxr-xr-x 4 apache apache 4096 Oct 1 20:56 wsvn
它是wsvn
4 drwxr-xr-x 7 apache apache 4096 Oct 1 20:56 APP
4 drwxr-xr-x 7 apache apache 4096 Oct 1 20:56 DEV
问题是当我尝试使用以下方法导入项目时:
svn import temp http://x.x.x.x/wsvn/DEV/dev-proj -m"Initial import"
svn: Server sent unexpected return value (500 Internal Server Error) in response to OPTIONS request for 'http://x.x.x.x/wsvn/DEV/dev-proj'
当我尝试在 Firefox http://x.x.x.x/wsvn 中浏览时,我得到以下信息
The server encountered an internal error or misconfiguration and was unable to complete your request.
但是,如果我注释掉以下内容,我可以毫无问题地浏览到该站点,并且可以看到存储库:
<location /wsvn>
# DAV svn
# SVNListParentPath on
# SVNParentPath /var/www/wsvn
# AuthzSVNAccessFile /etc/svn-acl-conf
# AuthType Basic
# AuthUserFile /etc/svn-auth-conf
# Require valid-user
</Location>
我该如何解决这个问题?
错误日志
[Sat Oct 02 01:58:17 2010] [error] [client x.x.x.x] need AuthName: /wsvn/listing.php, referer: http://x.x.x.x/wsvn/listing.php?repname=DEV
[Sat Oct 02 01:58:28 2010] [error] [client x.x.x.x] need AuthName: /wsvn/DEV/dev-proj
[Sat Oct 02 02:00:59 2010] [notice] caught SIGTERM, shutting down
[Sat Oct 02 02:00:59 2010] [notice] suEXEC mechanism enabled (wrapper: /usr/sbin/suexec)
[Sat Oct 02 02:00:59 2010] [notice] Digest: generating secret for digest authentication ...
[Sat Oct 02 02:00:59 2010] [notice] Digest: done
[Sat Oct 02 02:00:59 2010] [notice] Apache/2.2.3 (CentOS) configured -- resuming normal operations
[Sat Oct 02 02:01:03 2010] [error] [client x.x.x.x] need AuthName: /wsvn/DEV/dev-proj
[Sat Oct 02 02:02:28 2010] [notice] caught SIGTERM, shutting down
[Sat Oct 02 02:02:28 2010] [notice] suEXEC mechanism enabled (wrapper: /usr/sbin/suexec)
[Sat Oct 02 02:02:28 2010] [notice] Digest: generating secret for digest authentication ...
[Sat Oct 02 02:02:28 2010] [notice] Digest: done
[Sat Oct 02 02:02:28 2010] [notice] Apache/2.2.3 (CentOS) configured -- resuming normal operations
[Sat Oct 02 02:02:31 2010] [error] [client x.x.x.x] need AuthName: /wsvn/listing.php, referer: http://x.x.x.x/wsvn/listing.php?repname=DEV
[Sat Oct 02 02:02:34 2010] [error] [client x.x.x.x] need AuthName: /wsvn/listing.php, referer: http://x.x.x.x/wsvn/listing.php?repname=DEV
[Sat Oct 02 02:03:03 2010] [notice] caught SIGTERM, shutting down
[Sat Oct 02 02:03:03 2010] [notice] suEXEC mechanism enabled (wrapper: /usr/sbin/suexec)
[Sat Oct 02 02:03:03 2010] [notice] Digest: generating secret for digest authentication ...
[Sat Oct 02 02:03:03 2010] [notice] Digest: done
[Sat Oct 02 02:03:04 2010] [notice] Apache/2.2.3 (CentOS) configured -- resuming normal operations
[Sat Oct 02 02:03:06 2010] [error] [client x.x.x.x] Error running this command: svn --non-interactive --config-dir /tmp log --xml --verbose -r HEAD:1 'file:////var/www/wsvn/WEB/@HEAD' --limit 2, referer: http://x.x.x.x/wsvn/listing.php?repname=DEV
[Sat Oct 02 02:03:06 2010] [error] [client x.x.x.x] svn: No such revision 1, referer: http://x.x.x.x/wsvn/listing.php?repname=DEV
【问题讨论】:
你的 apache 错误日志是怎么说的?通常这比通用的用户代理 500 更有帮助:) 我已经用 error.log 更新了我的答案。谢谢。 【参考方案1】:这是 SVN 中的一个错误。如果您有 authz 文件,则无法访问 root 并查看存储库列表。
至少如果你像我一样在“/”中有SVNRoot。
【讨论】:
【参考方案2】:您似乎正试图在同一个位置提供 svn 和 websvn。这就是为什么当你注释掉其中一个指令时,你会得到一些结果。
将您的 Subversion 配置中的路径更改为不同于您用于 websvn 的路径,因此:
Alias /websvn /var/www/websvn/
<Directory /var/www/websvn>
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
# Subversion configuration
<location /svn>
DAV svn
SVNListParentPath on
SVNParentPath /var/www/svnrepopath
AuthzSVNAccessFile /etc/svn-acl-conf
AuthType Basic
AuthUserFile /etc/svn-auth-conf
Require valid-user
</Location>
http://www.duchnik.com/tutorials/vc/installing-and-configuring-svn-on-centos
【讨论】:
以上是关于使用 Websvn 配置 Apache Subversion的主要内容,如果未能解决你的问题,请参考以下文章