Apache 别名在浏览器中有效,但在尝试通过 svn 客户端访问时无效

Apache 别名在浏览器中有效,但在尝试通过 svn 客户端访问时无效

我遇到了一个让我抓狂的问题。我从头开始安装了一台 ubuntu 14.04 机器,安装了 LAMP 堆栈和 subversion。我创建了一个新文件夹 /var/www/svn 并导入了我的各种 SVN 转储。确保它们都已在 svnserve.conf 文件中设置为可通过 svn:// 访问,并确保 passwd 文件中有一个用户可供我访问。我将自己和 www-data 用户添加到该目录,以确保它在互联网上可用。为了避免过多的属性,我使用以下命令启动了 svnserve svnserve -d

然后我继续向我的 000-default.conf 添加一个别名Alias /svn /var/www/svn,重新启动 apache2 服务并且它在浏览器中正常运行。

现在,我遇到了一个实际问题,当我尝试使用 tortoisesvn 访问 repo 时,我收到错误消息,提示该位置没有 svn。经过一段时间的研究,我看到有人提到他使用“完整”路径时能够访问它。所以我尝试了以下方法svn://mydomain.com/var/www/svn,成功了...

由于别名在浏览器中有效,但在 SVN 客户端中无效,所以我完全惊呆了。

有任何想法吗?


总结一下:当我使用 www.example.com/svn/myrepo 时,它不起作用,而当我使用 www.example.com/var/www/svn/myrepo 时,它起作用。

完整的 000-default.conf:

<VirtualHost *:80>
    ServerName www.example.com
    ServerAlias example.com

    ServerAdmin [email protected]
    DocumentRoot /var/www/html

    <Directory />
            Options FollowSymLinks
            AllowOverride All
    </Directory>

    <Directory /var/www/html/>
            AllowOverride All
            Order allow,deny
            allow from all
    </Directory>

    Alias /svn /var/www/svn

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

输出apachectl -S

VirtualHost configuration:*:80 www.example.com (/etc/apache2/sites-enabled/000-default.conf:1) ServerRoot: "/etc/apache2" Main DocumentRoot: "/var/www" Main ErrorLog: "/var/log/apache2/error.log" Mutex default: dir="/var/lock/apache2" mechanism=fcntl Mutex mpm-accept: using_defaults Mutex watchdog-callback: using_defaults Mutex rewrite-map: using_defaults PidFile: "/var/run/apache2/apache2.pid" Define: DUMP_VHOSTS Define: DUMP_RUN_CFG User: name="www-data" id=33 not_used Group: name="www-data" id=33 not_used

答案1

http仅当您使用或访问存储库时才使用 apache 配置文件https。当您使用 时,连接由完全独立的程序svn处理。svnserve

svnserve 的文档可以在以下位置找到:SVN 手册或者手册页man svnserveman svnserve.conf。您可以在调用它时设置根路径,如下所示:

svnserve -r /var/www

使其开始在 下/var/www而不是立即在 下寻找文件和存储库/

相关内容