14.11.2017

Сервер контроля версий (Subversion) c управлением через Web-интерфейс на базе Ubuntu

Предлагаю рассмотреть развертывание сервера контроля версий Subversion с доступом по http/https и консолью управления USVN (User-friendly SVN сайт http://www.usvn.info/).

Про установку и настройку данных программ на базе FreeBSD читайте в материале «Удаленное управление репозиторием SVN через Web-интерфейс»


В результате должны получить:

  • Интерфейс управления репозиториями доступен по адресу http://svn.myhost.org
  • Репозитории доступны по адресу http://svn.myhost.org/projects

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

Web-сервер Apache и Mysql-сервер у меня уже установлен, инструкция по установке LAMP (Apache + MySQL + PHP) «Ubuntu LAMP»

sudo apt-get install subversion libapache2-mod-svn

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

mkdir /var/www/svn

mkdir /var/www/svn/public

mkdir /var/www/svn/projects

Подключать модули Apache я предпочитаю в конфигурации виртуального хоста

Создаем файл конфигурации  /etc/apache2/sites-available/svn.conf со следующим содержанием:

<VirtualHost *:80>

    ServerAdmin svn@myhost.org

    DocumentRoot "/var/www/svn/public/public"

    ServerName svn.myhost.org

    ServerAlias www.svn.myhost.org

    ErrorLog "/var/log/apache2/svn.error_log"

    CustomLog "/var/log/apache2/svn.access_log" common

    LoadModule dav_module /usr/lib/apache2/modules/mod_dav.so

    LoadModule dav_fs_module /usr/lib/apache2/modules/mod_dav_fs.so

    LoadModule dav_svn_module /usr/lib/apache2/modules/mod_dav_svn.so

    LoadModule authz_svn_module /usr/lib/apache2/modules/mod_authz_svn.so

    <Directory "/var/www/svn/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 /projects>

 DAV svn

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

        SVNListParentPath on

        SVNParentPath /var/www/svn/projects/svn

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

        AuthType Basic

        AuthName "Subversion repository"

        AuthUserFile /var/www/svn/svn-passwd

        AuthzSVNAccessFile /var/www/svn/svn-access

        Require valid-user

    </location>

</VirtualHost>

И активируем наш виртуальный хост

sudo a2ensite svn

sudo a2enmod rewrite

sudo service apache2 reload

3. Установка USVN

Скачиваем с оф. сайта http://www.usvn.info/download.html и распаковываем в директорию /var/www/svn/public/ 

cd ~

wget https://github.com/usvn/usvn/archive/1.0.7.tar.gz

tar xvf 1.0.7.tar.gz -C /var/www/svn/public --strip 1

chown -R www-data:www-data /var/www/svn/

Подключаемся к БД MySQL и создаем пользователя и базу данных

# mysql -u admin_user -p

mysql> create database usvn;

Query OK, 1 row affected (0,00 sec)

mysql> create user usvn_user@localhost identified by 'usvn_passwor';

Query OK, 0 rows affected (0,00 sec)

mysql>  grant all on usvn.* to usvn_user@localhost;

Query OK, 0 rows affected (0,00 sec)

mysql> flush privileges;

Query OK, 0 rows affected (0,01 sec)

mysql> exit

В файле создания базы данных допущена ошибка. Файл находится /var/www/svn/public/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;

Открываем браузер и переходим http://svn.myhost.org/install.php

Устанавливаем согласно инструкции (русский язык присутствует)

На 4-м шаге нам предложат внести данные относительно того, где будут храниться файлы

Репозитарий Subversion: /var/www/svn/projects

Subversion password file: /var/www/svn/svn-passwd

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

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

Обратите внимание, что "Репозиторий Subversion"  и "Ссылка Subversion" не могут заканчиваться project, иначе USVN будет работать не корректно.

Шаг 5 Database Installation

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

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

После завершения установки Вам будет доступна панель управления репозиториями по адресу http://svn.myhost.org/ и сами репозитории http://svn.myhost.org/projects/ . При входе у Вас будет запрошена авторизация по логину/паролю.

Вопросы задавайте в коментариях.

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

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