- []
Apache2 и Subversion - друзья навеки!
Поговорим о том, как подружить Apache2 и Subversion. На самом деле никаких сложностей не возникает.
О том, как включить SSL-Engine рассказывать не буду - материала по генерации ключей и примеров конфигурации и так достаточно много в интернете.
Итак у меня работает примерно так:
<VirtualHost 88.93.112.37:5253> SSLEngine On SSLCipherSuite ALL SSLCertificateFile /etc/apache2/svn.cert SSLCertificateKeyFile /etc/apache2/svn.key ServerName svn.maxantonov.name DocumentRoot /var/www/svn.maxantonov.name <Location /> DAV svn SVNParentPath /svn SVNListParentPath on SVNAutoVersioning On AuthType Basic AuthName "Max Antonov Subversion repository" AuthUserFile /svn/.htpasswd Require valid-user AuthzSVNAccessFile /svn/.htsvnpolicy </Location> </VirtualHost>
Разберем все по порядку:
Да, я включил Subversion на нестандартном порту, добавив Listen 5253 в основной конфиг апача. Почему? Потому что хотел шифрованный трафик и репозиторий в корне домена, а два имеющихся IP уже занимают свои 443 порты под другие нужды.
SSLEngine On
SSLCipherSuite ALL
SSLCertificateFile /etc/apache2/svn.cert
SSLCertificateKeyFile /etc/apache2/svn.key
ServerName svn.maxantonov.name
DocumentRoot /var/www/svn.maxantonov.name
Думаю, что если вы решили настраивать Subversion, то вам не стоит объяснять базовые настройки Apache2.
Кстати SVN можно настроить только под 2й версией Апача, т.к. модуль WebDAV существует только под вторую версию.
<Location /> DAV svn
Вот тут-то и начинается самое основное. я люблю обращаться к репозиторию так:
svn co https://svn.host.name:3499/repozName
Именно поэтому я включаю SVN на корневой директории виртуал хоста. Если же поставить Location /etc/svn/repozitories , то придется к тому же репозиторию обращаться так:
svn co https://svn.host.name:3499/etc/svn/repozitories/repozName
При этом по пути /etc/svn/websvn может быть располoжен web-face к просмотру логов ( http://websvn.tigris.org/ )
Ладно, с путями по серверу разобрались, дальше - интереснее.
DAV svn SVNParentPath /svn SVNListParentPath on SVNAutoVersioning On
Но тем кто хоть немного знает английский, все понятно даже без комментариев. Поясню: DAV - включает протокол DAV и обработчиком его ставить модуль mod_davsvn . Вторая инструкция указывает папку , где сложены репозитории. Третья разрешает просматривать список существующих хранилищ. Четвертая включает авто-версионирование (подробнее об этом в svnbook).
Далее следует стандартная аутентификация, через .htpasswd - думаю это тоже объяснять не нужно.
AuthzSVNAccessFile /svn/.htsvnpolicy
А вот это снова интересно. Обратимся к тому же svnbook!
формат файла таков:
[groups] groupname = userone, usertwo developgroup = idler,maxim,andrey [repozName:/] @developgroup=rw idler=r [repozName:/tags/] *=r releaseMantainer=rw [repozName:/branches/] @developgroup=rw *=none [repozName:/instructions/] *=r director=rw [Diesel:/] diesel=rw *=r
Чтобы все это значило? Все просто - это достаточно гибкое рапределене прав доступа на репозитории и пути внутри них. Подробнее про рапределение прав читайте в svnbook.

