Установка и настройка Subversion 1.6 на CentOS 5
Subversion или другими словами – система контроля (управления) версиями. Думаю, что многим разработчикам это знакомо. Практически любая разработка программного обеспечения или даже сайта не обходится без этой системы. Вы ещё не используете системы контроля версиями? То пора эта начать, даже если вы единственный разработчик.
Я не буду рассказывать все преимущества таких систем как Subversion, но лишь скажу, что это позволит вам всегда видеть и контролировать процесс разработки и в нужный момент вернуться к какому-либо участку кода.
Многим Subversion не нравится за счет ее централизованной структуры и, порой, возникающими странным ситуациям. Но могу вас заверить, что многие проблемы появляются либо из-за самих разработчиков, либо из-за использования различных версий этого программного обеспечения. Поэтому в этой статье я хотел бы рассказать, как установить и настроить последнюю версию сервера Subversion.
Subversion очень хорошо привязывается к веб-серверу Apache и работает через протокол HTTP. Это позволяет без особых затруднений внедрить контроль версий в существующий сервер.
Установка Subversion
Первое, что мы сделаем – это проверим, какая актуальная версия приложения есть в репозитории.
yum list available | grep subversion subversion.i386 1.6.11-7.el5_6.3 updates subversion.x86_64 1.6.11-7.el5_6.3 updates subversion-devel.i386 1.6.11-7.el5_6.3 updates subversion-devel.x86_64 1.6.11-7.el5_6.3 updates subversion-javahl.x86_64 1.6.11-7.el5_6.3 updates subversion-perl.x86_64 1.6.11-7.el5_6.3 updates subversion-ruby.x86_64 1.6.11-7.el5_6.3 updates
Если у вас в репозитории версия 1.6, то следующий шаг можно пропустить. Если же, например, версия 1.5 или 1.4, то проделаем некоторые дополнительные шаги.
Добавим репозиторий RPMforge for CentOS 5. Скачиваем rpm пакет для вашей версии системы. i386 для 32 битных систем или x86_64 для 64 битных систем. Скачать можно через обычный wget.
wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el5.rf.x86_64.rpm
Добавим ключ DAG’s GPG
rpm --import http://apt.sw.be/RPM-GPG-KEY.dag.txt
И установим пакет
rpm -i rpmforge-release-0.5.2-2.el5.rf.*.rpm
Дальше откроем файл «/etc/yum.repos.d/rpmforge.repo» и сменим везде в нем параметр «enabled=1» на «enabled=0». Это необходимо, что бы пакеты по умолчанию не ставились из этого репозитория.
Теперь ещё раз поищем пакет Subversion в новом репозитории.
yum --enablerepo=rpmforge list available | grep subversion
Если и в этом репозитории не нашлось нужного пакета, то попробуйте использовать репозиторий rpmforge-extras. В нем обязательна должна быть последняя версия.
yum --enablerepo=rpmforge-extras list available | grep subversion subversion.i386 1.6.11-7.el5_6.3 updates subversion.x86_64 1.6.15-0.1.el5.rfx rpmforge-extras subversion-devel.i386 1.6.11-7.el5_6.3 updates subversion-devel.x86_64 1.6.15-0.1.el5.rfx rpmforge-extras subversion-javahl.x86_64 1.6.15-0.1.el5.rfx rpmforge-extras subversion-perl.x86_64 1.6.15-0.1.el5.rfx rpmforge-extras subversion-ruby.x86_64 1.6.15-0.1.el5.rfx rpmforge-extras
Теперь перейдем непосредственно к установке клиента и необходимых дополнений для Apache.
yum --enablerepo=rpmforge-extras install subversion
Особых проблем при установке не должно возникнуть. Теперь проверим версию.
svn --version svn, version 1.6.15 (r1038135)
Настройка Apache для работы с репозиториями Subversion
Установим необходимый модуль для работы с Subversion. Он называется mod_dav_svn. Его также можно взять из репозитория rpmforge или rpmforge-extras. Все зависит от того, какую версия Subversion вы поставили.
yum --enablerepo=rpmforge-extras install mod_dav_svn
После этого проверяем файл «/etc/httpd/conf.d/subversion.conf» в нем должны быть прописаны следующие строки
LoadModule dav_svn_module modules/mod_dav_svn.so LoadModule authz_svn_module modules/mod_authz_svn.so
Теперь перезапускаем Apache
service httpd restart
Сделаю небольшое отступление. На виртуальной машине, на которой я все тестирую, для написания статей у меня загружены все модули Apache. На продакшен сервере у меня отключено большинство модулей. Поэтому не забывайте, что для Subversion необходимо не только 2 модуля описанные выше, но и некоторые другие, например, как «auth_basic_module», «authn_file_module», «authz_host_module», «dav_module», «dav_fs_module».
На всякий случай ниже приведу мой список обязательно загружаемых модулей.
# Dynamic Shared Object (DSO) Support LoadModule auth_basic_module modules/mod_auth_basic.so LoadModule authn_file_module modules/mod_authn_file.so LoadModule authz_host_module modules/mod_authz_host.so LoadModule log_config_module modules/mod_log_config.so LoadModule mime_magic_module modules/mod_mime_magic.so LoadModule headers_module modules/mod_headers.so LoadModule setenvif_module modules/mod_setenvif.so LoadModule mime_module modules/mod_mime.so LoadModule dav_module modules/mod_dav.so LoadModule autoindex_module modules/mod_autoindex.so LoadModule dav_fs_module modules/mod_dav_fs.so LoadModule negotiation_module modules/mod_negotiation.so LoadModule dir_module modules/mod_dir.so LoadModule alias_module modules/mod_alias.so LoadModule rewrite_module modules/mod_rewrite.so
В своей практике я стараюсь выносить репозитории SVN на отдельный виртуальный хост. Поэтому конфигурация доступа к репозиторию у меня прописывается в настройках вирутального хоста. Мне так удобнее. Вы же можете настроить доступ к репозиторию в файле «/etc/httpd/conf.d/subversion.conf». Там есть готовый пример. Я же выложу мой пример конфигурации.
<VirtualHost *> ServerAdmin [email protected] ServerName repos.vexell.ru <Location "/"> DAV svn SVNParentPath /var/www/svn/ AuthType Basic AuthzSVNAccessFile /etc/httpd/svn-acl.conf AuthName "Authorization" AuthUserFile /etc/httpd/svn-users.conf Require valid-user </Location> </VirtualHost>
Здесь параметр «AuthUserFile /etc/httpd/svn-users.conf» отвечает за список пользователей, а параметр «AuthzSVNAccessFile /etc/httpd/svn-acl.conf» дает доступ разным пользователям к разным репозиториям, а также права на чтение или запись. Вам необходимо будет создать эти файлы. Параметр «SVNParentPath /var/www/svn/» указывает, где будут находится ваши репозитории.
Создадим два новых пользователя «test1» и «test2».
htpasswd -m /etc/httpd/svn-users.conf test1 New password: Re-type new password: Adding password for user test1 htpasswd -m /etc/httpd/svn-users.conf test2 New password: Re-type new password: Adding password for user test2
Создание SVN репозитория
Теперь создадим директорию, где будут находится наши репозитории (это мы указали выше в конфигурации).
cd /var/www/ mkdir svn
Дальше создадим 2 репозитория.
cd svn svnadmin create repo1 svnadmin create repo2
И дадим права на директорию apache, и перезапустим веб-сервер.
chown -R apache:apache repo1/ chown -R apache:apache repo2/ chmod -R 775 repo1 chmod -R 775 repo2 service httpd restart Stopping httpd: [ OK ] Starting httpd: [ OK ]
Настройка доступа к репозиториям SVN
Теперь дадим пользователю «test1» доступ только к первому репозиторию на чтение и запись. А пользователю «test2» ко второму репозиторию, а к первому репозиторию только доступ на чтение. Откроем файл «/etc/httpd/svn-acl.conf» и внесем следующие правки.
[repo1:/] test1 = rw test2 = r [repo2:/] test2 = rw
Структура доступа, как вы поняли, имеет следующий формат
[reponame:repopath] user = access
Так же вы можете создавать группы пользователей, чтобы не перечислять всех пользователей, кто имеет доступ к репозиторию.
[groups] staff = joe, george [framework:/] john = r @staff = rw
Работа с репозиториями
Для тестирования наших репозиториев воспользуемся приложением TortoiseSVN (для Windows). Сделаем SVN Checkout, что бы синхронизировать репозиорий.
Теперь создадим первый наш файл и добавим его в репозиторий.
Первый файл был создан для примера, что все успешно работает. Для реальных проектов советую изучить стуктуру хранилищ для SVN и всегда пользоваться директориями trunk, branches и tags.
Более подробно по работе с SVN репозиториями вы можете почитать вот в этой книге http://tortoisesvn.net/docs/release/TortoiseSVN_ru/index.html
Дополнительная, справочная информация
- http://wiki.centos.org/HowTos/Subversion — Документация по установке и настройке Subversion на английском.
- http://tortoisesvn.net/support.html — Документация по TortoiseSVN
- http://ru.wikipedia.org/wiki/Subversion — Описание Subversion на Википедии