16.06.2017

Сервер контроля версий SVN с доступом через WEB-интерфейс на FreeBSD 11

SVN или Subversion – централизованная система контроля версий, подробнее читайте на Википедии. Наибольшее распространение приобрела среди разработчиков для хранения версий программного кода, также я встречал применение для хранения версий конфигурационных файлов и документов (этот встречается крайне редко, существует специальное ПО для этого).

Давайте рассмотрим, как быстро развернуть данных сервер, прикрутить к нему WEB-интерфейс и создать репозиторий.


Как установить Web-сервер Apache и использовать виртуальные хосты (VirtualHost), я уже описывал ранее. Организовывать доступ к ВЕБ-интерфейсу SVN я буду для адреса: svn.exmpl.org.

1. Установка необходимых пакетов

cd /usr/ports/devel/subversion

make config

Нам необходимо отметить следующие пункты

│ │+[x] BDB               Berkeley DB support                                │ │

│ │+[x] DOCS              Build and/or install documentation                 │ │

│ │+[x] FREEBSD_TEMPLATE  FreeBSD Project log template                       │ │

│ │+[ ] MAINTAINER_DEBUG  Build debug version                                │ │

│ │+[x] NLS               Native Language Support                            │ │

│ │+[ ] SASL              SASL authentication support                        │ │

│ │+[x] SERF              WebDAV/Delta-V (HTTP/HTTPS) repo access module     │ │

│ │+[ ] STATIC            Build static version (no shared libs)              │ │

│ │+[x] SVNSERVE_WRAPPER  Enable svnserve wrapper (umask setter)             │ │

│ │+[ ] TEST              Run subversion test suite                          │ │

│ │+[x] TOOLS             Install several tools               │ │

make install clean

cd /usr/ports/www/mod_dav_svn/

make install clean

2. Создание виртуального хоста в Apache

mkdir /data/www/vhosts/svn.exmpl.org/

mkdir /data/www/vhosts/svn.exmpl.org/www/

chown -R www:www /data/www/vhosts/svn.exmpl.org/

mkdir /var/log/apache24/svn.exmpl.org

Создаем файл конфигурации виртуального хоста

/usr/local/etc/apache24/Includes/svn.exmpl.org.conf 

<VirtualHost *:80>

ServerAdmin admin@exmpl.org

DocumentRoot "/data/www/vhosts/svn.exmpl.org/www/"

ServerName svn.exmpl.org

ServerAlias www.svn.exmpl.org

ErrorLog "/var/log/apache24/svn.exmpl.org/error_log"

CustomLog "/var/log/apache24/svn.exmpl.org/access_log" common

#Загружаем необходимые для работы модуля Apache

LoadModule dav_module libexec/apache24/mod_dav.so

LoadModule dav_fs_module libexec/apache24/mod_dav_fs.so

LoadModule dav_svn_module libexec/apache24/mod_dav_svn.so

LoadModule authz_svn_module libexec/apache24/mod_authz_svn.so

#Если не добавить этот блок, будет засыпать ошибками

Redirect 404 /favicon.ico

<Location /favicon.ico>

ErrorDocument 404 "favicon does not exist"

</Location>

<location />

DAV svn

# разрешает выдавать перечень всех доступных хранилищ в папке SVNParentPath

SVNListParentPath on

SVNParentPath /data/svn/

# включение базовой аутентификации, т.е. имя_пользователя/пароль

AuthType Basic

AuthName "Subversion repository"

#Файл, где хранятся данные для авторизации

AuthUserFile /data/svn/svn-passwd

#Распределение привилегий пользователей

AuthzSVNAccessFile /data/svn/svn-access

# предписывает, что только пользователям, предоставившим правильные имя_пользователя/пароль,

# будет разрешён доступ к URL

<LimitExcept GET PROPFIND OPTIONS REPORT>

Require valid-user

</LimitExcept>

</location>

</VirtualHost>

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

Создаем пользователя svn

# adduser

Username: svn

Full name: SVN

Uid (Leave empty for default): 3690

Login group [svn]:

Login group is svn. Invite svn into other groups? []:

Login class [default]:

Shell (sh csh tcsh nologin) [sh]: nologin

Home directory [/home/svn]: /data/svn

Home directory permissions (Leave empty for default):

Use password-based authentication? [yes]: no

Lock out the account after creation? [no]: no

Username   : svn

Password   : <disabled>

Full Name  : SVN

Uid        : 3690

Class      :

Groups     : svn

Home       : /data/svn

Home Mode  :

Shell      : /usr/sbin/nologin

Locked     : no

OK? (yes/no): yes

adduser: INFO: Successfully added (svn) to the user database.

Add another user? (yes/no): no

Goodbye!

Собственно, создание репозитория

svnadmin create /data/svn/test_repos

Создаем пользователя для доступа к репозиторию

htpasswd -cm /data/svn/svn-passwd admin

New password:

Re-type new password:

Adding password for user admin

Для добавления новых пользователей используем команду htpasswd, без ключа -c (этот ключ указывает, что нужно создать новый файл, если он существует, старая версия будет удалена)

htpasswd -m /data/svn/svn-passwd user

Создаём файл с привилегиями пользователей для репозитория. /data/svn/svn-access 

# блок, содержащий группы.

[groups]

# группы maingroup и testgroup перечисляем пользователей, которые в них входят

#перечисляем пользователей через запятую

maingroup = admin

testgroup = testuser1, testuser2

# корень нашего SVN сервера

[/]

# доступ для анонимных пользователей на чтение.

* = r

# директория проекта test_repos

[test_repos:/]

* = r

# группе maingroup глобально разрешено чтение/запись

@maingroup  = rw

# директория maingroup

[test_repos:/maingroup]

# запрет для всех пользователей.

* =

# разрешён доступ на чтение/запись только группе maingroup

@devel = rw

#Директория для тестов

[test_repos:/test]

#Запрещаем анонимным пользователям все

* =

#Группе testgroup доступ на чтение/запись, а пользователю admin только на чтение

@testgroup = rw

admin = r

Перезагружаем конфигурацию Apache

/usr/local/etc/rc.d/apache24 reload

Если нигде не допущено ошибок, мы сможем зайти на наш сервер через веб-интерфейс: svn.exmpl.org и подключиться к нему через клиентские приложения, например, RapidSVN, или IDE, которыми вы пользуетесь.

В дальнейшем для создания новых репозиториев используйте команду

svnadmin create /data/svn/new_repos

И описывайте права доступа для в пользователей в файле /data/svn/svn-access

Наиболее полную информацию о конфигурации сервера можно получить

http://svnbook.red-bean.com/en/1.7/svn.serverconfig.httpd.html

и на официальном сайте проекта

https://subversion.apache.org/

Комментариев нет:

Отправить комментарий