За те пару лет, что я веду разработку, я не раз сталкивался с проблемой организации работы в команде. Перепробовали десятки разных программ и веб-сервисов, как платных так и бесплатных. Но везде чего-то не хватало, некоторые были слишком просты, другие были наоборот перегружены функциями и разобраться в них было очень сложно, а также моя паранойя не давала спокойно работать на чужом сервере. Последние пару месяцев слышал хорошие отзывы о проекте redmine, а где-то месяц назад решил попробовать и теперь я в неописуемом восторге от этого проекта.
Неофицальный логотип redmine
Ниже я расскажу основные плюсы, покажу как создавать собственные темы и опишу установку redmine в связке с nginx.

Внешний вид

Где-то у половины сервисов для командной разработки, которые я пробовал, внешний вид был, либо отвратительный, либо чересчур запутанный. Redmine в свою очередь выглядит чисто, минималистично и крайне логично. Поддерживает локализации и темы, поэтому вы сможете использовать его на родном языке и с минимальными трудностями настроить внешний вид под свой вкус.

Оперативный план в проекте

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

Создание собственной темы

Для начала нужно создать директорию в public/themes вашего redmine с названием новой темы:
public/themes/my_theme

После этого создаем css файл application.css и размещаем его в субдиректории stylesheets:
public/themes/my_theme/stylesheets/application.css

Вот так выглядит пример темы изменяющей одну из стандартных тем, добавляет логотип и меняет расположение меню:
/* загружаем стандартную тему classic */
@import url(../../classic/stylesheets/application.css);

/* добавляем логотип в header */
#header {
background: #507AAA url(../images/logo.png) no-repeat 2px;
padding-left: 86px;
}

/* перемещаем меню проекта вправо */
#main-menu {
left: auto;
right: 0px;
}

Теперь новую тему можно применить к сайту через пункт настройки в разделе администрирование. Если в списке тем вашей новой темы нет, то нужно перезапустить redmine. Пример такого тюнинга можно посмотреть на моём поддомене dev.sontan.name, там я установил такой же фон как и в блоге.

Гибкость

Redmine имеет огромные возможности по настройке «под проект», но, тем не менее, полностью работоспособен и «из коробки». Кроме того, он поддерживает плагины, которые расширяют возможности redmine и позволяют его интегрировать в другие сервисы.

Мультипроектность

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

Так выглядит список моих проектов

Настраиваемость

Можно настраивать практически всё, что может понадобиться: дополнительные поля, типы заявок, порядок смены статуса, доступ для разных типов пользователей и т.д. Но это не значит, что для того чтобы начать работать с redmine придется во всем разобраться, даже наоборот, большинству пользователей это и не понадобится, но всегда приятно знать, что инструмент с которым ты работаешь это умеет ;)

Установка

Сама установка не сложна и для того чтобы установать redmine «на попробовать» можно использовать инструкцию с официального сайта, но для продакшн сервера мне нужно было добавить проксирующий nginx. Такой инструкции на сайте нет, поэтому опишу процесс такого деплоймента.

В качестве руби-сервера я использовал mongrel_cluster, установить его в gentoo можно командой:
emerge mongrel_cluster
в debian нужно поставить пакет mongrel-cluster командой:
aptitude install mongrel-cluster

После чего создаем директорию для конфигурации сервера и делаем туда симлинк на конфиг из директории куда установлен redmine.
mkdir /etc/mongrel_cluster
ln -s /путь/до/вашего/сервера/redmine/config/mongrel_cluster.yml /etc/mongrel_cluster/redmine.yml

Дальше копируем init-файл из поставки mongrel_cluster в директорию к остальным init-скриптам и выставляем права:
cp /usr/lib/ruby/gems/1.8/gems/mongrel_cluster-1.0.5/resources/mongrel_cluster /etc/init.d
chmod +x /etc/init.d/mongrel_cluster
modified /etc/mongrel_cluster/redmine.yml

Потом остается только исправить /etc/mongrel_cluster/redmine.yml и подправить настройки nginx, для этого создадим субдомен и настроим проксирование. Вот, как пример, вдержка из моего nginx.conf:
upstream redmine {
        server 127.0.0.1:8000;
        server 127.0.0.1:8001;
    }

server {
    listen       80;
    server_name  .суб.домен;


    # / -> сначало ищем index.html потом передаем mongrel
    location ~ ^/$ {
        if (-f /index.html) {
                rewrite (.*) /index.html last;
        }
        proxy_pass http://redmine;
    }

    # Отгружаем статику самостоятельно
    location ~ .html {
           root /путь/до/вашего/сервера/redmine/public;
    }


   # Все остальное передаем mongrel
   location / {
        root /путь/до/вашего/сервера/redmine;



        proxy_pass  http://redmine;
        proxy_redirect     off;
        proxy_set_header   Host             $host;
        proxy_set_header   X-Real-IP        $remote_addr;
        proxy_set_header   X-Forwarded-For  $remote_addr;
   }
}

883 просмотра
2 комментария

Мнения ↓

Skorpion555
6 Февраля 13:11
Skorpion555
Несовсем понял назначение «организации работы в команде» — можешь поястить?
По описанию мне понравилась, вот только нету нужды пока-что, поэтому запомню на будующее.
Егор
19 Февраля 00:38
Егор aka Sontan
Когда команда распределенная, то весьма удобно иметь место в котором централизованно можно выдавать задания и вести обсуждения. Рэдмайн позволяет быстро просматривать последнюю активность, видеть общий прогресс по проекту и оперативно оценивать трудозатраты.
Только зарегистрированные пользователи могут оставлять комментарии.
Авторизуйтесь, пожалуйста, или зарегистрируйтесь, если не зарегистрированы.
© sontan.name, 2008–2010