在同一服务器上为多个 SVN 存储库设置 vhost

Ani*_*nil 4 svn webdav virtualhost apache-2.2

我的 EC2 实例上有 2 个 svn 存储库。
它们位于/ebs/svn/repo1& 中/ebs/svn/repo2

我创建了一个域别名svn.mydomain.com,指向上面 ( /ebs/svn)的父目录。

我想使用以下 URL 格式访问上述每个存储库:
svn.mydomain.com/repo1
svn.mydomain.com/repo2

目前,我让 repo1 使用以下 vhosts 配置。

<VirtualHost *:80>
        ServerName svn.mydomain.com
        ServerAlias svn.mydomain.com
        ErrorLog /var/www/html/log/svn.mydomain.com-log
        <Location "/" >
            DAV svn
            SVNPath /ebs/svn/repo1
            AuthType Basic
            AuthName "SVN - Private - Repos"
            AuthUserFile /ebs/svn/login/svn-auth-conf
            Require valid-user
       </Location>
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

问题是,我只能repo1通过上面的 vhosts 配置访问。

我想以以下格式访问两个 repo:
svn.mydomain.com/repo1
svn.mydomain.com/repo2

我需要更改什么才能通过目录访问我的 svn 存储库?

Old*_*ool 7

因为您已经设置了SVNPath指令,所以您对路径进行了“硬编码”:

SVNPath /ebs/svn/repo1
Run Code Online (Sandbox Code Playgroud)

尝试使用该SVNParentPath指令来配置将保存所有存储库的“top”目录。用这个替换上面的行:

SVNParentPath /ebs/svn/
Run Code Online (Sandbox Code Playgroud)

如果您想允许用户查看所有可用存储库的列表(如果他们只是转到 )svn.mydomain.com,您还应该添加以下行:

SVNListParentPath on
Run Code Online (Sandbox Code Playgroud)

这将允许列出您的所有存储库。否则,将显示“禁止”页面svn.mydomain.com而不是存储库列表。

总而言之,这是一个完整的位置块示例:


    ‹Location "/"›
        DAV svn
        SVNParentPath /ebs/svn/
        SVNListParentPath On
        SSLRequireSSL
        AuthType Basic
        AuthName "svn ebs"
        AuthUserFile conf/svnpasswd 
        Require valid-user
    ‹/Location›
Run Code Online (Sandbox Code Playgroud)