Redmine - управление проектами (Apache) во FreeBSD

Posted Пт, 02/05/2010 - 13:08 by Raven2000

Redmine — открытое серверное веб-приложение для управления проектами и отслеживания ошибок. Redmine написан Ruby и представляет собой приложение на основе широко известного веб-фреймворка Ruby on Rails.

Данный продукт предоставляет следующие возможности:

ведение нескольких проектов;

гибкая система доступа, основанная на ролях;

система отслеживания ошибок;

диаграммы Ганта и календарь;

ведение новостей проекта, документов и управление файлами;

оповещение об изменениях с помощью RSS-потоков и электронной почты;

вики для каждого проекта;

форумы для каждого проекта;

учёт временных затрат;

настраиваемые произвольные поля для инцидентов, временных затрат, проектов и пользователей;

лёгкая интеграция с репозиториями (SVN, CVS, Git, Mercurial, Bazaar и Darcs);

создание записей об ошибках на основе полученных писем;

поддержка множественной аутентификации LDAP;

возможность самостоятельной регистрации новых пользователей;

многоязыковой интерфейс (в том числе русский);

поддержка СУБД MySQL, PostgreSQL, SQLite, Oracle.

Содержание:

Введение

Установка Redmine

Настройка MYSQL

Настройка Ruby

Настройка Apache

Настройка Redmine

Запуск

Настройка SMTP сервера

Настройка Хранилища

Обновление

Описание

FAQ

Введение

Я буду устанавливать на "голую" FreeBSD 8.0 i386 и поэтому у меня будет больше запросов по установке, а у вас соответственно меньше.

Установка Redmine

Установим классически из портов:

# cd /usr/ports/

bsd# make search name=Redmine

Port: redmine-0.9.1

Path: /usr/ports/www/redmine

Info: A flexible project management web application

Maint: decke@bluelife.at

B-deps: libiconv-1.13.1 ruby-1.8.7.248,1 ...

R-deps: libiconv-1.13.1 mysql-client-5.0.89 ...

WWW: _http://www.redmine.org/

Port: redmine-basecamp-20091116

Path: /usr/ports/www/redmine-basecamp

Info: Basecamp Theme for Redmine

Maint: decke@bluelife.at

B-deps:

R-deps: libiconv-1.13.1 mysql-client-5.0.89 ...

WWW: _http://www.redmine.org/wiki/redmine/ThemeBasecamp

# cd /usr/ports/www/redmine && make install clean

~~

Options for redmine 0.9.1

[X] MYSQL Enable MySQL Support

[ ] POSTGRESQL Enable PostgreSQL Support

~~

Options for ruby 1.8.7.248,1

[ ] ONIGURUMA Build with oniguruma regular expressions lib

[ ] IPV6 Enable IPv6 support

[X] RDOC Build and install Rdoc indexes

[ ] DEBUG Compile-in debug info

~~~

Options for perl 5.8.9_3

[ ] DEBUGGING Build with debugging support

[ ] GDBM Build GDBM_File extension

[X] PERL_MALLOC Use Perl malloc

[X] PERL_64BITINT Use 64 bit integers (on i386)

[ ] THREADS Build threaded perl

[ ] SUIDPERL Build set-user-id suidperl binary

[ ] SITECUSTOMIZE Run-time customization of @INC

[X] USE_PERL Rewrite links in /usr/bin

~~~

Options for m4 1.4.13,1

[ ] LIBSIGSEGV Use libsigsegv for better diagnostics

~~~

Options for libiconv 1.13.1

[X] EXTRA_ENCODINGS Include extra character sets

[ ] EXTRA_PATCHES Apply patches to fix CP932 add EUCJP-MS

~~

=============================================================================

Redmine was installed.

You now need to setup your Redmine installation so

please have a look at the Installation Guide.

_http://www.redmine.org/wiki/redmine/RedmineInstall

If you are upgrading please read the Upgrading Guide

before starting the new version.

_http://www.redmine.org/wiki/redmine/RedmineUpgrade

