我遇到了一个让我发疯的问题。 我从零开始安装了一个ubuntu 14.04机器,安装了一个LAMP堆栈和subversion。 我创build了一个新的文件夹/ var / www / svn并导入了我的各种SVN转储。 确保他们都被设置在svnserve.conf文件中,通过svn://可以访问,并确保passwd文件中有一个用户可以访问它。 我将自己和www-data用户添加到该目录,以确保它在互联网上可用。 为了不打扰太多的属性,我使用以下命令svnserve -d启动了svnserve。
然后,我继续添加到我的000-default.conf别名Alias /svn /var/www/svn ,重新启动apache2服务,它在浏览器中像一个魅力。
现在到我的实际问题,当我试图访问repo与tortoisesvn我得到的错误消息,没有svn在该位置。 花了很长一段时间研究之后,我发现有人提到他在使用“完整”path时能够访问它。 所以我尝试了以下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
只有使用http或https访问存储库时,才会使用apacheconfiguration文件。 当你使用svn ,连接由svnserve处理,这是一个完全独立的程序。
svnserve的文档可以在SVN书籍或man page man svnserve和man svnserve.conf 。 您可以在调用时设置根path,如下所示:
svnserve -r /var/www
使它开始寻找文件和/var/www下的/var/www而不是立即在/下。