Поиск по сайту:

Полное руководство по настройке Apache Subversion SVN и TortoiseSVN для контроля версий


Если ваша работа требует обработки документов, веб-страниц и других типов файлов, которые регулярно обновляются, вы можете использовать механизм контроля версий, если вы еще этого не делаете.

Помимо прочего, это позволяет вам (а также группе потенциальных соавторов) отслеживать изменения, внесенные в данный файл, и позволяет вам вернуться к предыдущей версии, если возникла проблема или когда обновление не дало ожидаемого результата. .

В экосистеме свободного программного обеспечения наиболее широко используемая система контроля версий называется Apache Subversion (или сокращенно SVN). С помощью mod_dav_svn (модуль Apache для Subversion) вы можете получить доступ к репозиторию Subversion, используя HTTP и веб-сервер.

Тем не менее, давайте засучим рукава и установим эти инструменты на RHEL/CentOS 7, Fedora 22-24, Debian 8/7 и Сервер Ubuntu 16.04–15.04. Для наших тестов мы будем использовать сервер CentOS 7 с IP 192.168.0.100.

На стороне клиента (машина с Windows 7) мы установим и будем использовать TortoiseSVN (основанный на Apache Subversion) в качестве интерфейса к SVN.

Наша среда тестирования


Server - CentOS 7
IP Address - 192.168.0.100
Client - Windows 7

Шаг 1. Установка и настройка SVN в Linux

Как мы только что упомянули, мы будем полагаться на Apache для доступа к репозиторию SVN через веб-интерфейс. Если он еще не установлен, обязательно добавьте его в список пакетов, как показано ниже:


------------------ On CentOS / RHEL / Fedora ------------------ 
yum update && yum install mod_dav_svn subversion httpd -y

------------------ On Debian / Ubuntu ------------------ 
apt-get update && apt-get install libapache2-svn subversion apache2 -y 

Во время установки в CentOS 7 файл конфигурации Apache для SVN будет создан как /etc/httpd/conf.modules.d/10-subversion.conf. Откройте файл и добавьте следующий блок конфигурации:


<Location /svn>
    DAV svn
    SVNParentPath /websrv/svn
    AuthType Basic
    AuthName "Welcome to SVN"
    AuthUserFile /etc/httpd/subversion-auth
    Require valid-user
</Location>

Примечание. В Debian/Ubuntu вам необходимо добавить строки ниже в /etc/apache2/mods-enabled/dav_svn.conf файл.


<Location /svn>
    DAV svn
    SVNParentPath /websrv/svn
    AuthType Basic
    AuthName "Welcome to SVN"
    AuthUserFile /etc/apache2/subversion-auth
    Require valid-user
</Location>

В Debian/Ubuntu вам необходимо включить модуль dav_svn Apache:


a2enmod dav_svn

Пара уточнений:

  1. Директива SVNParentPath указывает каталог, в котором позже будут созданы наши репозитории. Если этот каталог не существует (что, скорее всего, так и есть), создайте его с помощью:

    
    mkdir -p /websrv/svn
    

    Важно отметить, что этот каталог НЕ должен располагаться внутри или перекрывать DocumentRoot виртуального хоста, который в настоящее время обслуживается Apache. Это зрелище!

  2. Директива AuthUserFile указывает файл, в котором будут храниться учетные данные действительного пользователя. Если вы хотите разрешить всем доступ к SVN без аутентификации, удалите последние четыре строки в блоке Location. В этом случае пропустите Шаг 2 и сразу переходите к Шагу 3.
  3. Хотя у вас может возникнуть соблазн перезапустить Apache, чтобы применить эти последние изменения, не делайте этого пока, поскольку нам все еще нужно создать файл аутентификации с действительными пользователями для SVN и сам репозиторий.

Шаг 2 – Добавьте разрешенных пользователей для доступа к SVN

Теперь мы будем использовать htpasswd для создания паролей для учетных записей, которым будет разрешен доступ к SVN. Только для первого пользователя нам понадобится опция -c.

Разрешенные учетные записи и пароли, зашифрованные с помощью bcrypt (-B), будут храниться в /etc/httpd/subversion-auth в парах ключ-значение. Обратите внимание, что по сегодняшним стандартам шифрование MD5 или SHA по умолчанию, используемое htpasswd, считается небезопасным.


------------------ On CentOS / RHEL / Fedora ------------------ 
htpasswd -cB /etc/httpd/subversion-auth tecmint

------------------ On Debian / Ubuntu ------------------ 
htpasswd -cB /etc/apache2/subversion-auth tecmint

Не забудьте установить право собственности и разрешения для файла аутентификации:


------------------ On CentOS / RHEL / Fedora ------------------ 
chgrp apache /etc/httpd/subversion-auth
chmod 660 /etc/httpd/subversion-auth

------------------ On Debian / Ubuntu ------------------ 
chgrp www-data /etc/apache2/subversion-auth
chmod 660 /etc/apache2/subversion-auth