=============================================================================

===> Registering installation for redmine-0.9.1

===> Cleaning for ruby-1.8.7.248,1

===> Cleaning for ruby18-iconv-1.8.7.248,1

===> Cleaning for rubygem-rake-0.8.7

===> Cleaning for ruby18-mysql-2.8.1

===> Cleaning for automake-1.10.1

===> Cleaning for autoconf-2.62

===> Cleaning for libiconv-1.13.1

===> Cleaning for ruby18-gems-1.3.5

===> Cleaning for mysql-client-5.0.89

===> Cleaning for perl-5.8.9_3

===> Cleaning for automake-wrapper-20071109

===> Cleaning for m4-1.4.13,1

===> Cleaning for help2man-1.37.1

===> Cleaning for gmake-3.81_3

===> Cleaning for autoconf-wrapper-20071109

===> Cleaning for libtool-2.2.6b

===> Cleaning for p5-gettext-1.05_2

===> Cleaning for gettext-0.17_1

===> Cleaning for redmine-0.9.1

Настройка MYSQL

Создадим пустую БД и пользователя для работы с ней.

# mysql -h localhost --user=admin--password=XXXXX

mysql>create database redmine_project character set utf8;

mysql>create user 'redmine_project'@'localhost' identified by 'my_password';

mysql>grant all privileges on redmine_project.* to 'redmine_project'@'localhost';

mysql>exit;

Bye

Скопируем и изменим конфигурационный файл работы с БД config/database.yml.example в config/database.yml в соответствие с вашими параметрами.

# cd /usr/local/www/redmine/config/

# cp database.yml.example database.yml

# chmod u+w database.yml

# vi database.yml

production:

adapter: mysql

database: redmine_project

host: localhost

username: redmine_project

password: my_password

encoding: utf8

Настройка Ruby

Установим необходимые элементы Ruby:

Port: rubygem-rails-2.3.4

Path: /usr/ports/www/rubygem-rails

Info: MVC web application framework

Maint: pgollucci@FreeBSD.org

B-deps: libiconv-1.13.1 ruby-1.8.7.248,1 ...

R-deps: libiconv-1.13.1 ruby-1.8.7.248,1 ...

WWW: _http://www.rubyonrails.org/

# cd /usr/ports/www/rubygem-rails && make install clean

Options for rubygem-rails 2.3.4

[X] FCGI FastCGI support

[ ] MEMCACHE_CLIENT MemCache-Client support

~~~

Options for rubygem-activerecord 2.3.4_1

[X] NATIVE_MYSQL Use native MySQL bindings

[ ] NATIVE_POSTGRESQL Use native PostgreSQL bindings

[ ] NATIVE_SQLITE3 Use native SQLite3 bindings

~~

===> Cleaning for rubygem-activesupport-2.3.4_1

===> Cleaning for rubygem-activerecord-2.3.4_1

===> Cleaning for rubygem-actionpack-2.3.4

===> Cleaning for rubygem-actionmailer-2.3.4

===> Cleaning for rubygem-activeresource-2.3.4

===> Cleaning for ruby18-fcgi-0.8.7

===> Cleaning for rubygem-rack-1.0.1,1

===> Cleaning for fcgi-devkit-2.4.0

===> Cleaning for rubygem-rails-2.3.4

Установим необходимый порт для запуска Ruby под Apache. Немного ругается, что под другую версию Apache, но нам монописуально и отрехтуем до нужного состояния. =)

# make search name=passenger

Port: rubygem-passenger-2.2.8

Path: /usr/ports/www/rubygem-passenger

Info: Modules for running Ruby on Rails and Rack applications

Maint: jatzen@gmail.com

B-deps: apache-2.2.14_5 ...

R-deps: apache-2.2.14_5 ...

WWW: _http://www.modrails.com/

# cd /usr/ports/www/rubygem-passenger

# make install clean

===> rubygem-passenger-2.2.8 : Error from bsd.apache.mk. apache20

