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.

Последние изменения: %2010/%03/%22 %01:%Mar