Установка и настройка сервера SVN (Subversion) на Linux Ubuntu

Обновлено и опубликовано Опубликовано:

В интернете можно найти много информации о настройке системы управления версиями Subversion (также ее можно называть SVN). В данной инструкции мы попробуем объединить всю информацию, необходимую для начала работы:

  • Установка.
  • Первичная настройка.
  • Доступ по http.
  • Примеры работы с SVN на клиенте.

Разобьем ознакомление с программным продуктом по шагам:

Подготовка системы

Перед тем, как начать установку и настройку, выполним предварительные действия.

1. Обновление пакетов

Для корректной работы с пакетами в Ubuntu, необходимо, как минимум, обновить кэш:

apt update

Также можно выполнить обновление установленных пакетов:

apt upgrade

2. Правильное время

Для корректных временных меток в нашем репозитории нужно позаботиться о правильном времени.

Настраиваем временную зону:

timedatectl set-timezone Europe/Moscow

* тут мы указали зону по московскому времени.

Список всех зон можно посмотреть командой:

timedatectl list-timezones

Устанавливаем утилиту для синхронизации времени и разрешаем запуск демона:

apt install chrony

systemctl enable chrony

3. Настройка брандмауэра

Если в нашей системе используется брандмауэр, нам необходимо открыть порты 80 и 443 — на них по умолчанию работает веб.

Как правило, в Ubuntu для этого используется iptables:

iptables -I INPUT -p tcp --dport 80 -j ACCEPT

iptables -I INPUT -p tcp --dport 443 -j ACCEPT

Для сохранения правил используем iptables-persistent:

apt install iptables-persistent

netfilter-persistent save

Установка SVN и создание репозитория

Начнем с Subversion. Установим следующие пакеты:

apt install subversion subversion-tools

* где:

  • subversion — собственно, сама система контроля версий.
  • subversion-tools — набор утилит для работы с SVN.

Теперь можно создать репозиторий, например, в каталоге /var/lib/svn:

mkdir /var/lib/svn

svnadmin create /var/lib/svn/repo1

* где repo1 — имя созданного репозитория.

В данном каталоге должны появиться следующие файлы и папки:

ls /var/lib/svn/repo1

conf  db  format  hooks  locks  README.txt

Двигаемся дальше.

Веб-сервер

Для работы с репозиторием SVN используется протокол http. Поднимем веб-сервер Apache.

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

apt install apache2 apache2-utils libapache2-mod-svn

* где:

  • apache2 — веб-сервер.
  • apache2-utils — набор утилит для работы с apache. В частности, мы будем использовать htpasswd для создания пользователя для авторизации через веб.
  • libapache2-mod-svn — модули mod_dav_svn и mod_authz_svn для Apache. Они позволяют реализовать на сервере WebDAV, с помощью которого можно взаимодействовать с репозиториями.

Разрешаем и активируем модули dav и dav_svn:

a2enmod dav dav_svn

Открываем на редактирование файл:

vi /etc/apache2/mods-enabled/dav_svn.conf

Добавляем строки:

<Location /svn>
   DAV svn
   SVNParentPath /var/lib/svn

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

* где:

  • /var/lib/svn — базовый путь, который мы определили для репозитория.
  • /etc/apache2/dav_svn.passwd — файл, в котором будут храниться данные с логинами и паролями для доступа к репозиторию по http.

Проверяем конфигурацию:

apachectl -t

Мы должны увидеть:

...
Syntax OK

Перезапускаем сервис командой:

systemctl restart apache2

Создаем первую учетную запись для авторизации по http:

htpasswd -cm /etc/apache2/dav_svn.passwd admin

* в данном примере мы создадим учетную запись admin.

Последующие записи мы создаем без параметра -c:

htpasswd -m /etc/apache2/dav_svn.passwd user2

После вводим дважды пароль:

New password: 
Re-type new password: 
Adding password for user admin

Выставляем владельца для каталога репозитория:

chown -R www-data:www-data /var/lib/svn

Проверка работы репозитория

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

Локально

Сначала подключимся к репозиторию локально с того же сервера.

Перейдем во временный каталог:

cd /tmp

Подключимся к нашему репозиторию и создадим копию в каталоге local:

svn checkout file:///var/lib/svn/repo1

Перейдем в появившейся каталог:

cd repo1

* созданный каталог будет с таким же именем, как и название репозитория.

Увидеть информацию о репозитории можно командой:

svn info

Попробуем добавить файл в репозиторий:

echo test > test.txt

svn add test.txt

svn commit -m 'Added test file'

* первой командой создаем файл, второй добавляем его в репозиторий, третьей — коммитим и пушим.

С удаленной машины

Для работы с репозиторием по сети, необходимо установить клиента. Рассмотрим это на примере другого компьютера с Ubuntu.

Выполним установку subversion:

apt install subversion

Теперь можно подключиться к нашему репозиторию командой:

svn checkout --username admin http://192.168.100.15/svn/repo1/

* где 192.168.100.15 — IP-адрес моего сервера в локальной сети; admin — имя учетной записи, под которой мы будем авторизовываться на веб.

Перейдем в появившейся каталог:

cd repo1

Мы должны увидеть ранее созданный файл test.txt:

ls -l

Попробуем создать еще один файл и запушим его в репозиторий:

echo test2 > test2.txt

svn add --force .

svn commit -m 'Added second commit'

* обратите внимание, что в данном примере мы используем ключ --force для добавления всех файлов.

# Ubuntu # Серверы
Дмитрий Моск — частный мастер
Была ли полезна вам эта инструкция?

Да            Нет