is installed (or APACHE_PORT is defined) and port requires 2.2+.

*** Error code 1

Stop in /usr/ports/www/rubygem-passenger.

# vi Makefile

USE_APACHE= 2.0+ # 2.2+ > 2.0+

# make install clean

Options for rubygem-passenger 2.2.8

[X] APACHEPORT Use apache22

[ ] NGINXPORT Use nginx

~~

===> Registering installation for rubygem-passenger-2.2.8

===> SECURITY REPORT:

This port has installed the following files which may act as network

servers and may therefore pose a remote security risk to the system.

/usr/local/lib/ruby/gems/1.8/gems/passenger-2.2.8/lib/native_support.so

/usr/local/lib/ruby/gems/1.8/gems/passenger-2.2.8/ext/

apache2/mod_passenger.so

/usr/local/lib/ruby/gems/1.8/gems/passenger-2.2.8/ext/

apache2/ApplicationPoolServerExecutable

/usr/local/lib/ruby/gems/1.8/gems/passenger-2.2.8/

ext/phusion_passenger/native_support.so

If there are vulnerabilities in these programs there may be a security

risk to the system. FreeBSD makes no guarantee about the security of

ports included in the Ports Collection. Please type 'make deinstall'

to deinstall the port if this is a concern.

For more information, and contact details about the security

status of this software, see the following webpage:

_http://www.modrails.com/

===> Cleaning for rubygem-passenger-2.2.8

Настройка Apache

У меня установлен и настроен Apache-2.0.63 с mod_fastcgi-2.4.6

В конфигурацию Apache добавим следующий модуль:

# vi /usr/local/etc/apache2/httpd.conf

LoadModule passenger_module /usr/local/lib/ruby/gems/1.8/gems/passenger-2.2.8/

ext/apache2/mod_passenger.so

PassengerRoot /usr/local/lib/ruby/gems/1.8/gems/passenger-2.2.8

Виртуальный хост рисуем примерно так:

<VirtualHost *:80>

Alias /php-fcgi/ /usr/local/etc/fcgi_conf/Raven2000/

ScriptAlias /cgi-bin/ "/home/Raven2000/www/data/cgi-bin/"

ServerAdmin admin@test.site.local

SuexecUserGroup Raven2000 Raven2000

#DocumentRoot /usr/home/Raven2000/www/data/redmine/public

DocumentRoot /usr/local/www/redmine/public

ServerName test.site.local

ServerAlias

<Directory /usr/local/www/redmine/public/>

Options Indexes FollowSymLinks MultiViews

AllowOverride All

Order deny,allow

Allow from all

</Directory>

DirectoryIndex index.php index.html index.htm

AddType application/x-httpd-php .php

ErrorLog /home/Raven2000/www/log/test.site.local.error.log

CustomLog /home/Raven2000/www/log/test.site.local.access.log combined

</VirtualHost>

Настройка Redmine

Redmine хранит данные сессии в куках по умолчанию, который требует секрета и мы его создадим. Это можно сделать командой:

# cd /usr/local/www/redmine

# rake generate_session_store

(in /usr/local/www/redmine)

Для создания структуры базы данных, выполните следующую команду в каталоге Redmine.:

# rake db:migrate RAILS_ENV="production"

(in /usr/local/www/redmine)

~~~~

-- change_column(:wiki_content_versions, :data, :binary, {:limit=>16777216})

-> 0.0095s

== ChangeWikiContentsTextLimit: migrated (0.0203s) ===========================

Добавим дополнительные данные конфигурации (по умолчанию) в базу данных, выполнив следующую команду:

# rake redmine:load_default_data RAILS_ENV="production"

(in /usr/local/www/redmine)

Select language: bg, bs, ca, cs, da, de, el, en, es, fi, fr, gl, he, hr, hu, id,

it, ja, ko, lt, nl, no, pl, pt, pt-BR, ro, ru, sk, sl, sr, sv, th, tr, uk, vi,

zh, zh-TW [en] ru

====================================

