воскресенье, 25 июля 2010 г.

Установка Redmine - системы управления проектами

Мысль организовать свой процесс более упорядоченно и систематизировано витала давно. Долгое время пользовался бесплатными хостингами проектов, наподобие http://www.assembla.com/ и http://www.xp-dev.com/. В принципе для open-source проектов отличные решения. А вот для приватных проектов - на ассембле придется платить, а на xp-dev нельзя гибко настраивать доступ к проекту, либо полностью открытый проект, либо полностью закрытый от посторонних глаз. А хотелось бы совмещать: что-то открыть (например документацию, timeline), а что-то закрыть (код, внутреннею информацию и т.д). Да и эти хостинги довольно ограничены по возможностям. Платные же сервисы даже не искал, нет желания привязываться к ним.

Т.о. бесплатные хостинги отпали, платные тоже. Остается найти автономную систему, желательно полностью удовлетворяющую моим потребностям.

Требования к системе управления проектами:
  1. Web-ориентированная - я сам веб-разработчик, и отлично понимаю все плюсы этой архитектуры. Возможность работы с системой через "тонкий"-клиент, распределенность, многопользовательность и т.д и т.п.
  2. Open source - преимущества очевидны, за опенсурс-системами стоит сообщество, которое всегда поделится опытом, готовыми решениями и процессами. Плюс свобода, поставщик не диктует и не навязывает, можно самому доделать то, что не устраивает.
  3. Легкость в развертывании - веб-приложения можно писать на чем угодно, но, например, хостинг для .NET или Java более затратен, чем обычные хостинги, ориентированные на веб. А если ставить систему у себя дома, то держать тяжеловесную инфраструктуру накладно. +кросполатформеность (Винда, со своим .NET отпадает сразу). Связка Linux+Apache+PHP+MySql было бы оптимально.
  4. Управление несколькими проектами, с возможностью подпроектов.
  5. Удобный интерфейс, ajax-приветствуется, но не до фанатизма, не надо что бы страница грузилась полчаса и лагала.
  6. Bug-трекинг система - без этого никуда
  7. Event-система - планирование событий, оповещения (email, icq, twitter  и т.д)
  8. Поддержка SVN или Git
  9. Wiki -  признана лучшим решением для ведения документации.
  10. Хотелось бы что то типа task board как в agile, только электронной.
Выбор сделан в пользу Redmine
Вот принципе скромный списочек. Процесс выбора конкретной системы расписывать не буду. Скажу кратко, остановил свой выбор на Redmine. Отличные отзывы в интернете. Подходит под практически все требования, плюс поддерживает плагины, коих достаточно много. 

Единственный момент, написана на Руби. Хостинг с поддержкой руби конечно не редкость, но и не так распространены, как с поддержкой PHP. Выход, либо платить больше, либо использовать VDS или дедик. Кроме этого, руби я совершенно не знаю, не знаком с архитектурой, не знаю сильные и слабые стороны. С другой стороны, Руби сейчас набирает обороты, все больше и больше разработчиков обращают на него внимание, значит есть за что.

Установка
Отложим пока вопросы, связанные с выбором хостинга. Установим у себя на dev-машине, точнее на рабочем ноуте, довольно со скромными по сегодняшним меркам параметрами: Intel Mobile 1.8Ghz, 1Gb оперативки, винт вроде 5500 оборотов. В качестве ОС стоит Ubuntu 10.04, рабочий стол Gnome. Постоянно запущен apache2, php 5.3, mysql 5.1 +IDE NetBeans 6.9 + браузер + аудиоплейер + еще всякая лабуда. При этом, я не испытываю каких либо неудобств в работе, надеюсь руби не сильно повлияет на мое окружение.

Заходим на сайт Redmine в раздел, с описанием процесса установки. Для установки необходим Ruby и фреймворк Ruby on Rails.

CGI, FastCGI или Apache mod?
В интернете можно найти множество дебатов, что лучше, модуль апача или отдельный интерпритатор. Это относится не только к Руби, для ПХП, все то же самое. Мой выбор - устанавливать как модуль, преимущества CGI-режима, ввиде запуска процесса от имени пользователя и т.д и т.п мне не нужны, мне нужна тесная интеграция с апачем.

Ставим Руби как модуль Апача
Процесс установки приведен для убунты.
Ищем в репозиторях любое упоминание руби и апача
yugeon@eklmn:~$ apt-cache search ruby | grep -i apache
libapache-ruby1.8 - Ruby libraries for mod_ruby 
libapache2-mod-passenger - Rails and Rack support for Apache2 
libapache2-mod-ruby - Embedding Ruby in the Apache2 web server 
libcatalyst-engine-apache-perl - base class for Apache 1.x and 2.x Catalyst engines 
passenger-doc - Rails and Rac support for Apache2 - Documentation
Выдало много чего, попробуем разобраться что ставить
  • libapache-ruby1.8 - судя по всему мод для апача первой ветки
  • libapache2-mod-passenger - что-то связанное с поддержкой Rails, (а мы в курсе что Redmin использует фреймворк Ruby on Rails) 
  • libapache2-mod-ruby - Встраивает поддержку Руби (возможно то что надо?)
  • далее какая то дрянь и дока по passenger
