我想要设置我的 svn/http 服务器,以便我可以通过“svn”子域访问多个存储库:
我正在使用 Debian 6,并且已经通过标准sites-available
方法设置了多个虚拟主机。
资源及其问题:
如何:使用 Apache2 和 DAV 颠覆 SVN这个不处理具有多个虚拟主机的服务器。
安装和配置 Subversion- 这个只考虑一个 subversion 存储库。
- 这个确实显示将 SVN DAV 放入
<Location>
svn vhost 文件中。- 然而,它并没有说是否要把它里面或者外部标签
<VirtualHost>
。 - 这真的会将颠覆访问限制在该虚拟主机上吗?我刚刚尝试过,可以从任何子域访问 /foorepo。
- 然而,它并没有说是否要把它里面或者外部标签
- 这个看起来非常接近,但我仍然可以从任何虚拟主机访问存储库。换句话说,只要路径与存储库名称匹配,我指定哪个子域都没关系。没有任何意义。是的,我的
<Location>
标签是里面这<VirtualHost>
。
许多这些文章似乎都是在 2006 年或更早的时候写的,并且不一定符合较新的发行版所使用的配置方法。
有人能给我指明正确的方向吗?
答案1
较新的发行版正在使用的配置方法
不相关无论如何,在 Apache 安装中的 1. 一个 2. 任意 3.(忘记了)... 站点中配置 SVN-WebDAV,无论使用的是主站点容器还是 VirtualHost 容器。如果您无法理解 httpd.conf 的设置并将其转化为“操作和结果” - 这不是文档的问题,而是您个人的思维问题。
我今天早上依然很好,你有理由高兴。
让我们探索您的业务任务
我已经设置了 svn/http 服务器,因此我可以通过“svn”子域访问多个存储库
转化为技术任务
- 拥有(虚拟)主机 svn.example.com
- 在主机的根目录中有 SVN-DAV
- 轻松管理 root 下的多个 repos 需要使用 SVNParentPath
- 最终添加 SSL 支持
执行
- 创建 vhost svn(这个任务留给你)
- 将 Subversion 模块所需的 Apache 配置添加到 (LoadModule 任务留给您)
- 配置 SVN 的位置
我们将使用来自颠覆之书,以“Apache 基本配置”一章结尾作为起点
<Location /svn>
DAV svn
# Automatically map any "/svn/foo" URL to repository /var/svn/foo
SVNParentPath /var/svn
</Location>
将位置容器移至 VirtualHost(基于名称的虚拟主机)容器内(因为反向嵌套是不可能的),修复位置路径
服务器名称 svn.example.com 文档根目录 /home/svn.example.com/docroot
<Location />
SVNParentPath /home/svn.example.com/svnroot
SVNListParentPath on
</Location>
但/etc/apache2/conf.d/subversion.conf
有提示
不要设置 DocumentRoot。这里不需要它,而且只会造成麻烦。
和
将错误文档映射回其默认值。
否则,mod_dav_svn 会尝试查找“错误”存储库。
但不同的路径在 DocumentRoot 和 SVNParentPath virthost 中作品(DocumentRoot 从未使用过,因为 / 被 dav_svn 拦截)并且为了方便而添加 ErrorDocument 指令“如果发生错误,我们会得到通常的答案而不会误解”
<VirtualHost *:80>
ServerName svn.example.com
DocumentRoot /home/svn.example.com/docroot
<Location />
SVNParentPath /home/svn.example.com/svnroot
SVNListParentPath on
</Location>
ErrorDocument 400 default
ErrorDocument 401 default
ErrorDocument 403 default
ErrorDocument 404 default
ErrorDocument 405 default
ErrorDocument 408 default
ErrorDocument 410 default
ErrorDocument 411 default
ErrorDocument 412 default
ErrorDocument 413 default
ErrorDocument 414 default
ErrorDocument 415 default
ErrorDocument 500 default
ErrorDocument 501 default
ErrorDocument 502 default
ErrorDocument 503 default
</VirtualHost>