Default configuration data loaded.

Укажем Redmine, что нужно использовать php-fcgi.

# cd /usr/local/www/redmine/public/

# cp dispatch.fcgi.example dispatch.fcgi

Запуск

Проверим правильность установки встроенного WEBrick веб-сервера:

# ruby script/server webrick -e production

=> Booting WEBrick

=> Rails 2.3.5 application starting on _http://0.0.0.0:3000

=> Call with -d to detach

=> Ctrl-C to shutdown server

[2010-02-04 12:03:29] INFO WEBrick 1.3.1

[2010-02-04 12:03:29] INFO ruby 1.8.7 (2009-12-24) [i386-freebsd8]

[2010-02-04 12:03:29] INFO WEBrick::HTTPServer#start: pid=15337 port=3000

^C[2010-02-04 12:04:33] INFO going to shutdown ...

[2010-02-04 12:04:33] INFO WEBrick::HTTPServer#start done.

Exiting

Итак встроенный веб-сервер работает теперь проверим Apache.

Запускаем Apache и в браузере вводим _http://test.site.local

Вводим учетную запись администратора

Логин: admin

Пароль: admin

В своем профиле меняем язык на Русский. И обязательно меняем дофолтовый пароль на свой.

Настройка SMTP сервера

Настроим систему рассылки сообщений.

# cd /usr/local/www/redmine/config

# cp email.yml.example email.yml

# cat email.yml

production:

delivery_method: :smtp

smtp_settings:

address: mx.mail.ru

port: 25

domain: mx.mail.ru

authentication: :login

user_name: Raven2000@mail.ru

password: XXX

Настройка Хранилища

Обновление

Обновлять просто для этого пройдемся по шагам:

0. Проверим рекомендации Requirements

1. Сохраним существующую БД командой mysqldump.

1.1 Оригинальные файлы сохраним tar.

# cd /usr/local/www/

# tar czf redmine.tar.gz redmine/

2.Обновим порты и сделайте portupgrade существующему порту на более новую версию.

3. Обновим структуру

# cd /usr/local/www/redmine

# rake db:migrate RAILS_ENV=production

(in /usr/local/www/redmine)

== AddIndexOnChangesetsScmid: migrating ======================================

-- add_index(:changesets, [:repository_id, :scmid], {:name=>:changesets_repos_scmid})

-> 0.3934s

== AddIndexOnChangesetsScmid: migrated (0.3936s) =============================

3.1 Очистим кеш, tmp и сесии

# rake tmp:cache:clear

(in /usr/local/www/redmine)

# rake tmp:sessions:clear

(in /usr/local/www/redmine)

Описание

Пользователи системы

Пользователи являются одним из центральных понятий предметной области. Модель пользователя является основой для идентификации и аутентификации работающего с системой персонала и клиентов, а также для авторизации их в разных ролях, проектах и т.п.

Роли

Роли пользователей определяются гибкой моделью определения прав доступа пользователей. Роли включают в себя набор привилегий, позволяющих разграничивать доступ к различным функциям системы.

Пользователям назначается роль в каждом проекте, в котором он участвует, например «менеджер в проекте по разработке сайта А», «разработчик в проекте по поддержанию интранета компании» или «клиент в проекте по рефакторингу информационной системы компании Б».

Проекты

Проект является одним из основных понятий в предметной области систем управления проектами. Благодаря этой сущности возможно организовать совместную работу и планирование нескольких проектов одновременно с разграничением доступа различным пользователям (см. выше). Проекты допускают иерархическую вложенность.

Трекеры

Трекеры являются основной классификацией, по которой сортируются задачи в проекте. Само по себе понятие «трекер» восходит к системам учета ошибок (англ. Bug tracking tool), представшим каждая в отдельности один проект.

По сути, в Redmine трекеры представляют собой аналог подклассов класса «Задача» и являются основой для полиморфизма разного рода задач, позволяя определять для каждого их типа различные поля. Примерами трекеров являются «Улучшение», «Ошибка», «Документирование», «Поддержка»,

