Настройка Subversion (SVN) на Ubuntu
Оглавление
- Что такое Subversion?
- Предисловия и требования
- Установка Subversion и Apache
- Настройка Apache для доступа к SVN
- Добавление файлов проекта в репозиторий
- Рекомендации по безопасности и права доступа
- Когда SVN не подходит
- Альтернативные подходы и миграция
- Роль и чек-лист
- Критерии приёмки
- Краткое резюме
- Глоссарий
Что такое Subversion?
Subversion (SVN) — это централизованная система контроля версий с открытым исходным кодом. Она хранит историю изменений файлов в одном центральном репозитории. Ключевая идея: все коммиты происходят в центральный репозиторий, поэтому не возникает расхождений между локальными репозиториями, как в распределённых системах.
Коротко о плюсах и минусах:
- Плюсы: проще для начала, меньше команд, предсказуемая модель «центр-получатель». Подходит для проектов с централизованным администрированием.
- Минусы: требуется доступ к центральному серверу для коммитов; меньше гибких инструментов и экосистемы по сравнению с Git.
Предисловия и требования
Коротко — что должно быть готово перед началом:
- Ubuntu (локальная машина или сервер) с правами sudo.
- Установленный Apache или возможность его установить.
- Понимание базовых команд терминала.
Важно: если вы работаете в корпоративной сети, согласуйте размещение репозитория с администратором и политику бэкапа.
Установка Subversion и Apache
Откройте Терминал (Ctrl + Alt + T).
Обновите список пакетов:
sudo apt update
- Установите Apache:
sudo apt install apache2
- Установите Subversion и модуль Apache для работы с SVN:
sudo apt install subversion libapache2-mod-svnПодтвердите установку, введя Y, когда система запросит подтверждение.

- Создайте директорию для репозиториев и инициализируйте репозиторий:
sudo svnadmin create /var/lib/svn
- Установите права доступа: владелец — веб-сервер (www-data), запрет записи для остальных пользователей:
sudo chown -R www-data:www-data /var/lib/svn
sudo chmod -R 770 /var/lib/svn
Важно: права 770 означают, что только владелец и группа (www-data) имеют доступ; остальным доступ запрещён.
Настройка Apache для доступа к SVN
- Откройте конфигурационный файл модуля Subversion:
sudo nano /etc/apache2/mods-available/dav_svn.conf
- Найдите блок
и убедитесь, что следующие строки не закомментированы (уберите ‘#’ при необходимости):
DAV svn
SVNPath /var/lib/svn
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /etc/apache2/dav_svn.passwd
Require valid-user
- Включите необходимые модули Apache и перезапустите сервер. Обычно модули dav и dav_svn устанавливаются вместе с пакетом, но если нужно — включите их явно:
sudo a2enmod dav
sudo a2enmod dav_svn
sudo apt install apache2-utils
sudo systemctl restart apache2
- Создайте файл паролей и добавьте пользователя (замените yourusername на ваше имя пользователя):
sudo htpasswd -cm /etc/apache2/dav_svn.passwd yourusernameОпция -c создаёт новый файл; для добавления последующих пользователей используйте без -c.

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

Добавление файлов проекта в репозиторий
- Скачайте рабочую копию пустого репозитория в текущую директорию:
svn checkout http://localhost/svn
- Перейдите в папку svn и создайте или скопируйте туда файлы проекта:
cd svn
# копируем файлы проекта сюда
- Добавьте файлы в индекс SVN и выполните коммит:
svn add *
svn commit -m "Первоначальный импорт проекта"При коммите вам потребуется ввести пароль, который вы задали через htpasswd.

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

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)
Если Apache не запускается:
- sudo systemctl status apache2
- Просмотрите логи: sudo journalctl -u apache2
Если доступ по /svn возвращает 403 или 404:
- Проверьте права /var/lib/svn и файл dav_svn.conf на ошибки.
- Убедитесь, что модули dav и dav_svn включены: sudo a2enmod dav dav_svn
Если при коммите — ошибка аутентификации:
- Убедитесь, что ваш пользователь есть в /etc/apache2/dav_svn.passwd и что пароль введён верно.
Краткое резюме
Subversion остаётся удобным решением для централизованного контроля версий. На Ubuntu его легко установить и настроить через Apache. Если вам нужна оффлайн-работа и гибкие ветки — рассмотрите Git. Для продакшн-развёртывания обязательно настройте HTTPS и резервное копирование.
Глоссарий (одно предложение):
- Репозиторий — центральное хранилище версий файлов.
- Коммит — сохранение изменений в репозиторий с сообщением.
- Рабочая копия — локальная папка с файлами, связанными с репозиторием.
Важно: перед переносом в продакшн протестируйте все команды на тестовой машине.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента