27.06.2017

Удаленное управление репозиторием SVN через Web-интерфейс

В одной из предыдущих статей я описывал процесс установки и запуска SVN-сервера на базе FreeBSD с Web-интерфейсом. Все работает, но есть неудобства в управлении, мало кто  будет держать сервер для одного-двух проектов и аналогичного к-ва пользователей, которые с ними будут работать. В противном случае, понадобится постоянно редактировать файл с правами доступа и создавать новые проекты.

Для удаленного управления репозиторием существует инструмент User-friendly SVN (USVN) офф. Сайт http://www.usvn.info/ 

Несмотря на то, что последнее обновление было в ноябре 2013, USVN корректно работает с последними версиями Subversion и Apache.

Установка и настройка сервера практически идентичны уже описанной, с некоторыми отличиями

1. Установка необходимого ПО

cd /usr/ports/devel/subversion

make install clean

cd /usr/ports/www/mod_dav_svn/

make install clean

cd /usr/ports/databases/php56-mysqli

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 my_email@exmpl.org

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

    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

    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

    <Directory "/data/www/vhosts/svn.exmpl.org/www/public">

        Options Indexes FollowSymLinks

        AllowOverride All

        Require all granted

        Order allow,deny

        Allow from all

    </Directory>

    Redirect 404 /favicon.ico

    <Location /favicon.ico>

ErrorDocument 404 "favicon does not exist"

    </Location>

    <location /svn>

DAV svn

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

        SVNListParentPath on

        SVNParentPath /data/svn/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>

Обновляем конфигурацию Apache

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

3. Создаем пользователя SVN необходимые директории

Создаем пользователя 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!

Создаем директории

mkdir /data/svn/svn

chmod -R 775 /data/svn/svn

chown www:www /data/svn/svn

chmod 777 /data/svn/

4. Установка USVN и создание репозитория

Качаем с оф. сайта http://www.usvn.info/download.html

Распаковываем в директорию /data/www/vhosts/svn.exmpl.org/www/

Вносим изменения в файл /data/www/vhosts/svn.exmpl.org/www/app/install/sql/mysql.sql

Находим в конце файла строки

ALTER TABLE `usvn_groups` CHANGE `groups_id` `groups_id` INT( 11 ) NOT NULL AUTO_INCREMENT ;

ALTER TABLE `usvn_projects` CHANGE `projects_id` `projects_id` INT( 11 ) NOT NULL AUTO_INCREMENT ;

ALTER TABLE `usvn_users` CHANGE `users_id` `users_id` INT( 11 ) NOT NULL AUTO_INCREMENT ;

ALTER TABLE `usvn_files_rights` CHANGE `files_rights_id` `files_rights_id` INT( 11 ) NOT NULL AUTO_INCREMENT ;

И перемещаем их сразу после

create index usvn_users_to_projects2_fk on usvn_users_to_projects

(

   users_id

);

Получиться должно вот так :

create index usvn_users_to_projects2_fk on usvn_users_to_projects

(

   users_id

);

ALTER TABLE `usvn_groups` CHANGE `groups_id` `groups_id` INT( 11 ) NOT NULL AUTO_INCREMENT ;

ALTER TABLE `usvn_projects` CHANGE `projects_id` `projects_id` INT( 11 ) NOT NULL AUTO_INCREMENT ;

ALTER TABLE `usvn_users` CHANGE `users_id` `users_id` INT( 11 ) NOT NULL AUTO_INCREMENT ;

ALTER TABLE `usvn_files_rights` CHANGE `files_rights_id` `files_rights_id` INT( 11 ) NOT NULL AUTO_INCREMENT ;

alter table usvn_files_rights add constraint fk_usvn_file_rights foreign key (projects_id)

      references usvn_projects (projects_id) on delete restrict on update restrict;

Если этого не сделать во время установки USVN, будем получать ошибку: "не удается загрузить SQL файл":

Can't load file /data/www/vhosts/svn.exmpl.org/www/app/install/sql//mysql.sql at:

ALTER TABLE `usvn_groups` CHANGE `groups_id` `groups_id` INT( 11 ) NOT NULL AUTO_INCREMENT

Error: Mysqli statement execute error : Cannot change column 'groups_id': used in a foreign key constraint 'fk_usvn_groups_to_files_rights2' of table 'usvn.usvn_groups_to_files_rights'

И заходим через веб интерфейс

http://svn.exmpl.org/install.php

Следуем мастеру установки, я остановлюсь лишь на некоторых моментах

Шаг 4  USVN Configuration

Репозитарий Subversion: /data/svn/

Subversion password file: /data/svn/svn-passwd

Файл прав доступа к Subversion: /data/svn/svn-access

Ссылка Subversion: http://svn.exmpl.org/svn

Шаг 5 Database Installation

Вводим данные пользователя MySQL, которого мы создавали в начале

Тип базы данных: MySqli

Остальные шаги у Вас не должны вызвать вопросов. В конце установки переходим в панель управления.

Теперь у Вас имеется веб интерфейс управления репозиториями и сам сервер контроля версий. Репозитории доступны по адресу http://svn.exmpl.org/svn/

Несмотря на то, что интерфейс управления интуитивно понятен, отдельно остановлюсь на создании репозитория.

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

В панели управления переходим

«Администратор» -> «Проекты» -> «Добавить новый проект»

Вводим имя проекта, описание (по желанию) и выбираем отметку из пункта «Создать SVN стандартные каталоги (/trunk, /branches и /tags):», после чего нажимаем отправить.


Управление пользователями, группами и проектами находится в разделе «Администратор». Интерфейс управления интуитивно понятный и не должен вызвать сложностей.

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

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

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