我遇到了一个让我抓狂的问题。我从头开始安装了一台 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 svnserve
和man svnserve.conf
。您可以在调用它时设置根路径,如下所示:
svnserve -r /var/www
使其开始在 下/var/www
而不是立即在 下寻找文件和存储库/
。