В одной из предыдущих статей я описывал процесс установки и запуска 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):», после чего нажимаем отправить.
Управление пользователями, группами и проектами находится в разделе «Администратор». Интерфейс управления интуитивно понятный и не должен вызвать сложностей.
Если у Вас возникнут вопросы задавайте в комментариях, я постараюсь на них ответить.
Комментариев нет:
Отправить комментарий