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

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

5 min read DevOps Обновлено 07 Nov 2025
Установка SVN на CentOS 7 с HTTPS
Установка SVN на CentOS 7 с HTTPS

Веб-интерфейс сервера Subversion

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)

План действий

  1. Установить Apache httpd на CentOS 7
  2. Установить Subversion
  3. Настроить репозиторий Subversion
  4. Получить SSL‑сертификат Let’s Encrypt для Apache
  5. Настроить виртуальный хост Subversion в Apache
  6. Проверить работу репозитория и выполнить базовые операции

Шаг 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 httpd

Apache httpd теперь запущен на сервере.

Установка и запуск веб-сервера Apache

Шаг 2 — Установка Apache Subversion (SVN)

Установим Subversion и модули для интеграции с Apache из стандартного репозитория CentOS 7.

yum -y install subversion subversion-tools mod_dav_svn

После установки проверьте версию SVN:

svn --version

Установка Apache Subversion

Шаг 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

Генерация SSL‑сертификата Let's Encrypt

Получите сертификат:

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/

Использование certbot для получения сертификата

Примечание: замените 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.

Редактирование svn.conf для Apache

Шаг 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

Во время первого подключения снова разрешите сертификат, введите учетные данные и согласитесь на сохранение пароля при запросе.

Клонирование репозитория SVN

Проверьте структуру:

tree ~/myproject

Структура проекта в SVN

Коммит изменений

Перейдите в 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

Коммит в SVN

Проверьте, что файлы появились в веб‑интерфейсе.

Поздравляем — установка и базовая конфигурация 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. В статье приведены команды, проверки и рекомендации по безопасности, а также контрольные сценарии для приёмки.

Важно: храните резервные копии репозиториев и проверяйте автоматическое обновление сертификатов.

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

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

Троян Herodotus: как он работает и как защититься
Кибербезопасность

Троян Herodotus: как он работает и как защититься

Включить новое меню «Пуск» в Windows 11
Windows руководство

Включить новое меню «Пуск» в Windows 11

Панель полей сводной таблицы в Excel — руководство
Excel

Панель полей сводной таблицы в Excel — руководство

Включить новое меню «Пуск» в Windows 11
Windows 11

Включить новое меню «Пуск» в Windows 11

Дубликаты Диспетчера задач в Windows 11 — как исправить
Windows

Дубликаты Диспетчера задач в Windows 11 — как исправить

История просмотров Reels в Instagram — как найти
Instagram

История просмотров Reels в Instagram — как найти