让Subversion + Apache工作的问题

时间:2010-11-06 15:44:15

标签: svn apache mod-dav-svn

按照this helpful guide中的说明,我一直在尝试使用Apache代替svnserve在我的网站上设置Subversion。设置好所有内容后,我将在 / srv / svn / myrepository 上有一个存储库,可以从 code.mydomain.com 访问。

但是,按照上面链接的指南中的所有说明操作后,访问 code.mydomain.com 会显示Apache默认网站的内容 / var / www (即“它有效!”)。这也会在我的Apache日志中生成以下错误:

[Sat Nov 06 10:11:33 2010] [notice] caught SIGTERM, shutting down
[Sat Nov 06 10:11:34 2010] [notice] mod_python: Creating 8 session mutexes based on 150 max processes and 0 max threads.
[Sat Nov 06 10:11:34 2010] [notice] mod_python: using mutex_directory /tmp
[Sat Nov 06 10:11:34 2010] [notice] Apache/2.2.9 (Debian) DAV/2 SVN/1.5.1 mod_jk/1.2.26 PHP/5.2.6-1+lenny9 with Suhosin-Patch mod_python/3.3.1 Python/2.5.2 configured -- resuming normal operations

以下是我的网站配置的已修改版本:

<VirtualHost my.server.ip:80>
        ServerAdmin me@mydomain.com
        ServerName code.mydomain.com
        ErrorLog /srv/www/code.mydomain.com/logs/error.log
        CustomLog /srv/www/code.mydomain.com/logs/access.log combined

        <Location />
                DAV svn
                SVNPath /srv/svn/myrepository

                AuthType Basic
                AuthName "Subversion Repository"
                AuthUserFile /srv/auth/svn/myrepository.htpasswd
                Require valid-user
        </Location>
</VirtualHost>

提前感谢您提供的任何帮助!


以下是我根据其他用户的建议完成的一些故障排除的结果(非常感谢)。在每种情况下,我在进行更改后重新启动Apache,然后检查网站以验证结果:

0)我没有通过SSL连接。

1)SVNParentPath仅在多个存储库正在使用时才需要 - 这里,我只使用一个。不过,我使用SVNParentPath作为测试重新进行配置,得到了相同的结果。

2)我试图将Auth选项放在Limit节中,并得到相同的结果。然后我删除了所有的Auth选项,但得到了相同的结果。

3)从配置文件中删除了所有Auth选项并收到相同的结果后,我认为这与授权模块无关;尽管如此,我可以确认虽然我已经加载了dav_svn模块,但我没有加载authz_svn模块。

4)我已经在 / srv / svn / myrepository 位置创建了存储库。我在该位置运行了 svnadmin verify ,该工具报告一切正常。

5)我在Debian 5上,Apache运行为www-data;在此之前,我已经给出了www-data: / srv / svn 的www-data所有权以及 / srv / svn / myrepository 。我在这些目录上运行 stat 来验证这一点。

6)Ping code.mydomain.com 表明它确实正在解析为正确的IP

7)我运行了 a2ensite code.mydomain.com ,显然还没有完成(oops),并重新启动了Apache。文件夹 /srv/www/code.mydomain.com/logs 现在包含access.log和error.log,但这两个文件仍为空。同时,尝试访问 code.mydomain.com 会产生与之前相同的结果,默认的Apache error.log包含与以前相同的错误消息。

8)所有Apache配置文件都不包含 NameVirtualHost *:80 行。

2 个答案:

答案 0 :(得分:0)

首先检查您是否会 http 而不是 https

我正在使用centos 5.5。将我的/etc/httpd/conf.d/subversion.conf与您提供的内容进行比较,得出以下观察结果。

检查:

  1. SVNPath应为SVNParentPath
  2. 尝试注释掉AuthType,AuthName,AuthUserFile并要求查看是否有效。请尝试将它们包含在:

    <LimitExcept GET PROPFIND OPTIONS REPORT>
    ...
    </LimitExcept>
    
  3. 这些行在某处

    LoadModule dav_svn_module     modules/mod_dav_svn.so
    LoadModule authz_svn_module   modules/mod_authz_svn.so
    
  4. 你已经完成了

    svnadmin create /srv/svn/myrepository
    
  5. 你已经完成了

    chown -R apache.apache /srv/svn/myrepository
    

    (如果您使用debian / ubuntu apache.apache将是www-data:www-data)。

  6. 似乎你不应该把这些东西放在文件/etc/apache2/sites-available/code.domain.com中,而应该编辑/etc/apache2/mods-available/dav_svn.conf(它应该已经在那里并且包含或多或少与您尝试放入站点conf文件中相同的内容。从站点conf文件中删除所有重复的内容。)

    您需要在位置/ svn。

    中添加路径

答案 1 :(得分:0)

我认为您只需要确保svn网站虚拟域保持在层次结构的顶部。默认情况下,debian系统将默认端口配置为默认域。您可能想要更改特定于域的内容。

请查看此链接http://www.daniweb.com/forums/thread268331.html以获取详细说明。

最后一行“sudo a2ensite svn.example.com”非常重要。