Задачи

Задачи являются центральным понятием всей системы, описывающим некую задачу, которую необходимо выполнить. У каждой задачи в обязательном порядке есть описание и автор, в обязательном порядке задача привязана к трекеру.

Каждая задача имеет статус. Статусы представляют собой отдельную сущность с возможностью определения прав на назначение статуса для различных ролей (например, статус «отклонен» может присвоить только менеджер) или определение актуальности задачи (например, «открыт», «назначен» — актуальные, а «закрыт», «отклонен» — нет).

Для каждого проекта отдельно определяются набор этапов разработки и набор категорий задач. Среди других полей интересны также «оцененное время», служащее основой для построения управленческих диаграмм, а также поле выбора наблюдателей за задачей (см. «Получение уведомлений»). К задачам имеется возможность прикреплять файлы (имеется отдельная сущность «Приложение»).

Значения других перечислимых свойств (например, приоритетность) хранятся в отдельной общей таблице.

Отслеживание изменения статуса задач

За отслеживание изменений параметров задач пользователями в системе отвечают две сущности: «Запись журнал изменений» и «Измененный параметр». Запись журнала отображает одно действие пользователя по редактированию параметров задачи и/или добавление комментария к ней. То есть служит одновременно инструментом ведения истории задачи и инструментом ведения диалога.

Сущность «Измененный параметр» привязана к отдельной записи журнала и предназначена для хранения старого и нового значения измененного пользователем параметра.

Связи между задачами

Задачи могут быть взаимосвязаны: например, одна задача является подзадачей для другой или предшествовать ей. Эта информация может быть полезна в ходе планирования разработки программы, за ее хранение в Redmine отвечает отдельная сущность.

Учет затраченного на проект времени

Система поддерживает учет затраченного времени благодаря сущности «Затраченное время», связанной с пользователями и задачей. Сущность позволяет хранить затраченное время, вид деятельности пользователя (разработка, проектирование, поддержка) и краткий комментарий к работе. Эти данные могут быть использованы, например, для анализа вклада каждого участника в проект или для оценки фактической трудоемкости и стоимости разработки

Привязка репозиториев

Redmine предоставляет возможность интеграции с различными системами контроля версий (репозиториями). Интеграция заключается в отслеживании изменений во внешнем репозитории, их фиксации в базе данных, анализе изменений с целью их привязки к определенным задачам, . В инфологической структуре системы за интеграцию с внешними репозиториями отвечают три сущности: «Репозиторий», «Редакция» и «Изменение». «Репозиторий» представляет собой связанную с проектом сущность, хранящую тип подключенного репозитория, его местонахождение и идентификационные данные его пользователя.

«Редакция» является отображением редакции репозитория, и, кроме информационных полей, может быть привязана к конкретной задаче (для этого требуется указать в описании изменений «refs #NUM», где NUM — номер задачи), и к пользователю-автору редакции. Сущность «Изменение» предназначена для хранения списка измененных (добавленных, удаленных, перемещенных, модифицированных) файлов в каждой редакции.

Получение уведомлений

Уведомления пользователей об изменениях, происходящих на сайте, осуществляется с помощью сущности «Наблюдатели», связывающей пользователей с объектами различных классов (проекты, задачи, форумы и др.). В базе данных хранятся также ключи доступа к подписке RSS, позволяющие получать уведомления посредством этой технологии, также уведомления рассылаются с помощью электронной почты.

FAQ

В. Проблема после обновления

О. Выполните

# rake config/initializers/session_store.rb

(in /usr/local/www/redmine)

# ruby script/server -e production

=> Booting WEBrick...

=> Rails 2.1.2 application started on <a href="http://0.0.0.0:3000<br />

=>" title="http://0.0.0.0:3000<br />

=>">http://0.0.0.0:3000<br />

=></a> Ctrl-C to shutdown server; call with --help for options

http://www.ignix.ru/public/daemon/redmine

Обновлено: 12.03.2015