Как настроить сервер Subversion (SVN) в GNU / Linux - Ubuntu [закрыто]


95

У меня есть ноутбук под управлением Ubuntu, который я хотел бы использовать в качестве сервера Subversion. И для себя, и для других удаленно. Какие шаги необходимы, чтобы это работало? Пожалуйста, включите шаги, чтобы:

  • Получите и настройте Apache и необходимые модули (я знаю, что есть и другие способы создания SVN-сервера, но мне бы хотелось, чтобы он был специфичным для Apache)
  • Настроить безопасный способ доступа к серверу (SSH / HTTPS)
  • Настройте набор авторизованных пользователей (например, они должны быть авторизованы для фиксации, но могут свободно просматривать)
  • Подтвердите настройку с помощью начальной фиксации (своего рода "Hello world")

Эти шаги могут включать любое сочетание команд командной строки или графического интерфейса пользователя. Если можете, обратите внимание, где инструкции относятся к конкретному дистрибутиву или версии, и где вместо этого можно использовать выбор конкретного инструмента (скажем, nano вместо vi ).


Могу ли я использовать сервер Subversion в Ubuntu и клиенты на любой платформе? как клиент Tortoise SVN в Windows?
Рахил Хасан

Ответы:


146

Что я предпринял, чтобы превратить свой ноутбук в сервер Subversion. Следует отдать должное АлефЗарро за его указания здесь . Теперь у меня есть рабочий SVN-сервер (который в настоящее время тестировался только локально).

Конкретная настройка: Kubuntu 8.04 Hardy Heron

Требования для следования этому руководству:

  • программа-менеджер пакетов apt-get
  • текстовый редактор (я использую kate)
  • права доступа sudo

1: Установите HTTP-сервер Apache и необходимые модули:

sudo apt-get install libapache2-svn apache2

Будут установлены следующие дополнительные пакеты:

apache2-mpm-worker apache2-utils apache2.2-common

2: Включить SSL

sudo a2enmod ssl
sudo kate /etc/apache2/ports.conf

Добавьте или убедитесь, что в файле есть следующее:

<IfModule mod_ssl.c>
    Listen 443
</IfModule>

3: Создайте сертификат SSL:

sudo apt-get install ssl-cert
sudo mkdir /etc/apache2/ssl
sudo /usr/sbin/make-ssl-cert /usr/share/ssl-cert/ssleay.cnf /etc/apache2/ssl/apache.pem

4: Создать виртуальный хост

sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/svnserver
sudo kate /etc/apache2/sites-available/svnserver

Измените (в ports.conf):

"NameVirtualHost *" to "NameVirtualHost *:443"

и (в svnserver)

<VirtualHost *> to <VirtualHost *:443>

Добавьте в ServerAdmin (также в файле svnserver):

SSLEngine on
SSLCertificateFile /etc/apache2/ssl/apache.pem
SSLProtocol all
SSLCipherSuite HIGH:MEDIUM

5: Включите сайт:

sudo a2ensite svnserver
sudo /etc/init.d/apache2 restart

Чтобы преодолеть предупреждения:

sudo kate /etc/apache2/apache2.conf

Добавить:

"ServerName $your_server_name"

6: Добавление репозитория (репозиториев): в следующей настройке предполагается, что мы хотим разместить несколько репозиториев. Запустите это для создания первого репозитория:

sudo mkdir /var/svn

REPOS=myFirstRepo
sudo svnadmin create /var/svn/$REPOS
sudo chown -R www-data:www-data /var/svn/$REPOS
sudo chmod -R g+ws /var/svn/$REPOS

6.a. Для дополнительных репозиториев: повторите шаг 6 (изменив значение REPOS), пропустив шагmkdir /var/svn

7: Добавить аутентифицированного пользователя

sudo htpasswd -c -m /etc/apache2/dav_svn.passwd $user_name

8: Включите и настройте WebDAV и SVN:

