Гид по технологиям

Настройка Subversion (SVN) на Ubuntu

5 min read DevOps Обновлено 27 Nov 2025
Настройка Subversion (SVN) на Ubuntu
Настройка Subversion (SVN) на Ubuntu

Оглавление

  • Что такое Subversion?
  • Предисловия и требования
  • Установка Subversion и Apache
  • Настройка Apache для доступа к SVN
  • Добавление файлов проекта в репозиторий
  • Рекомендации по безопасности и права доступа
  • Когда SVN не подходит
  • Альтернативные подходы и миграция
  • Роль и чек-лист
  • Критерии приёмки
  • Краткое резюме
  • Глоссарий

Что такое Subversion?

Subversion (SVN) — это централизованная система контроля версий с открытым исходным кодом. Она хранит историю изменений файлов в одном центральном репозитории. Ключевая идея: все коммиты происходят в центральный репозиторий, поэтому не возникает расхождений между локальными репозиториями, как в распределённых системах.

Коротко о плюсах и минусах:

  • Плюсы: проще для начала, меньше команд, предсказуемая модель «центр-получатель». Подходит для проектов с централизованным администрированием.
  • Минусы: требуется доступ к центральному серверу для коммитов; меньше гибких инструментов и экосистемы по сравнению с Git.

Предисловия и требования

Коротко — что должно быть готово перед началом:

  • Ubuntu (локальная машина или сервер) с правами sudo.
  • Установленный Apache или возможность его установить.
  • Понимание базовых команд терминала.

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

Установка Subversion и Apache

  1. Откройте Терминал (Ctrl + Alt + T).

  2. Обновите список пакетов:

sudo apt update

Терминал: обновление apt

  1. Установите Apache:
sudo apt install apache2

Установка Apache в терминале

  1. Установите Subversion и модуль Apache для работы с SVN:
sudo apt install subversion libapache2-mod-svn

Подтвердите установку, введя Y, когда система запросит подтверждение.

Установка Subversion и модуля Apache

  1. Создайте директорию для репозиториев и инициализируйте репозиторий:
sudo svnadmin create /var/lib/svn

Создание репозитория svnadmin

  1. Установите права доступа: владелец — веб-сервер (www-data), запрет записи для остальных пользователей:
sudo chown -R www-data:www-data /var/lib/svn
sudo chmod -R 770 /var/lib/svn

Настройка прав доступа к репозиторию

Важно: права 770 означают, что только владелец и группа (www-data) имеют доступ; остальным доступ запрещён.

Настройка Apache для доступа к SVN

  1. Откройте конфигурационный файл модуля Subversion:
sudo nano /etc/apache2/mods-available/dav_svn.conf

