У меня есть 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>