Назад | Перейти на главную страницу

настройка vhost для нескольких репозиториев SVN на одном сервере

У меня есть 2 репозитория svn на моем экземпляре EC2.
Они расположены в /ebs/svn/repo1 & /ebs/svn/repo2.

Я создал псевдоним домена svn.mydomain.com, чтобы указать на родительский каталог выше (/ebs/svn).

Я хотел бы получить доступ к каждому из вышеуказанных репо, используя следующий формат URL:
svn.mydomain.com/repo1
svn.mydomain.com/repo2

В настоящее время у меня есть репо1, работающее со следующей конфигурацией 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>

Проблема в том, что я могу получить доступ только к repo1 через вышеуказанный конфиг vhosts.

Я хотел бы получить доступ к обоим репо в следующем формате:
svn.mydomain.com/repo1
svn.mydomain.com/repo2

Что мне нужно изменить, чтобы получить доступ к моему репозиторию svn через их каталоги?

Потому что вы установили 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›

Что я сделал: (Как ответил @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">Итак, по сути, добавьте новое местоположение для каждого репо.

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