Итак, надо выбрать между двумя модулями. Полазив в инете, находим что разработка mod_ruby  застопорилась в ноябре 2008. Кроме того, не рекомендуют ставить mod_ruby и mod_php, из-за проблем совместимости. Про mod_passenger наоборот написано, что все нормально и для Ruby on Rails как нельзя лучше подходит, т.к. написан специально для этого.
sudo apt-get install libapache2-mod-passenger
Все зависимости автоматически разрулятся APT. Причем все что от нас потребуется - это просто перезапустить апач. Что и делаем.
sudo /etc/init.d/apache2 restart
Устанавливаем Ruby on Rails требуемой версии, используя gem - пакетный менеджер для Ruby. Должен автоматом установится, когда ставили мод пассажир.
gem install rails -v=2.3.5

Скачиваем последний стабильный Redmine с SVN
svn co http://redmine.rubyforge.org/svn/branches/1.0-stable ~/sites/projmanager.local

Теперь собственно выполняем шаги, описанные на сайте Redmine.
Сначала создаем БД.
Я сделаю это через phpmyadmin. Расписывать смысла не вижу.
create database redmine character set utf8;
create user 'redmine'@'localhost' identified by 'my_password';
grant all privileges on redmine.* to 'redmine'@'localhost';

Настраиваем конфиг с настройками к БД
Собственно для этого копируем файл ./config/database.yml.example в ./config/database.yml и исправляем по аналогии в секции production

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

rake generate_session_store

Создаем структуру БД
Для этого переходим в консоле в root-каталог куда установлен redmine и выполняем следующуу команду.
RAILS_ENV=production rake db:migrate
И если вылезет ошибка, типа такой
rake aborted!
no such file to load -- mysql

То, значит не хватает каких то модулей для руби.
У меня еще и не хотел модуль mysql компилится, помогла установка dev-пакетов
sudo apt-get install ruby1.8-dev
sudo apt-get install libmysqlclient15-dev
sudo gem install mysql

Первичное заполнение БД (необезательное, но рекомендуется)
RAILS_ENV=production rake redmine:load_default_data

Настройка прав доступа
Напоминаю, мы все еще в корневом каталоге куда установлен redmine.

mkdir tmp public/plugin_assets 
sudo chown -R www-data:www-data files log tmp public/plugin_assets
sudo chmod -R 755 files log tmp public/plugin_assets

Теперь надо проверить что все работает.
Для удобства, создадим отдельный виртуальный хост projmanager.local, заодно его же и будем использовать для управления проектами.

mkdir ~/sites/projmanager.local
mkdir ~/sites/projmanager.local/public
sudo touch /etc/apache2/sites-available/projmanager
sudo nano /etc/apache2/sites-available/projmanager
Содержимое файла projmanager

<VirtualHost *:80>
        ServerAdmin webmaster@localhost

        ServerName projmanager.local
        DocumentRoot /home/yugeon/sites/projmanager.local/public
        
        <Directory /home/yugeon/sites/projmanager.local/public>
                AllowOverride All
                Order allow,deny
                allow from all
                Options -MultiViews
        </Directory>
</VirtualHost>


Включим сайт и перезагрузим конфиг апача
sudo a2ensite projmanager
sudo /etc/init.d/apache2 reload

И последнее, добавим строку 127.0.0.1 projmanager.local в /etc/hosts, что бы удобно было обращаться к сайту из браузера.

Теперь, надо все протестировать. Проверяем что не отвалился php_mod, а то в некоторых источниках утверждается что при установки мода passenger, отваливается модуль php5. Пишем простой скриптик info.php, кидаем в корень сайта и запускаем

echo "<?php phpinfo();">~/sites/projmanager.local/public/info.php

Ничего не отвалилось, ну и отлично, набираем в браузере http://projmanager.local появляется главная страница свежеустановленного Redmine. Первые впечатления: интерфейс удобный, простой, интуитивный. Система просто летает, правда первый запуск довольно продолжительный, видимо связано с тем, что все приложение грузится в память.

Устанавливаем плагин для agile
Попробывал только два плагина: Redmine_backlogs и Scrum PM
Оба не без изъянов. Scrum PM заточен под redmine версии 0.9 и не поставился на 1.0.

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

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

Соответственно, продукт овнер создает пользовательские истории. Которые можно раскидать по спринтам (версиям). Каждой пользовательской истории можно назначит приоритет и оценить в поинтах. Все это делается на 1 экране (backlog), перемещение довольно удобное, с помощью drag'n'drop. 

Для каждого спринта своя task board, на которой можно создавать задачи, назначать ответственного и перемещать их по стадиям. Для задачи можно назначить ответственного и оценить в часах. Для системы, каждая задача, является подзадачей пользовательской истории. При перемещении задачи в колонку Done задача автоматически закрывается и считается выполненой. Правда, после того как все задачи пользовательской истории сделаны, сама пользовательская история автоматически не переходит в статус закрытой.

Установка по инструкции, проблем не вызвала, правда была ошибка при миграции, когда пыталась удалится несуществующая таблица, но она не существенная, т.к это последние этапы миграции.

Ссылки по теме
http://en.wikipedia.org/wiki/Comparison_of_issue_tracking_systems
Выбор на хабре с интересными комментами
Agile/Scrum плагин для Redmine

3 комментария:

  1. К фф есть удобный плагин, который облегчает навигацию по редмайн проектам. Называется Redmine Toolbar. https://addons.mozilla.org/de/firefox/addon/11545/

    ОтветитьУдалить
  2. Пользуюсь Redmine уже почти месяц, отличная вещь. Во многом превосходит все инструменты которые я видел!

    ОтветитьУдалить
  3. Спасибо за статью, думаю она многим поможет. Хочу поделиться RMClient для тех, кто планирует проекты с помощью Redmine. Мы разработали таймер для учета времени в системе Redmine, он доступен для скачивания после короткой регистрации. Будем очень признательны за его использование и помощь в тестировании.

    ОтветитьУдалить