Шаг 3 – Добавьте безопасность и создайте репозиторий SVN

Поскольку вы будете получать доступ к SVN через веб-интерфейс, вам необходимо разрешить трафик HTTP (и, при необходимости, HTTPS) через брандмауэр.


------------------ On CentOS / RHEL / Fedora ------------------ 
firewall-cmd --add-service=http --permanent
firewall-cmd --add-service=https --permanent
firewall-cmd --reload 

При перезагрузке конфигурации брандмауэра с помощью --reload постоянные настройки вступают в силу немедленно.

Создайте исходный репозиторий SVN под названием tecmint:


svnadmin create /websrv/svn/tecmint

Измените владельца и владельца группы на apache рекурсивно:


------------------ On CentOS / RHEL / Fedora ------------------ 
chown -R apache:apache /websrv/svn/tecmint

------------------ On Debian / Ubuntu ------------------ 
chown -R www-data:www-data /websrv/svn/tecmint

Наконец, вам нужно будет изменить контекст безопасности /websrv/svn/tecmint (обратите внимание, что вам придется повторить этот шаг, если вы решите позже создать другие репозитории):


------------------ On CentOS / RHEL / Fedora ------------------ 
chcon -R -t httpd_sys_content_t /websrv/svn/tecmint/
chcon -R -t httpd_sys_rw_content_t /websrv/svn/tecmint/

Примечание. Последние две команды могут не применяться, если вы устанавливаете SVN на VPS с отключенным SELinux.

Рекомендуется к прочтению: Узнайте, как временно или навсегда отключить SELinux в Linux.

Перезапустите Apache и убедитесь, что репозиторий доступен.


------------------ On CentOS / RHEL / Fedora ------------------ 
systemctl restart httpd

------------------ On Debian / Ubuntu ------------------ 
systemctl restart apache2

Затем запустите веб-браузер и укажите в нем http://192.168.0.100/svn/tecmint. После ввода учетных данных действительного пользователя, которого мы создали на Шаге 1, выходные данные должны быть похожи на:

На данный момент мы не добавили никакого кода в наш репозиторий. Но мы сделаем это через минуту.

Шаг 4. Установите TortoiseSVN в клиенте Windows 7.

Как мы упоминали во введении, TortoiseSVN — это удобный интерфейс для Apache Subversion. Это бесплатное программное обеспечение, лицензированное под лицензией GPL, и его можно загрузить с https://tortoisesvn.net/downloads.html.

Выберите архитектуру (32 или 64-разрядную), соответствующую вашему компьютеру, и установите программу, прежде чем продолжить.

Шаг 5 – Настройка репозитория SVN на клиентском компьютере

На этом этапе мы будем использовать папку с именем webapp внутри Documents. Эта папка содержит файл HTML и две папки с именами скриптов и стилей с файлами Javascript и CSS (script.js и styles.css соответственно), которые мы хотим добавить в контроль версий.

Щелкните правой кнопкой мыши webapp и выберите SVN Checkout. Это создаст локальную копию удаленного репозитория (который на данный момент пуст) и инициализирует папку для контроля версий:

В URL-адресе репозитория введите http://192.168.0.100/svn/tecmint и убедитесь, что локальный каталог извлечения остался прежним, затем нажмите ОК:

Введите имя пользователя и пароль (см. Шаг 2) и нажмите ОК:

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

Шаг 6. Зафиксируйте изменения и разверните файлы в удаленном репозитории SVN.

Щелкните правой кнопкой мыши webapp еще раз и на этот раз выберите Commit. Затем напишите описательный комментарий, чтобы позже идентифицировать этот коммит, и проверьте файлы и папки, которые вы хотите развернуть в репозитории. Наконец, нажмите ОК:

В зависимости от размера файлов фиксация не должна занять больше минуты. Когда он будет завершен, вы увидите, что теперь мы используем версию 1, которая соответствует версии и файлам, указанным в веб-интерфейсе:

Если над одними и теми же файлами работают несколько человек, вам нужно Обновить свою локальную копию, чтобы иметь самую последнюю версию, доступную для работы. Это можно сделать, щелкнув правой кнопкой мыши webapp и выбрав Обновить в контекстном меню.

Поздравляем! Вы успешно настроили сервер SVN и зафиксировали/обновили простой проект под контролем версий.

Краткое содержание

В этой статье мы объяснили, как установить и настроить сервер репозитория Apache Subversion на сервере CentOS 7, а также как зафиксировать изменения в этом репозитории с помощью TortoiseSVN.

Обратите внимание, что SVN и TortoiseSVN - это гораздо больше, чем то, что мы можем подробно осветить здесь (особенно, как вернуться к предыдущим версиям), поэтому вы можете обратиться к официальному docs (SVN и TortoiseSVN) для получения дополнительной информации и вариантов настройки.

Как всегда, не стесняйтесь, дайте нам знать, если у вас есть какие-либо вопросы! Не стесняйтесь использовать форму комментариев ниже, чтобы связаться с нами в любое время.