1

Я хотел бы настроить сервер svn/http, чтобы я мог получить доступ к нескольким репозиториям через поддомен "svn":

Я использую Debian 6, и у меня уже есть несколько vhosts, настроенных стандартным способом для sites-available .

Ресурсы и их проблемы:

Как: подрывная деятельность SVN с Apache2 и DAV

Этот не имеет дело с сервером с несколькими vhosts.

Установка и настройка Subversion
  • Этот рассматривает только один репозиторий Subversion.
  • Этот показывает размещение SVN DAV <Location> в файле svn vhost.
    • Однако в нем не указано, следует ли размещать его внутри или снаружи <VirtualHost> .
    • Действительно ли это ограничивает доступ к Subversion только этому vhost? Я только что попробовал, и могу получить доступ к /foorepo с любого субдомена.
Настройка Subversion и Trac в качестве виртуальных хостов на сервере Ubuntu
  • Это, кажется, очень близко, но я все еще могу получить доступ к репозиториям с любого vhost. Другими словами, не имеет значения, какой поддомен я укажу, если путь соответствует имени репо. Не имеет никакого смысла. И да, мой <Location> находится внутри <VirtualHost> .

Кажется, что многие из этих статей были написаны в 2006 году или ранее, и не обязательно соответствуют методам конфигурации, которые используют более новые дистрибутивы.

Кто-нибудь может направить меня в правильном направлении?

1 ответ1

1

методы конфигурации, которые используют более новые дистрибутивы

Никоим образом не коррелирует с настройкой SVN-WebDAV внутри 1. одного 2. любого 3. (забытого)... сайта внутри установки Apache, независимо от того, использовался контейнер Main Site или контейнер VirtualHost. Если вы не можете понять настройки httpd.conf и перевести его в "действия и результаты" - это не проблема документации, это проблемы с умом, лично ваши.

Я все еще очень хорошо сегодня утром, у тебя есть причина быть счастливым.

Давайте рассмотрим вашу бизнес-задачу

у меня есть настройки сервера svn/http, чтобы я мог получить доступ к нескольким репозиториям через поддомен "svn"

что переведено на техническое задание как

  • Есть (виртуальный) хост svn.example.com
  • Иметь SVN-DAV в корне хоста
  • Простое управление множеством репо под root требует использования SVNParentPath
  • Добавьте SSL-поддержку в конце концов

Реализация

  1. Создание vhost svn (оставьте это задание для вас)
  2. Добавление в Apache config, необходимое для модулей Subversion (задача LoadModule оставлена для вас)
  3. Настройка местоположения для SVN

Мы будем использовать конфигурацию из Subversion Book, конец главы "Базовая конфигурация Apache", в качестве отправной точки

<Location /svn>
  DAV svn

  # Automatically map any "/svn/foo" URL to repository /var/svn/foo
  SVNParentPath /var/svn
</Location>

Переместить контейнер Location в контейнер VirtualHost (на основе имени виртуального хоста) (потому что инвертированное вложение просто невозможно), исправить путь к местоположению

Имя_сервера svn.example.com DocumentRoot /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>

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .