Установка Apache Subversion (SVN) на CentOS 7 с HTTPS и базовой аутентификацией

Apache Subversion (SVN) — это свободное ПО для контроля версий и управления ревизиями, поддерживаемое Apache Software Foundation. Subversion хранит текущие и исторические версии исходного кода, документов и веб-страниц.
SVN широко используется в софтаверных проектах и среди открытых проектов, таких как Apache Software Foundation, FreeBSD, GCC и SourceForge.
В этой статье показано, как настроить Apache Subversion на сервере CentOS 7: установка пакетов, создание репозитория, получение SSL‑сертификата от Let’s Encrypt, настройка виртуального хоста Apache и включение базовой аутентификации.
Предварительные требования
- Сервер с CentOS 7
- Права root или sudo
- Доменное имя, указывающее на сервер (в примерах: svn.hakase-labs.io)
План действий
- Установить Apache httpd на CentOS 7
- Установить Subversion
- Настроить репозиторий Subversion
- Получить SSL‑сертификат Let’s Encrypt для Apache
- Настроить виртуальный хост Subversion в Apache
- Проверить работу репозитория и выполнить базовые операции
Шаг 1 — Установка Apache Httpd на CentOS 7
Установите пакеты Apache httpd и сопутствующие утилиты.
yum -y install httpd httpd-tools mod_sslДобавьте сервис HTTP в правила firewalld и перезагрузите правила.
firewall-cmd --permanent --zone=public --add-service=http
firewall-cmd --reloadЗапустите службу httpd и включите автозапуск при старте системы.
systemctl start httpd
systemctl enable httpdApache httpd теперь запущен на сервере.

Шаг 2 — Установка Apache Subversion (SVN)
Установим Subversion и модули для интеграции с Apache из стандартного репозитория CentOS 7.
yum -y install subversion subversion-tools mod_dav_svnПосле установки проверьте версию SVN:
svn --version
Шаг 3 — Настройка репозитория Subversion
Создадим мастер‑директорию для репозиториев и пример репозитория “hakase-project”.
Создайте каталог /svn:
mkdir /svnСоздайте репозиторий:
svnadmin create /svn/hakase-projectИзмените владельца каталога на пользователя и группу apache:
sudo chown -R apache:apache /svn/hakase-projectРепозиторий создан и готов к подключению через модуль DAV Apache.
Важно: на системах с включённым SELinux задайте рабочие контексты:
chcon -R -t httpd_sys_content_t /svn/hakase-project
chcon -R -t httpd_sys_rw_content_t /svn/hakase-projectШаг 4 — Получение SSL‑сертификата Let’s Encrypt для Apache
В примере домен — svn.hakase-labs.io. Для шифрования трафика мы используем бесплатный сертификат Let’s Encrypt через certbot.
Установите certbot:
yum -y install certbotДобавьте HTTPS в правила firewalld и перезагрузите:
firewall-cmd --add-service=https --zone=public --permanent
firewall-cmd --reloadОстановите httpd временно, чтобы certbot мог привязаться к 80 порту в режиме standalone:
systemctl stop httpd
Получите сертификат:
certbot certonly --rsa-key-size 4096 --standalone --agree-tos --no-eff-email --email you@example.com -d svn.hakase-labs.ioСертификаты появятся в каталоге /etc/letsencrypt/live/svn.hakase-labs.io/

Примечание: замените you@example.com на реальный адрес электронной почты администратора.
Шаг 5 — Настройка виртуального хоста Subversion в Apache
Создайте файл конфигурации Apache для SVN в /etc/httpd/conf.d/svn.conf:
cd /etc/httpd/conf.d/
vim svn.confВставьте следующую конфигурацию (замените серверное имя при необходимости):
ServerName svn.hakase-labs.io
DocumentRoot /var/www/html
Redirect permanent / https://svn.hakase-labs.io
DocumentRoot /var/www/html
ServerName svn.hakase-labs.io
SSLEngine on
SSLProtocol all -SSLv2
SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW
SSLCertificateFile /etc/letsencrypt/live/svn.hakase-labs.io/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/svn.hakase-labs.io/privkey.pem
ErrorLog logs/svn_error_log
TransferLog logs/svn_access_log
LogLevel warn
DAV svn
SVNParentPath /svn/
AuthType Basic
AuthName "Authorization Realm"
AuthUserFile /etc/subversion/svn.users
Require valid-user
SSLOptions +StdEnvVars
SetEnvIf User-Agent ".*MSIE.*" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
CustomLog logs/ssl_request_log \
"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
Сохраните файл и выйдите из редактора.
Создайте файл пользователей для базовой аутентификации и добавьте пользователя hakase:
sudo htpasswd -cm /etc/subversion/svn.users hakaseПерезапустите Apache:
systemctl restart httpdПользователь hakase теперь может просматривать и вносить изменения в репозиторий hakase-project.

Шаг 6 — Тестирование
Просмотр репозитория
Откройте в браузере URL: https://svn.hakase-labs.io/repo/hakase-project/
Должен появиться запрос базовой аутентификации. Авторизуйтесь как hakase.
Импорт проекта в репозиторий
Создайте структуру шаблонов:
mkdir -p ~/svn-templates/{trunk,branches,tags}Импортируйте шаблоны в репозиторий:
svn import -m 'Initial import' ~/svn-templates/ https://svn.hakase-labs.io/repo/hakase-project/ --username hakaseВ процессе вам предложат:
- Нажать ‘p’ для постоянного добавления сертификата Let’s Encrypt
- Ввести имя пользователя hakase и пароль
- Подтвердить сохранение незашифрованного пароля, при необходимости