sudo kate /etc/apache2/mods-available/dav_svn.conf

Добавьте или раскомментируйте:

<Location /svn>
DAV svn

# for multiple repositories - see comments in file
SVNParentPath /var/svn

AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /etc/apache2/dav_svn.passwd
Require valid-user
SSLRequireSSL
</Location>

9: перезапустите сервер apache:

sudo /etc/init.d/apache2 restart

10: Проверка:

Запустил браузер:

http://localhost/svn/$REPOS
https://localhost/svn/$REPOS

Оба требовали имени пользователя и пароля. Думаю раскомментировать:

<LimitExcept GET PROPFIND OPTIONS REPORT>

</LimitExcept>

в /etc/apache2/mods-available/dav_svn.conf, позволит анонимный просмотр.

В браузере отображается «Версия 0: /».

Зафиксируйте что-нибудь:

svn import --username $user_name anyfile.txt https://localhost/svn/$REPOS/anyfile.txt -m “Testing”

Примите сертификат и введите пароль. Посмотрите, что вы только что совершили:

svn co --username $user_name https://localhost/svn/$REPOS

Следуя этим шагам (при условии, что я не делал никаких ошибок копирования / вставки), у меня был рабочий репозиторий SVN на моем ноутбуке.


Инструкции отлично работали и с Jaunty. Спасибо!
Майкл Мусса

6
Казалось, работает отлично, но при попытке доступа к нему я получаю 403 запрета и не запрашиваю пароль. Любые намеки на то, что могло быть не так?
корона

@korona: Как получить к нему доступ: запустить команды SVN или перейти к нему?
Grundlefleck 04

1
"NameVirtualHost *" to "NameVirtualHost *:443"находится в ports.conf, а <VirtualHost *> to <VirtualHost *:443>находится в настройках svnserver. об этом следует упомянуть. я очень запутался, потому что я искал в настройках svnserver для NameVirtualHost и не мог его найти.
Wandang

1
В Debian Stretch вам кажется, что вам нужно установить libapache2-mod-svnвместо libapache2-svn(поскольку последний больше не доступен).
TheStoryCoder 07

2

После этого мне нужно было выполнить (в контексте приведенного выше примера)

$ sudo chmod g + w /var/svn/$REPOS/db/rep-cache.db

$ sudo chown www-данные: www-data /var/svn/$REPOS/db/rep-cache.db

В противном случае я продолжал получать ошибку 409 при фиксации локальных изменений (хотя обязательства были эффективными на стороне сервера, мне нужно было следить за локальными обновлениями)


1

Эта статья, кажется, дает довольно хорошее изложение всего процесса. Я бы рекомендовал следовать инструкциям, а затем задавать более конкретные вопросы о любых проблемах, с которыми вы сталкиваетесь, которые не рассматриваются в статьях, на которые я и другие люди ссылались в этих ответах.


1

Если вы получаете 403 запрещено при переходе на веб-сервер, это может быть связано с тем, что вы использовали имя хоста, которое не является тем, что вы указали в своем файле конфигурации (например, localhost или 127.0.0.1). Попробуйте вместо этого нажать https: // whateveryousetasyourhostname ...


Другая причина 403: установить svn path на символическую ссылку. Если ваш svn-путь является символической ссылкой, вам необходимо разрешить следующие символические ссылки.
copolii

-2

Напишите, пожалуйста, одну команду на терминале.

Чтобы открыть терминал, нажмите Ctrl+ Alt+ T, а затем введите эту команду:

$sudo apt-get install subversion

-2

Для Apache:

sudo apt-get -yq install apache2

Для SSH:

sudo apt-get -yq install openssh-server

Для Subversion:

sudo apt-get -yq install subversion subversion-tools

Если хотите, можете объединить их в одну команду, например:

sudo apt-get -yq install apache2 openssh-server subversion subversion-tools

Я не могу помочь с остальным ...

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.