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

Как установить SVN с Apache dav_svn на CentOS 7

• 6 min read • Системное администрирование • Обновлено 28 Nov 2025
Установка SVN с Apache dav_svn на CentOS 7
Установка SVN с Apache dav_svn на CentOS 7

Коротко: пошаговая инструкция по установке Subversion (SVN) и модуля mod_dav_svn на CentOS 7, настройке Apache с базовой аутентификацией, созданию репозитория и основным операциям (import, checkout, commit). Включены рекомендации по SELinux, firewall, чек-листы для администратора и список альтернатив.

Version: 1.0
Последнее редактирование: 22 июля 2014
Follow howtoforge on Twitter

Обзор SVN

Apache Subversion (SVN) — система контроля версий и управления изменениями файлов. Кратко: она хранит текущие и исторические версии файлов (код, документация, веб-страницы) и часто применяется как преемник CVS. В этой статье описаны установка и базовая эксплуатация SVN с модулем Apache mod_dav_svn на CentOS 7.

Важно: Subversion — это централизованная система контроля версий. Если нужна распределённая модель, рассмотрите Git.

Что будет сделано

  • Установка httpd, subversion, mod_dav_svn
  • Настройка Apache для доступа к репозиториям по URL
  • Создание файла с пользователями (htpasswd)
  • Создание репозитория svnadmin и настройка прав/SELinux
  • Открытие портов в firewall
  • Проверка через браузер и основные команды SVN: import, checkout, commit, log

Требования и предпосылки

  • Сервер под CentOS 7 с правами root или sudo
  • Доступ в репозиторий пакетов (CentOS updates)
  • Базовые навыки работы с командной строкой

Установка пакетов

Установите Apache, Subversion и модуль для Apache:

yum install httpd subversion mod_dav_svn

Эти пакеты обычно доступны в репозитории CentOS. После установки можно переходить к конфигурации.

Настройка Subversion в Apache

Откройте конфигурационный файл модуля Subversion для Apache:

vi /etc/httpd/conf.modules.d/10-subversion.conf

Добавьте (или отредактируйте) следующие строки. Это заставит Apache загрузить модуль dav_svn и настроит алиас /svn => /var/www/svn:

LoadModule dav_svn_module     modules/mod_dav_svn.so
LoadModule authz_svn_module   modules/mod_authz_svn.so
LoadModule dontdothat_module  modules/mod_dontdothat.so

Alias /svn /var/www/svn

   DAV svn
   SVNParentPath /var/www/svn/
   AuthType Basic
   AuthName "Subversion repositories"
   AuthUserFile /etc/svn-auth-users
   Require valid-user

Пояснение важных параметров:

  • SVNParentPath указывает каталог, в котором находятся отдельные репозитории.
  • AuthUserFile — файл для базовой аутентификации Apache (htpasswd).
  • Require valid-user — разрешает доступ только аутентифицированным пользователям.

Важно: сохраняйте файл с правильными правами и убедитесь, что модуль mod_dav_svn установлен и загружается.

Создание файла с пользователями (htpasswd)

Для первого пользователя используйте ключ -c (создать файл):

htpasswd -cm /etc/svn-auth-users john
  • -c — создать новый файл. Используйте только при первом создании, иначе файл перезапишется.
  • -m — использовать MD5 для хранения паролей (пример ниже).

Добавление следующего пользователя:

htpasswd -m /etc/svn-auth-users jane

Примечание: файл /etc/svn-auth-users должен быть защищён: chmod 600 /etc/svn-auth-users.

Создание и настройка репозитория

Создайте каталог для репозиториев и создайте репозиторий с помощью svnadmin:

mkdir -p /var/www/svn
cd /var/www/svn/
svnadmin create repo
chown -R apache.apache repo/

Если включён SELinux, назначьте правильные контексты:

chcon -R -t httpd_sys_content_t /var/www/svn/repo
chcon -R -t httpd_sys_rw_content_t /var/www/svn/repo

Откройте HTTP(S) в firewall и перезапустите сервисы:

firewall-cmd --permanent --zone=public --add-service=http
firewall-cmd --permanent --zone=public --add-service=https
firewall-cmd --reload

systemctl enable httpd.service
systemctl restart httpd.service

Примечание: при проблемах с доступом проверьте /var/log/httpd/error_log и /var/log/messages.

Проверка через браузер

Перейдите в браузере по адресу:

http://localhost/svn/repo

Должно появиться окно ввода логина/пароля. После успешной аутентификации вы увидите пустой репозиторий.

Управление репозиториями — базовые операции

Создание тестовой директории и файлов (локально)

cd /tmp
mkdir firstproject
cd firstproject
# создаём тестовые файлы
touch testfile1 testfile2

Импорт содержимого в репозиторий

svn import -m "Initial repository" /tmp/firstproject file:///var/www/svn/repo/firstproject

Ожидаемый вывод:

Adding         /tmp/firstproject/file1
Adding         /tmp/firstproject/file2

Просмотр информации о проекте

svn info http://localhost/svn/repo/firstproject --username john

Checkout (получить рабочую копию)

mkdir /tmp/myfirstproject
svn co http://localhost/svn/repo/firstproject /tmp/myfirstproject --username jane

Внесение изменений и commit