Редактирование конфигурации dav_svn.conf

  1. Найдите блок и убедитесь, что следующие строки не закомментированы (уберите ‘#’ при необходимости):

  DAV svn
  SVNPath /var/lib/svn
  AuthType Basic
  AuthName "Subversion Repository"
  AuthUserFile /etc/apache2/dav_svn.passwd
  
    Require valid-user
  
  1. Включите необходимые модули Apache и перезапустите сервер. Обычно модули dav и dav_svn устанавливаются вместе с пакетом, но если нужно — включите их явно:
sudo a2enmod dav
sudo a2enmod dav_svn
sudo apt install apache2-utils
sudo systemctl restart apache2

Установка apache2-utils

  1. Создайте файл паролей и добавьте пользователя (замените yourusername на ваше имя пользователя):
sudo htpasswd -cm /etc/apache2/dav_svn.passwd yourusername

Опция -c создаёт новый файл; для добавления последующих пользователей используйте без -c.

Создание пользователя через htpasswd

  1. Перезапустите Apache, если вы не делали этого ранее:
sudo systemctl restart apache2
  1. Откройте в браузере http://localhost/svn. Если вы видите страницу с информацией о репозитории, настройка прошла успешно.

Просмотр репозитория по адресу localhost/svn

Добавление файлов проекта в репозиторий

  1. Скачайте рабочую копию пустого репозитория в текущую директорию:
svn checkout http://localhost/svn

Команда svn checkout

  1. Перейдите в папку svn и создайте или скопируйте туда файлы проекта:
cd svn
# копируем файлы проекта сюда

Файлы проекта в рабочей копии

  1. Добавьте файлы в индекс SVN и выполните коммит:
svn add *
svn commit -m "Первоначальный импорт проекта"

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

Добавление и коммит файлов в SVN

  1. Обновите страницу http://localhost/svn — вы должны увидеть добавленные файлы и увеличение номера ревизии.

Успешный импорт; ревизия 1

Image credit: Pexels. All screenshots by Brandon Li.

Рекомендации по безопасности и права доступа

  • Храните резервные копии каталога /var/lib/svn на отдельном диске или в сетевом хранилище.
  • Используйте HTTPS для удалённого доступа. Для этого настройте SSL в Apache (Let’s Encrypt или корпоративный сертификат).
  • Отключите анонимный доступ и требуйте аутентификацию для операций записи.
  • Подумайте об ограничении доступа по IP, если репозиторий используется только внутри сети.

Когда Subversion не подходит

  • Вам нужна полноценная офлайн-работа с возможностью коммитов (тогда лучше Git).
  • Проект использует распределённую модель разработки с большим количеством форков и ветвлений — Git даёт больше гибкости.
  • Требуются современные хостинг-сервисы и интеграции CI/CD с удобной экосистемой — экосистема Git (GitHub/GitLab) шире.

Альтернативные подходы и миграция

  • Git — наиболее распространённая альтернатива. Для миграции существуют инструменты (svn2git), но предварительное тестирование обязательно.
  • Для малых проектов можно использовать простые файловые бэкапы, однако это не заменит систему версионного контроля.

Роль и чек-лист

Системный администратор:

  • Установить Apache и Subversion.
  • Создать и настроить репозиторий в /var/lib/svn.
  • Настроить SSL и резервное копирование.

Разработчик:

  • Забрать рабочую копию: svn checkout.
  • Добавлять и коммитить изменения: svn add, svn commit.
  • Проверять обновления: svn update.

Чек-лист перед вводом в эксплуатацию:

  • Репозиторий и веб-доступ работают на localhost.
  • Пароли и учётные записи настроены.
  • Резервное копирование настроено.
  • Доступ по HTTPS (если требуется) проверен.

Критерии приёмки

  • Репозиторий доступен по http(s) и отвечает на запросы.
  • Пользователь может выполнить svn checkout, svn add и svn commit с корректным логом и увеличением номера ревизии.
  • Права на каталоги настроены: только веб-сервер и администраторы имеют доступ.
  • План резервного копирования задокументирован.

Набор действий при проблемах (короткий runbook)

  1. Если Apache не запускается:

    • sudo systemctl status apache2
    • Просмотрите логи: sudo journalctl -u apache2
  2. Если доступ по /svn возвращает 403 или 404:

    • Проверьте права /var/lib/svn и файл dav_svn.conf на ошибки.
    • Убедитесь, что модули dav и dav_svn включены: sudo a2enmod dav dav_svn
  3. Если при коммите — ошибка аутентификации:

    • Убедитесь, что ваш пользователь есть в /etc/apache2/dav_svn.passwd и что пароль введён верно.

Краткое резюме

Subversion остаётся удобным решением для централизованного контроля версий. На Ubuntu его легко установить и настроить через Apache. Если вам нужна оффлайн-работа и гибкие ветки — рассмотрите Git. Для продакшн-развёртывания обязательно настройте HTTPS и резервное копирование.

Глоссарий (одно предложение):

  • Репозиторий — центральное хранилище версий файлов.
  • Коммит — сохранение изменений в репозиторий с сообщением.
  • Рабочая копия — локальная папка с файлами, связанными с репозиторием.

Важно: перед переносом в продакшн протестируйте все команды на тестовой машине.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро