Итак, выполняем последовательно:
1. Устанавливаем Subversion и Apache
yum install -y subversion mod_dav_svn
2. Модифицируем файл /etc/httpd/conf.d/subversion.conf добавляем следующую секцию:
<Location /svn>
DAV svn
SVNParentPath /var/www/svn
AuthType Basic
AuthName "Subversion repositories"
AuthUserFile /etc/svn-auth-users
Require valid-user
SSLRequireSSL
AuthzSVNAccessFile /etc/subversion/authz
</Location>
Немного пояснения:
SVNParentPath /var/www/svn - корневой каталог содержащий остальные репозитории
Auth* и Require valid-user - стандартные директивы апача ограничивающие доступ к определенному ресурсу (определенному в данном случае в теге Location)
SSLRequireSSL - требовать шифрованное соединение. Полезная опция, если сервер SVN находится вне локальной сети. Обратите внимание, что включение данной опции не заставит апач автоматически использовать протокол HTTPS, для успешной работы и перенаправления всех запросов HTTP на HTTPS необходимо будет настроить mod_rewrite. Как это сделать я покажу чуть ниже.
3. Пункт, который выполнять не обязательно. Редактирование файла conf/svnserve.conf - обратите внимание, что данный файл используется только в том случае, если будет использован доступ к репозиторию минуя WebDAV. Изменения данного файла никак не влияют на доступ к репозиторию через WebDAV!
Установите следующие параметры (если хотите, если будете использовать доступ к репозиторию минуя WebDAV):
[general]
anon-access = none
# Обратите внимание, что путь до файла соответствует
# пути в директиве AuthzSVNAccessFile
authz-db = /etc/subversion/authz
4. Создайте пользователей, которые будут работать с репозиториями:
htpasswd -cm /etc/svn-auth-users ags
5. Формирование фейкового сертификата SSL (вы можете на самом деле сформировать не фейковый, а вполне себе реальный сертификат, стоимость которого может быть относительно невысокой или даже бесплатной, но эта тема отдельной заметки)
yum install crypto-utils
genkey --days 365 javacation.ru
Откройте файл /etc/httpd/conf.d/ssl.conf и добавьте только что сформированные сертификаты:
SSLCertificateFile /etc/pki/tls/certs/javacation.ru.crt
SSLCertificateKeyFile /etc/pki/tls/private/javacation.ru.key
5. mod_rewrite (необязательно)
Поскольку, мы явно указали, что можно работать в SVN только через безопасный протокол, то будет неплохо добавить следующие строки в .htaccess для автоматического изменения протокола на HTTPS при доступе по протоколу отличному от HTTPS
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
6. Настройка доступа к репозиториям
Для разграничения доступа к проектам используйте файл /etc/subversion/authz
Например, вы бы могли написать такие правила:
[groups]
# Создаем группу admin и наполняем её пользователями
# имена которых разделены запятыми
admin = ags
# Настройки доступа по умолчанию. Для всех только чтение, для
# группы админов - чтение/запись
[/]
* = r
@admin = rw
# Можно было бы обойтись без этой директивы, но здесь я
# показал, как создавать секцию для описания прав конкретного
# репозитория
[javacation:/]
На этом собственно настройку можно прекратить, т.к. задача фактически выполнена.
PS. Забыл достаточно важный пункт, если вы используете SELINUX: не забудьте разрешить редактирование и чтение файлов сервису httpd:
sudo chcon -R -t httpd_sys_content_t /var/www/svn/javacation/
sudo chcon -R -t httpd_sys_rw_content_t /var/www/svn/javacation/
sudo chcon -R -t httpd_sys_content_t /var/www/svn/javacation/
sudo chcon -R -t httpd_sys_rw_content_t /var/www/svn/javacation/
Комментариев нет:
Отправить комментарий