SVN-репозиторий, доступный по WebDAV. Настройка модуля dav_svn для apache2.

Для начала, что такое WebDAV и с чем его едят

Web-based Distributed Authoring and Versioning или WebDAV – это набор расширений для традиционного Hypertext Transfer Protocol (HTTP), позволяющий пользователям совместно работать и манипулировать файлами на удаленных WWW серверах. По сути, это реальная и намного более функциональная альтернатива для уже порядком устаревших FTP и SMB. Вот лишь некоторые возможности, которые предоставляет протокол: * выполнение основных файловых операций над объектами на удаленном сервере; * выполнение расширенных файловых операций (блокировки, поддержка версий); * работа с любым типом объектов (не только файлы); * поддержка метаданных (свойств) объектов; * поддержка одновременной работы над объектами.

http://ru.wikipedia.org/wiki/WebDAV

То есть с его помощью мы можем управлять репозиторием по http-протоколу.

Установка

Для Debian

apt-get install libapache2-svn

Само-сабой у него в зависимостях apache2 ;-)

Затем делаем соответствующие симлинки, чтобы apache2 увидел этот модуль

#ln -s /etc/apache2/mods-available/dav.load /etc/apache2/mods-enabled/
#ln -s /etc/apache2/mods-available/dav_svn.load /etc/apache2/mods-enabled/
#ln -s /etc/apache2/mods-available/dav_svn.conf /etc/apache2/mods-enabled/

Перезапускаем apache

#/etc/init.d/apache2 restart

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

У меня все репозитории лежат в /home/repos. Создадим ещё парочку.

#svnadmin create /home/repos/test1
#svnadmin create /home/repos/test2

Поскольку работа с данным репозиторием будет вестись исключительно через http-протокол, посредством apache, то и права внутри него на файлы и папки должны соответствовать. У Debian пользователь, от которого работает apache — это www-data

#chmod -R 700 /home/repos/test1
#chown -R www-data: /home/repos/test1
#chmod -R 700 /home/repos/test2
#chown -R www-data: /home/repos/test2

Создание файла паролей

Более глубокая настройка производится специально. Нам же будет достаточно. Не пускать в рекозиторий кого попало.

#htpasswd -cb /home/repos/test1.passwd developer1 pass1
#htpasswd -cb /home/repos/test2.passwd developer2 pass2

То есть для репозитория test1 мы заводим валидного пользователя developer1, а для репозитория test2 — developer2.

Настройка модуля

Модуль настраивается в файле /etc/apache2/mods-enabled/dav_svn.conf

<Location /svn/test1>
  SVNPath /home/repos/test1
  DAV svn
  AuthType Basic
  AuthName "Repository test1"
  AuthUserFile /home/repos/test1.passwd
  Require valid-user
</Location>

<Location /svn/test2>
  SVNPath /home/repos/test2
  DAV svn
  AuthType Basic
  AuthName "Repository test2"
  AuthUserFile /home/repos/test2.passwd
  Require valid-user
</Location>

Доступ к репозиторию

Подойдёт любой SVN — клиент. Например — обычный браузер. Для доступа используем url

http://svn.local/svn/test1

Здесь svn.local — домен в нашел локальной сети, по которому доступен этот сервер

Для авторизации — указанные выше логин и пароль. Специализированные svn-клиенты (например RapidSVN) позволяют выполнять весь спектр операций по http. Браузер скромней, к примеру, просто покажет последнюю ревизию репозитория в trunk.


Добавить комментарий