Проверьте содержимое через веб‑интерфейс.
Клонирование репозитория
Создайте обычного пользователя и переключитесь на него:
useradd -m -s /bin/bash misaka
su - misakaКлонируйте репозиторий в локальную директорию myproject:
svn co https://svn.hakase-labs.io/repo/hakase-project/ ~/myproject --username hakaseВо время первого подключения снова разрешите сертификат, введите учетные данные и согласитесь на сохранение пароля при запросе.

Проверьте структуру:
tree ~/myproject
Коммит изменений
Перейдите в myproject и создайте тестовые файлы:
cd ~/myproject/
echo 'this is my repo' > trunk/test-hakase.txt
echo 'this is my repo01' > trunk/test-hakase01.txt
echo 'this is my repo02' > trunk/test-hakase02.txtДобавьте и зафиксируйте изменения:
svn add trunk/* --username hakase
svn commit -m 'new file added' --username hakase
Проверьте, что файлы появились в веб‑интерфейсе.
Поздравляем — установка и базовая конфигурация Apache Subversion с HTTPS и HTTP Basic на CentOS 7 завершены.
Контрольный список ролей для внедрения
- Администратор сервера: установка пакетов, настройка firewall, SELinux, получение сертификата.
- Системный администратор Apache: настройка виртуальных хостов, логов и прав доступа.
- Владелец репозитория: создание репозиториев, управление правами пользователей.
- Разработчик: импорт проекта, регулярные коммиты, работа с ветками.
Критерии приёмки
- Apache httpd отвечает на HTTPS и перенаправляет HTTP на HTTPS.
- Сертификат Let’s Encrypt корректно установлен и действителен.
- URL https://<ваш-домен>/repo/<имя> возвращает страницу репозитория.
- Пользователь с учётной записью в /etc/subversion/svn.users может выполнить checkout, commit и импорт.
Типичные проблемы и способы устранения
- Сертификат не выдан: проверьте DNS‑запись домена и что порт 80 доступен извне.
- 403 Forbidden при доступе к /repo: проверьте права владельца каталога /svn/* и контекст SELinux (см. chcon выше).
- Ошибка авторизации: убедитесь, что путь к AuthUserFile указан правильно и файл имеет правильные права.
- Apache не стартует после правок: проверьте синтаксис конфигурации командой apachectl configtest и логи /var/log/httpd/error_log.
Рекомендации по безопасности и устойчивости
- Регулярно обновляйте систему и пакеты (
yum update). - Используйте сложные пароли и, по возможности, добавьте двухфакторную аутентификацию на уровне прокси или VPN.
- Делайте бэкапы репозиториев (
svnadmin dump) и конфигураций Apache, а также резервируйте /etc/letsencrypt. - Ограничьте доступ к административным интерфейсам и портам с помощью firewall и VPN.
- Рассмотрите использование модулей авторизации на уровне LDAP/AD для централизованного управления пользователями.
Тесты и приёмочные сценарии
- Выполнить полный цикл: импорт → checkout → изменение → commit → проверка истории ревизий.
- Восстановление из дампа:
svnadmin dumpиsvnadmin loadна тестовом сервере. - Проверка автоматического обновления сертификатов certbot:
certbot renew --dry-run.
Когда этот подход не подходит
- Если нужен распределённый контроль версий — рассмотрите Git.
- Для больших бинарных активов SVN может быть менее эффективен; рассматривйте специализированные хранилища артефактов.
Быстрый набор команд (cheat sheet)
- Создать репозиторий:
svnadmin create /svn/myrepo - Экспорт структуры:
svn import path https://host/repo/ -m "msg" --username user - Checkout:
svn co https://host/repo/ ~/dir --username user - Добавить пользователя:
htpasswd -cm /etc/subversion/svn.users username - Проверка Apache:
apachectl configtest - Обновить certbot:
certbot renew --dry-run
Факты
- Subversion — централизованная система контроля версий.
- Let’s Encrypt выдаёт сертификаты бесплатно с автоматическим обновлением каждые 90 дней.
- CentOS 7 использует systemd и firewalld по умолчанию.
Короткая памятка по миграции на новую версию ОС
- Перед миграцией создайте полные дампы репозиториев (
svnadmin dump). - Проверьте совместимость модулей Apache и путей сертификатов.
- Тестируйте на стенде, затем переносите конфигурации и сертификаты.
Резюме
Установить и настроить Subversion на CentOS 7 можно за несколько шагов: поставить Apache и Subversion, создать репозиторий, получить SSL‑сертификат Let’s Encrypt и настроить виртуальный хост Apache с HTTP Basic. В статье приведены команды, проверки и рекомендации по безопасности, а также контрольные сценарии для приёмки.
Важно: храните резервные копии репозиториев и проверяйте автоматическое обновление сертификатов.
Похожие материалы
Троян Herodotus: как он работает и как защититься
Включить новое меню «Пуск» в Windows 11
Панель полей сводной таблицы в Excel — руководство
Включить новое меню «Пуск» в Windows 11
Дубликаты Диспетчера задач в Windows 11 — как исправить