cd /tmp/myfirstproject
touch file3
svn add file3 --username bob
svn commit -m "Added a new file" --username john

Обратите внимание: для добавления файла рекомендовано выполнять svn add под тем пользователем, который выполняет изменения локально; а commit — от того пользователя, под которым хотите зарегистрировать изменение в журнале.

Просмотр журнала изменений

svn log http://localhost/svn/repo/firstproject --username john

Диагностика и часто встречаемые проблемы

  • 401/403 ошибки: проверьте файл AuthUserFile и права доступа к нему, убедитесь, что Require настроен корректно.
  • 500/серверная ошибка при открытии репозитория: смотрите логи /var/log/httpd/error_log и логи SELinux (ausearch/audit.log).
  • SELinux блокирует запись: используйте chcon (см. выше) или добавьте постоянные контексты через semanage fcontext.
  • Ошибки с модулем mod_dav_svn: проверьте, что файлы modules/mod_dav_svn.so и mod_authz_svn.so существуют и соответствуют версии httpd.

Важно: перед изменениями на рабочем сервере сделайте резервную копию /etc/httpd/conf.modules.d/10-subversion.conf и каталога /var/www/svn.

Когда такой подход не подходит

  • Нужна распределённая модель ветвления и слияния в масштабе (Git чаще лучше для открытого распределённого рабочего процесса).
  • Требуется интеграция со специфичными CI/CD, где предпочитают Git-подходы и облачные репозитории.

Альтернативы

  • Git (распределённая модель) — высокая популярность, широкая экосистема.
  • Mercurial — распределённая система с простой моделью.
  • Использование хостингов (GitHub, GitLab, Bitbucket) избавляет от управления собственным сервером.

Чек-лист администратора (быстрый)

  • Установлены пакеты: httpd, subversion, mod_dav_svn
  • Настроен /etc/httpd/conf.modules.d/10-subversion.conf
  • Создан /etc/svn-auth-users, права 600
  • Создан репозиторий в /var/www/svn
  • SELinux контексты назначены при необходимости
  • Firewall открыт для http/https
  • Apache запущен и включён в автозагрузку
  • Протестирован доступ через браузер и svn cli

Чек-лист разработчика (быстрый)

  • Проверен доступ к репозиторию
  • Установлен svn client
  • Выполнен svn checkout и commit тестового изменения
  • Настроен правильный username/password

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

  1. Apache отвечает на http://localhost/svn/repo и требует аутентификацию.
  2. Пользователь может выполнить svn import и увидеть файлы в браузере/через svn list.
  3. Пользователь может выполнить checkout, изменить файлы и сделать commit.
  4. Журналы показывают корректные записи об операциях.

Полезные подсказки и сокращённая шпаргалка (cheat sheet)

  • Установка пакетов: yum install httpd subversion mod_dav_svn
  • Создание пользователя: htpasswd -cm /etc/svn-auth-users user
  • Создание репозитория: svnadmin create /var/www/svn/repo
  • Импорт: svn import -m “msg” /path file:///var/www/svn/repo/project
  • Checkout: svn co http://server/svn/repo/project /local/path
  • Commit: svn commit -m “msg”

Простая методология развёртывания

  1. Установите пакеты и проверьте зависимости.
  2. Настройте конфигурацию Apache и файл аутентификации.
  3. Создайте репозиторий и проверьте права/SELinux.
  4. Откройте порты и запустите Apache.
  5. Протестируйте клиентскими командами и через браузер.
  6. Настройте резервное копирование репозиториев и политики доступа.

Decision flow (базовое дерево принятия решений)

graph TD
  A[Есть requirement: централизованный VCS?] -->|Да| B[Использовать SVN]
  A -->|Нет| C[Рассмотреть Git]
  B --> D[На CentOS7?]
  D -->|Да| E[Установить httpd, subversion, mod_dav_svn]
  D -->|Нет| F[Подготовить пакетный менеджер/репозиторий]

Короткий глоссарий

  • SVN: Subversion — система контроля версий
  • mod_dav_svn: модуль Apache для обслуживания SVN через HTTP
  • svnadmin: утилита для администрирования репозиториев
  • htpasswd: утилита для создания файлов аутентификации Apache
  • SELinux: механизм усиленной безопасности ядра Linux

Безопасность и резервное копирование

  • Храните /etc/svn-auth-users вне публичного доступа и с правами 600.
  • Делайте регулярные бэкапы каталога /var/www/svn (например, с помощью tar или инструментов репликации).
  • Для чувствительных данных рассмотрите HTTPS и сертификаты вместо чистого HTTP.

Когда нужно масштабировать

  • Если количество пользователей и операций увеличивается — подумайте о репликации, фоновых бэкапах и мониторинге I/O.
  • Для высоких нагрузок — перенос репозиториев на отдельный диск, настройка бэкапов и план обслуживания.

Сводка

Установка и базовая настройка SVN с Apache на CentOS 7 — прямая задача: установить пакеты, настроить модуль dav_svn и файл пользователей, создать репозиторий, назначить контексты SELinux и открыть порты. В статье описаны основные команды, рекомендации по диагностике и чек-листы для администратора и разработчика.

Ссылки

  • Apache
  • Subversion
Поделиться: 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 быстро