- PVSM.RU - https://www.pvsm.ru -
По мере увеличения числа вовлечённых в проект людей возникает необходимость как-то более эффективно организовывать и управлять их деятельностью. На начальном этапе для этой цели использовались Google-таблицы, но их возможности ограничены, и появилось желание перейти на новый уровень. Изучение доступных систем управления проектами показало, что из систем с открытым кодом Redmine наиболее продвинутая и по некоторым показателям обгоняет даже проприентарные системы.
Redmine, действительно, обладает большими возможностями: управление несколькими проектами, отслеживание ошибок, интеграция с репозиториями, перекрёстные ссылки на исправленные баги в коммитах и на коммиты в баг-репортах, назначение разных ролей пользователей в каждом проекте и т.д. Однако процедура установки довольна сложна, а для некоторых очень полезных функций требуется небольшая доработка или использование плагинов. Надеюсь, что предлагаемое ниже руководство поможет желающим использовать Redmine в своих проектах.
→ Официальный сайт [1]
Основные возможности:
→ Официальный сайт [2]
Кросс-платформенная распределённая система управления версиями.
Web-сервер и система управления базами данных. Использованы Mysql и Apache.
Инструкция составлена на основе полезной, но сильно устаревшей инструкции
HowTo Install Redmine 1.2.x with Mercurial and Subversion on Ubuntu Server 10.04 [3].
Также использовалась официальная инструкция по установке
Redmine Installation Guide [4].
Предполагаем что у нас уже есть сервер с предустановленным на нём Ubuntu Server 16.04. Дальнейшие инструкции описывают установку системы управления и вспомогательного ПО.
Итак, начнём. Сначала устанавливаем LAMP server:
$ sudo tasksel install lamp-server
Во время установки понадобится ввести пароль root-пользователя базы данных MySQL (не путать с паролем root операционной системы).
Создаём базу данных MySQL и пользователя redmine для работы с ней. Вместо [password] вставляем желаемый пароль пользователя.
$ mysql -u root -p
(вводим пароль root базы данных MySQL)
> create database redmine character set utf8;
> create user 'redmine'@'localhost' identified by '[password]';
> grant all privileges on redmine.* to 'redmine'@'localhost';
> exit
Скачиваем Redmine со страницы www.redmine.org/projects/redmine/wiki/Download [5] или командой
$ wget http://www.redmine.org/releases/redmine-3.3.3.tar.gz
Распаковываем Redmine в каталог /usr/share/redmine. Находим подкаталог config и копируем config/database.yml.example в config/database.yml. После этого редактируем файл, для того чтобы установить «production» режим базы данных:
$ sudo cp /usr/share/redmine/config/database.yml.example /usr/share/redmine/config/database.yml
$ sudo nano /usr/share/redmine/config/database.yml
Вводим текст и сохраняем файл (ctrl+x):
production:
adapter: mysql2
database: redmine
host: localhost
username: redmine
password: "[password]"
encoding: utf8
Устанавливаем необходимые пакеты:
$ sudo apt install ruby ruby-dev build-essential libmysqlclient-dev
Устанавливаем Bundler:
$ gem install bundler
Теперь можно установить gems, необходимые для Redmine:
$ cd /usr/share/redmine
$ bundle install --without development test rmagick
Создаём случайный ключа, который Rails будет использовать для шифрования данных в cookie:
$ cd /usr/share/redmine
$ bundle exec rake generate_secret_token
Дальше создаём структуру базы данных (выполняем в /usr/share/redmine):
$ RAILS_ENV=production bundle exec rake db:migrate
$ RAILS_ENV=production bundle exec rake redmine:load_default_data
Устанавливаем необходимые права доступа:
$ cd /usr/share/redmine
$ sudo chown -R www-data:www-data files log tmp public/plugin_assets
$ sudo chmod -R 755 files log tmp public/plugin_assets
При желании можно протестировать установку Redmine с помощью веб-сервера WEBrick:
$ sudo -u www-data bundle exec rails server webrick -e production
После запуска WEBrick стартовая страница Redmine должна быть доступна в браузере по адресу http://localhost:3000/
Установить Passenger:
$ sudo apt-get install libapache2-mod-passenger
Добавить символьную ссылку на public каталог Redmine:
$ sudo ln -s /usr/share/redmine/public /var/www/redmine
Необходимо настроить пользователя Passenger по умолчанию, для этого редактируем файл:
$ sudo nano /etc/apache2/mods-available/passenger.conf
Нужно добавить следующую строчку и сохранить (ctrl+x):
PassengerDefaultUser www-data
В итоге файл должен выглядеть так:
<IfModule mod_passenger.c>
PassengerRoot /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini
PassengerDefaultRuby /usr/bin/ruby
PassengerDefaultUser www-data
</IfModule>
Далее создать конфигурационный файл redmine.conf для apache:
$ sudo nano /etc/apache2/sites-available/redmine.conf
Добавить следующий текст и сохранить (ctrl+x):
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www
ServerName myservername
RewriteEngine on
RewriteRule ^/$ /redmine [R]
<Directory /var/www/redmine>
RailsBaseURI /redmine
PassengerResolveSymlinksInDocumentRoot on
</Directory>
ErrorLog /var/log/apache2/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog /var/log/apache2/access.log combined
</VirtualHost>
Подключить модули Passenger и Rewite:
$ sudo a2enmod passenger
$ sudo a2enmod rewrite
Отключить default вебсайт и подключить redmine:
$ sudo a2dissite 000-default
$ sudo a2ensite redmine
Установить права доступа на /tmp/cache Redmine:
sudo chmod 777 /usr/share/redmine/tmp/cache
Перезапустить Apache:
$ sudo service apache2 reload
Теперь можно открыть любимый браузер и зайти на http://[my site or ip]/redmine
или просто http://[my site or ip]
. Должна появиться стартовая страничка системы Redmine.
Необходимо установить пакеты:
$ sudo apt-get install mercurial libapache2-mod-perl2 libapache-dbi-perl libdbd-mysql-perl
Создать директорию, в которой будут храниться репозитории проектов:
$ sudo mkdir -p /var/hg/
Теперь мы хотим сделать репозитории доступными по http протоколу. Для этого необходимо создать cgi-скрипт:
$ sudo nano /var/hg/hgwebdir.cgi
Добавить следующий текст и сохранить:
#!/usr/bin/python
from mercurial import demandimport; demandimport.enable()
from mercurial.hgweb.hgwebdir_mod import hgwebdir
import mercurial.hgweb.wsgicgi as wsgicgi
application = hgwebdir('hgweb.config')
wsgicgi.launch(application)
Теперь нужно создать файл hgweb.config:
$ sudo nano /var/hg/hgweb.config
Добавить следующее содержимое и сохранить:
[paths]
/=/var/hg/**
[web]
allow_push = *
push_ssl = false
allowbz2 = yes
allowgz = yes
allowzip = yes
Установить разрешения для файлов:
$ sudo chown -R www-data:www-data /var/hg/*
$ sudo chmod gu+x /var/hg/hgwebdir.cgi
Теперь надо создать conf файл для Apache:
$ sudo nano /etc/apache2/conf-available/hg.conf
Добавить следующее содержимое и сохранить:
PerlLoadModule Apache2::Redmine
ScriptAliasMatch ^/hg/(.*) /var/hg/hgwebdir.cgi/$1
<Directory /var/hg>
Options +ExecCGI
</Directory>
<Location /hg>
AuthType Basic
AuthName "Mercurial"
Require valid-user
AuthUserFile /dev/null
#Redmine auth
PerlAccessHandler Apache::Authn::Redmine::access_handler
PerlAuthenHandler Apache::Authn::Redmine::authen_handler
RedmineDSN "DBI:mysql:database=redmine;host=127.0.0.1"
RedmineDbUser "redmine"
RedmineDbPass "red325"
</Location>
Ещё необходимо создать ссылки:
$ sudo ln -s /etc/apache2/conf-available/hg.conf /etc/apache2/conf-enabled/
$ sudo ln -s /usr/share/redmine/extra/svn/Redmine.pm /usr/lib/x86_64-linux-gnu/perl5/5.22/Apache2/
Включить CGI модуль и перезапустить Apache:
$ sudo a2enmod cgi
$ sudo service apache2 reload
Репозитории будут доступны по адресам http://[my site or ip]/hg/*
. Например, для проекта project адрес будет таким http://[my site or ip]/hg/project
. Если у проекта project будет подпроект subproject1, то его репозиторий будет доступен по адресу http://[my site or ip]/hg/project/subproject1
.
Чтобы клонировать репозиторий надо будет выполнить:
$ hg clone http://[my site or ip]/hg/project
Если клонируемый проект не публичный (устанавливается в настройках проекта через веб-интерфейс системы Redmine), то потребуется ввести имя пользователя и пароль.
Авторизация осуществлятся по проектам, т.е. доступ будет возможен только для участников проекта (менеджеры и разработчики).
Для того чтобы всё корректно работало, каталоги репозиториев в /var/hg/ должны совпадать с Identifier репозиториев, которые задаются в настройках репозитория Redmine при его создании (через веб-интерфейс). Также при создании реопзитория в Redmine необходимо указать путь к нему, например /var/hg/project. Репозитории в /var/hg необходимо создать вручную для каждого проекта и инициализировать командой (hg init
).
После создания нового репозитория надо убедиться, что у него установлены нужные права доступа:
$ sudo chown -R www-data:www-data /var/hg/[repository name]
В принципе, есть возможность автоматизировать создание репозиториев. Информация об этом есть в руководстве по ссылке HowTo Install Redmine 1.2.x with Mercurial and Subversion on Ubuntu Server 10.04 [3]
Redmine поддерживает уведомления о разных событиях (изменениях в жизни баг/фич и т.п.). Для того чтобы пользоваться этим функционалом достаточно настроить способ отправки email-сообщений. Делается это в файле /usr/share/redmine/config/configuration.yml В файле имеются шаблоны для разных конфигураций. Нужно разкомментировать и отредактировать нужный.
Например, так:
email_delivery:
delivery_method: :smtp
smtp_settings:
address: "10.11.12.13"
port: 25
authentification: :none
enable_starttls_auto: false
openssl_verify_mode: 'none'
Обратите внимание, что каждая секция в файле configuration.yml сдвинута на два пробела. Это важно.
Базовые уведомления должны быть доступны после указания способа рассылки электронных писем. Однако для уведомлений об изменениях в репозитории необходимо использовать внешний плагин. Скачать его можно с сайта github.com/lpirl/redmine_diff_email [6].
Установим этот плагин. Для этого скопируем содержимое плагина в каталог /usr/share/redmine/plugins/redmine_diff_email. В соответствии с инструкцией по установке плагина изменяем файл /usr/share/redmine/app/views/repositories/_form.html.erb:
--- OLD
+++ NEW
@@ -23,6 +23,7 @@
<% button_disabled = ! @repository.class.scm_available %>
<%= repository_field_tags(f, @repository) %>
<% end %>
+<%= call_hook(:view_repository_form) %>
</div>
<p>
Оригинальный плагин работает с устаревшей версией redmine. Для redmine-3.3 нужно внести изменения в файл
/usr/share/redmine/plugins/redmine_diff_email/db/migrate/002_add_repositories_is_diff_email_attached.rb. Содержимое файла должно быть таким:
class AddRepositoriesIsDiffEmailAttached < ActiveRecord::Migration
def self.up
add_column :repositories, :is_diff_email_attached, :boolean, :default => false, :null => false
Repository.update_all(["is_diff_email_attached = ?", true])
Repository.update_all(["is_diff_email = ?", true])
end
def self.down
remove_column :repositories, :is_diff_email_attached
end
end
После этого в каталоге /usr/share/redmine выполнить команду для обновления базы данных:
bundle exec rake redmine:plugins:migrate RAILS_ENV=production
Перезапускаем Redmine:
$ sudo service apache2 reload
Если плагин установлен правильно, то в списке плагинов Administration → Plugins появится Redmine Diff Email Plugin, а также в веб-интерфейсе Redmine SomeProject → «Settings» Tab → «Repositories» Tab → «Edit» появятся настройки уведомлений.
Кроме того, чтобы информация об изменениях в репозиториях автоматически отслеживалась Redmine, необходимо выполнить дополнительные действия. Сначала нужно включить WS для управления репозиториями и сгенерировать API key. Как это делается:
* В web-интерфейсе Redmine в меню Administration выбрать Settings
* Перейти на вкладку Repositories
* Включить 'Enable WS for repository management'
* Кликнуть на ссылку 'Generate a key'
* Сохранить изменения кнопкой 'Save'
Далее создаём скрипт:
$ sudo nano /var/hg/fetch_changes
Добавляем следующий текст и сохраняем: (необходимо заменить [your API key] сгенерированным в API-ключом)
#!/bin/sh
curl "http://localhost/redmine/sys/fetch_changesets?key=[your API key]" > /dev/null 2>&1
Устанавливаем права доступа для созданного файла:
$ sudo chown www-data:www-data /var/hg/fetch_changes
$ sudo chmod ug+x /var/hg/fetch_changes
Остаётся добавить в /var/hg/hgweb.config секцию [hooks], чтобы скрипт fetch_changes выполнялся после каждого коммита:
[hooks]
changegroup = /var/hg/fetch_changes
Теперь при изменениях в репозитории Redmine будет автоматически отсылать уведомления участникам проекта.
Автор: polytechnic
Источник [7]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/redmine/257973
Ссылки в тексте:
[1] Официальный сайт: http://www.redmine.org/
[2] Официальный сайт: https://www.mercurial-scm.org
[3] HowTo Install Redmine 1.2.x with Mercurial and Subversion on Ubuntu Server 10.04: http://www.redmine.org/projects/redmine/wiki/HowTo_Install_Redmine_12x_with_Mercurial_and_Subversion_on_Ubuntu_Server_1004/
[4] Redmine Installation Guide: http://www.redmine.org/projects/redmine/wiki/RedmineInstall
[5] www.redmine.org/projects/redmine/wiki/Download: http://www.redmine.org/projects/redmine/wiki/Download
[6] github.com/lpirl/redmine_diff_email: https://github.com/lpirl/redmine_diff_email
[7] Источник: https://habrahabr.ru/post/331006/?utm_source=habrahabr&utm_medium=rss&utm_campaign=sandbox
Нажмите здесь для печати.