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

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

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

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

我想要使​​用以下 URL 格式访问上述每个 repo:
svn.mydomain.com/repo1
svn.mydomain.com/repo2

目前我有一个使用以下 vhosts 配置的 repo1。

<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>

问题是,我只能repo1通过上述 vhosts 配置进行访问。

我想以以下格式访问这两个存储库:
svn.mydomain.com/repo1
svn.mydomain.com/repo2

我需要做哪些更改才能通过其目录访问我的 svn 存储库?

答案1

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

SVNPath /ebs/svn/repo1

尝试使用SVNParentPath指令来配置将保存所有存储库的“顶级”目录。将上面的行替换为以下内容:

SVNParentPath /ebs/svn/

如果您想允许用户在访问时查看所有可用存储库的列表svn.mydomain.com,您还应该添加以下行:

SVNListParentPath on

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

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


    ‹Location "/"›
        DAV svn
        SVNParentPath /ebs/svn/
        SVNListParentPath On
        SSLRequireSSL
        AuthType Basic
        AuthName "svn ebs"
        AuthUserFile conf/svnpasswd 
        Require valid-user
    ‹/Location›

答案2

我做了什么:(正如@Oldskool 所回答的)

<VirtualHost *:80>
        ServerName svn.mydomain.com
        ServerAlias svn.mydomain.com
        ErrorLog /var/www/html/log/svn.mydomain.com-log
        <Location "/" >
            DAV svn
            # Delete SVNPath!
            SVNParentPath /ebs/svn/ # add this!
            SVNListParentPath on #Lists all the repos!! coool stuff! :D
            AuthType Basic
            AuthName "Private - Repos"
            AuthUserFile /ebs/svn/login/svn-auth-conf
            Require valid-user
       </Location>
</VirtualHost>

谢谢@Oldskool!


老方法
这是我发现的一种较旧的方法,但对于多个存储库,您必须添加多个标签。(使用上面@oldSkool 的答案,效果更好!) (注意到了<Location "/repo1">,所以基本上,为每个 repo 添加一个新位置。

<VirtualHost *:80>
        ServerName svn.mydomain.com
        ServerAlias svn.mydomain.com
        ErrorLog /var/www/html/log/svn.mydomain.com-log
        <Location "/repo1" >
            DAV svn
            SVNPath /ebs/svn/repo1
            AuthType Basic
            AuthName "Private - Repo1"
            AuthUserFile /ebs/svn/login/svn-auth-conf
            Require valid-user
        </Location>
        <Location "/repo2" >
            DAV svn
            SVNPath /ebs/svn/repo2
            AuthType Basic
            AuthName "Private - Repo2"
            AuthUserFile /ebs/svn/login/svn-auth-conf
            Require valid-user
       </Location>
</VirtualHost>

相关内容