- Redmine
- Latest releases¶
- Resources¶
- Установка Redmine¶
- Требования¶
- Операционная система¶
- Ruby интерпретатор¶
- База данных¶
- Не обязательные компоненты¶
- Версии Redmine¶
- Установка¶
- Шаг 1 — Redmine application¶
- Шаг 2 — Установка зависимостей¶
- не обязательные зависимости¶
- Дополнительные зависимости ( Gemfile.local )¶
- Создайте пустую базу данных и сопутствующего пользователя¶
- MySQL¶
- PostgreSQL¶
- Шаг 4 — Настройка подключения к базе данных¶
- Шаг 5 — Генерация ключа для безопасного хранения сессий¶
- Шаг 6 — Создание структуры базы данных¶
- Шаг 7 — Загрузка данных по умолчанию¶
- Шаг 8 — Настройка разрешений¶
- Шаг 9 — Тестирование установки¶
- Шаг 10 — Вход в приложение¶
- Настройка¶
- Настройка Email / SMTP-серверов¶
- Настройки SCM ¶
- Настройка хранилища вложений¶
- Настройка логирования¶
- Резервное копирование¶
- Замечания по установке на Windows¶
- Альтернатива ручной установке¶
- Установка автономного сервера Redmine в Windows
- Развертывание и сопровождение Redmine, правильный путь
- Отложите сборки типа «все-в-одном» и готовые к запуску виртуальные машины
- Используйте Git
- Пропатчите обновления версий
- Младшие и старшие обновления
- Бог ты мой, у меня конфликты!
- Что дальше?
Redmine
Latest releases¶
Resources¶
Установка Redmine¶
Данная документацию по установке Redmine 1.4.0 и выше. Вы все еще можете прочитать документ для 1.3.x здесь.
Требования¶
Операционная система¶
Redmine должен работать на Unix, Linux, Mac, Mac Server и Windows поскольку Ruby доступен для этих платформ. Конкретные инструкции доступны здесь.
Ruby интерпретатор¶
Соответствие версий Ruby и версий Redmine:
Версия Redmine | Поддерживаемая версия Ruby | Необходимая версия Rails |
---|---|---|
текущий trunk | ruby 1.9.3, 2.0.0, 2.1, 2.2 | Rails 4.2 |
3.0 | ruby 1.9.3, 2.0.0, 2.1, 2.2 | Rails 4.2 |
2.6 | ruby 1.8.7, 1.9.2, 1.9.3, 2.0.0, 2.1, 2.2, jruby-1.7.6 | Rails 3.2 |
База данных¶
- MySQL 5.0 и выше (рекомендуется)
- установите C биндинги для Ruby, которые существенно улучшают производительность. Вы можете получить их запустив gem install mysql2 .
- PostgresSQL 8.2 или выше
- убедитесь, что тип данных установлен в ISO (настройка по-умолчанию для Postgres). Вы можете установить ее используя: ALTER DATABASE «redmine_db» SET datestyle=»ISO,MDY»;
- некоторые ошибки в PostgreSQL 8.4.0 и 8.4.1 вызывают ошибки в Redmine(#4259, #4314), они исправлены в PostgreSQL 8.4.2
- Microsoft SQL Server *новое*
- поддержка запланирована для версии 2.3.0 (но она уже доступна в trunk для ранних версий)
- SQLite 3 (не для многопользовательского использования!)
Не обязательные компоненты¶
- Бинарники системы управления исходным кодом (SCM) (например svn), для просмотра хранилища(должны быть доступны в PATH). Прочитайтехранилища Redmine для получения информации о совместимости и требованиях.
- ImageMagick (чтобы включить возможность экспорта диаграммы Ганта в png изображение)
- Ruby OpenID Library (чтобы активировать поддержку OpenID). Требуется версия 2 или выше.
Версии Redmine¶
Большинству пользователей рекомендуется устанавливать последние версии релизов Redmine. В настроящее время новые версии Redmine выпускаются каждые 6 месяцев, эти релизы считаются стабильными и пригодными к использованияю. Не рекомендуется устанавливать Redmine из trunc репозитария, пока если вы глубоко не изучите Ruby On Rails и не сможете идти в ногу с изменениями — время от времени транк ломается.
Установка¶
Шаг 1 — Redmine application¶
Получите исходный код Redmine, загрузив архив релиза или получив код из хранилища. См. Download.
Шаг 2 — Установка зависимостей¶
Redmine использует Bundler для управления зависимостями gems пакетов.
Вам необходимо вначале установить Bundler:
Затем вы можете установить все зависимости требующиеся Redmine. Для этого распаковываете полученный на первом шаге архив релиза в какую-нибудь папку. Делаете эту папку рабочей и устанавливаете зависимости с помощью следующей команды:
не обязательные зависимости¶
RMagick (позволяет использовать ImageMagick для работы с изображениями в при экспорте в PDF и PNG)¶
Если ImageMagick не установлен в вашей системе, вы должны пропустить установку gem-пакета rmagick используя команду:
Если у вас проблемы с установкой rmagick на Windows, посмотрите это HowTo.
Неиспользуемые адаптеры баз данных¶
Вы также можете пропустить установку адаптеров баз данных, которые вы не используете.
Например, если вы используете MySQL, вы можете пропустить установку пакетов PostgreSQL, SQLite с помощью команды:
Дополнительные зависимости ( Gemfile.local )¶
Если вам нужно загрузить gem-пакеты, которые не требуются для ядра Redmine (например, Puma, FCGI), создайте файл Gemfile.local в корневом каталог Redmine. Данный файл будет автоматически загружаться при запуске bundle install .
Создайте пустую базу данных и сопутствующего пользователя¶
Здесь для примера база данных и пользователь базы будет назван redmine , но вы его можете заменить на что-нибудь ещё.
MySQL¶
Для версий MySQL до 5.0.2 вместо шага create user используйте:
PostgreSQL¶
Шаг 4 — Настройка подключения к базе данных¶
Скопируйте файл config/database.yml.example в config/database.yml и отредактируйте этот файл так, чтобы настроить параметры базы данных для «production» окружения(реальное окружения, используемое для работы).
Пример для базы данных MySQL, использующей ruby1.8 или jruby:
Пример для базы данных MySQL, использующей ruby1.9 (адаптер должен быть установлен в mysql2 ):
Если ваш сервер не работает со стандартным портом (3306), используйте эту конфигурацию:
Пример для PostgreSQL (порт по-умолчанию):
Шаг 5 — Генерация ключа для безопасного хранения сессий¶
Этот шаг генерирует случайный ключ, используемый Rails для шифрования хранилища, содержащего данные сессий, тем самым предотвращая их фальсификацию.
Генерация нового ключа сделает недействительными все существующие сеансы после перезагрузки.
Шаг 6 — Создание структуры базы данных¶
- Создайте структуру базы данных, выполнив следующую команду в корневом каталоге приложения:
Это создаст таблицы и учетную запись администратора с именем admin .
Если вы получите вот такую ошибку:
вам необходимо установить libopenssl-ruby1.8 , в Ubuntu выполните: apt-get install libopenssl-ruby1.8
Шаг 7 — Загрузка данных по умолчанию¶
Установите в базу данных конфигурацию по умолчанию, выполнив следующую команду:
Redmine запросит у вас язык набора данных, которые должны быть загружен. Вы можете также перед запуском команды установить в переменную окружения REDMINE_LANG значение, которое будет автоматически использовано в процессе загрузки.
Шаг 8 — Настройка разрешений¶
Пользователи Windows могут пропустить этот шаг.
Пользователь, который запускает Redmine должны иметь разрешение на запись в следующие подкаталоги:
- files (хранит вложения)
- log (логи приложения production.log )
- tmp and tmp/pdf (создайте, если их нет. Используется для создания PDF документов).
Предполагается, что вы запустили Redmine от пользователя redmine:
Шаг 9 — Тестирование установки¶
Протестируйте установку путем запуска веб-сервера WEBrick:
После старта WEBrick, откройте в браузере http://localhost:3000/. Теперь вы должны увидеть страницу приветствия приложения.
Примечание: Webrick не подходит для нормальной эксплуатации, пожалуйста, используйте WEBrick только для тестирования установки. Не рекомендуется использовать webrick ни для чего кроме разработки. Используйте одно из многих руководств в этой вики для настройки Passenger(также известного как mod_rails ), FCGI или Rack сервер (Unicorn, Thin, Puma, hellip;) для обслуживания вашего redmine.
Шаг 10 — Вход в приложение¶
Используйте учетную запись администратора по умолчанию, чтобы войти:
Теперь вы можете посетить раздел Administration (Администрирование) для изменения настроек приложения.
Настройка¶
Настройки Redmine определяются в файле config/configuration.yml .
Если вам необходимо изменить настройки по-умолчанию, просто скопируйте config/configuration.yml.example в config/configuration.yml и отредактируйте новый файл. Этот файл хорошо прокомментирован, так что смотрите его.
Эти настройки могут быть определены для каждого окружения Rails ( production / development / test ).
: Не забудьте перезапустить приложение после любого изменения.
Настройка Email / SMTP-серверов¶
Настройка email описана на отдельной странице.
Настройки SCM ¶
Переопределение имени команды:
Настройка хранилища вложений¶
Вы можете задать путь, где Redmine будет хранить вложения, который отличается от стандартного ‘files’, используя параметр attachments_storage_path .
Настройка логирования¶
По-умолчанию в Redmine уровень журналирования :info (информация). В зависимости от использования сайта, лог может сильно вырасти. Чтобы это избежать, необходимо его ротировать, либо с помощью системной утилиты logrotate , либо через файл сonfig/additional_environment.rb .
Для использования последнего, необходимо скопировать config/additional_environment.rb.example в config/additional_environment.rb и в нем добавить следующие строки. Отметим, что по умолчанию в файле установлен высокий уровень журналирования, следовательно, должен быть явно установлен в информацию.
Резервное копирование¶
Вот простой скрипт, который может быть использован для создания ежедневных резервных копий (предположим вы используете базу данных MySQL):
Замечания по установке на Windows¶
Существует готовый инсталлятор Ruby MRI, который можно получить http://rubyinstaller.org.
После его установки, выберите Start Command Prompt with Ruby в меню Пуск.
При выполнении команд, описанных в данном руководстве, вы должны установить переменной окружения RAILS_ENV с помощью отдельной команды.
Например команды со следующим синтаксисом:
должны быть превращены в 2-е последовательные команды:
Вам может понадобиться установить gem mysql с помощью команды:
В некоторых случаях необходимо скопировать libmysql.dll в вашу директорию ruby/bin. Не все libmysql.dll подходят, эта похоже работает http://instantrails.rubyforge.org/svn/trunk/InstantRails-win/InstantRails/mysql/bin/libmySQL.dll
Важное замечание для Win7 и последующих
В Win7 и последующих, запись localhost закомментирована в host-файле 1 , а IPV6 является записью по умолчанию 2 . Так как gem-пакет mysql2 не поддерживает адресацию IPV6 3 , то соединение с базой данных не может быть установлено и вы получаете ошибку » Can’t connect to MySQL server on ‘localhost’ (10061) «.
Вы можете проверить это пропинговав localhost , если будет пинговаться «::1:», значит используется адресация IPV6.
В файле database.yml заменить localhost на 127.0.0.1 .
Альтернатива ручной установке¶
Некоторые пользователи предпочитают пропустить ручную установку и использовать один из сторонних пакетов Redmine со страницы загрузки.
Установка автономного сервера Redmine в Windows
Эта инструкция является компиляцией материалов из различных источников.
Для установки не требуется специальных знаний, достаточно навыков работы с командной строкой Windows.
Надеюсь, эта инструкция будет полезна для тех, кто не особо вдается в тонкости администрирования, но хочет использовать Redmine, то есть для начальников отделов разработки или технической поддержки в небольших организациях.
Для простоты изложения будем считать что у нас диск C: доступен для записи и мы будем все устанавливать на него. Эксперименты производилась под Windows 7 SP1, инструкция проверялась на Windows XP SP3.
- Загружаем последнюю версию RubyInstaller со страницы http://rubyinstaller.org/downloads/, на момент написания статьи это Ruby 1.9.3-p194.
- Запускаем загруженный файл, выбираем установочный каталог C:\ruby, выбираем «Add Ruby executables to your PATH» и «Associate .rb and .rbw files with this Ruby installation», устанавливаем.
- С этой же страницы загружаем последнюю версию DevKit, на момент написания статьи это версия 4.5.2-20111229-1559, запускаем, каталог распаковки указываем C:\ruby\devkit.
- Запускаем окно командной строки, переходим в каталог c:\ruby\devkit
- Выполняем команду ruby dk.rb init
- Выполняем команду ruby dk.rb install
- Обновляем установленные пакеты командой gem install . Замечание: gem не работает с кириллическими именами каталогов под Windows XP, для устранения проблемы создайте каталог c:\userhome и в переменных среды установите HOME в c:\userhome
- Устанавливаем Bundler командой gem install bundler
- Загружаем последнюю версию Redmine со страницы http://rubyforge.org/frs/?group_id=1850 (на момент написания инструкции это версия 2.0.3)
- Извлекаем содержимое архива в каталог c:\redmine (для удобства просто распаковываем архив в корень C: и переименовываем каталог в redmine)
- В окне командной строки переходим в каталог c:\redmine
- Выполняем команду bundle install —without rmagick (rmagick не особо нужен, поэтому я не стал разбираться с возникшими проблемами, когда пытался его установить)
- Выполняем команду rake generate_secret_token
- В каталоге c:\redmine\config создаем файл database.yml со следующим содержимым:
- Выполняем команду rake db:upgrade RAILS_ENV=»production»
- Выполняем команду rake redmine:load_default_data RAILS_ENV=»production» , при запросе языка выбираем ru.
- Запускаем сервер в каталоге c:\redmine командой ruby script/rails s -e «production»
- В браузере переходим по адресу http://localhost:3000, после небольшой паузы должна появиться начальная страница Redmine. Входим под именем admin с паролем admin, переходим на страницу «My account», устанавливаем язык в Русский.
Поздравляю, вы запустили для своей организации автономный сервер Redmine без Apache, MySQL и других зависимостей. Для бэкапа достаточно отключить сервер redmine и сделать архив каталога c:\redmine.
Запуск сервера можно осуществлять bat-файлом с вышеуказанной командой из автозагрузки. Или можно воспользоваться информацией со страницы http://www.redmine.org/projects/redmine/wiki/HowTo_run_Redmine_as_a_Windows_service_(win32-service_+_taskill_approach) для запуска Redmine как сервиса.
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.
Развертывание и сопровождение Redmine, правильный путь
Дисклеймер: это не обычное руководство вида «Как установить Redmine». В нем я не буду погружаться в настройку базы данных или установку веб-сервера. Я также не буду рассказывать о настройке Redmine. Документация по Redmine в этом плане является достаточно полной. А для того, что не упоминается в официальной документации, есть общая процедура запуска Rails-приложений, которую можно легко найти в Интернете.
Вместо этого речь пойдет о сопровождении собственной, более или менее кастомизированной версии Redmine, которая может быть развернута с помощью одной команды оболочки, когда это необходимо.
Готовы? Тогда начнём.
Отложите сборки типа «все-в-одном» и готовые к запуску виртуальные машины
Установочные пакеты Bitnami или предварительно установленные виртуальные машины хороши для быстрой пробы Redmine, но не подходят для продуктивного использования. Почему? Потому что у них нет обновления. Ой, секундочку, у Bitnami есть. Правда, оно больше похоже на шутку. «Установите новую версию всего стека в другой каталог и переместите туда свои данные» — это не обновление. Ни слова о настройке, кастомизации и плагинах, которые, вероятно, также нужно сохранить и переустановить. Желаю удачи с таким «обновлением».
Релизы патчей Redmine выходят один или два раза в месяц. Исправления ошибок, связанных с безопасностью, выпускаются по мере необходимости — вы же не хотите пропустить их?
Факт, о котором люди часто забывают: время обновления не всегда зависит от вас. Конечно, можно отложить обновление до выхода следующей младшей версии Redmine — на несколько недель (наверное, даже и на более длительный срок). Но вы же не хотите при обнаружении новых проблем безопасности в Redmine или Rails сидеть с непатченной системой, пока не получится освободить время для установки и настройки нового стека Bitnami и вручную переместить все данные?
Установка — это только верхушка айсберга. Обновление — вот что придется делать регулярно.
Поиск простейшего способа установки определенно перестает быть актуальным, как только принимается решение использовать Redmine в производстве. Простое сопровождение и возможность модернизации — вот на чем нужно заострять внимание, чтобы минимизировать затраты и риски, связанные с использованием собственного Redmine.
Ниже я расскажу, как просто поддерживать Redmine в актуальном состоянии.
Используйте Git
Даже если вы намереваетесь запустить стоковый Redmine без каких-либо настроек или плагинов, всё равно используйте репозиторий Git для хранения копии Redmine. По крайней мере, наличие специализированного репозитория даст вам место хранения всего необходимого для развертывания (позже это будет рассмотрено подробнее). Рано или поздно вы (или ваши пользователи) захотите установить какой-нибудь плагин или настраиваемую тему, и для этого уже будет готова инфраструктура. Эксперименты с изменениями и тестирование плагинов и тем в локальных ветвях без нарушений в производственном коде становятся очень простыми при наличии собственного репозитория git c Redmine. Так что сейчас мы начнем с настройки репозитория.
Хотя основной репозиторий Redmine является экземпляром Subversion, на Github есть полуофициальный репозиторий, который поддерживается основным коммиттером и постоянно обновляется. Используйте его для настройки собственного репозитория:
Настройка локального клона Redmine
Измените номер версии 3.2-stable на номер последней стабильной версии Redmine.
Удаленный репозиторий git@yourserver.com должен быть частным, так как в нем будет храниться конфигурация развертывания (а возможно, и прочая информация, публиковать которую не стоит). Поскольку описанный ниже процесс развертывания будет извлекать из этого репозитория код, то репозиторий должен быть доступен во время развертываний, поэтому не размещайте его на настольных компьютерах. Идеальной будет ситуация, когда репозиторий также будет доступен с веб-сервера, на котором происходит развертывание. Но это при необходимости можно обойти.
Теперь у вас есть две локальные ветви:
redmine/3.2-stable , который отслеживает Redmine 3.2 без дополнительного функционала из репозитория github/redmine, представленная вышеуказанным удаленным восходящим репозиторием,
local/3.2-stable , куда будут помещены все настройки развертывания, кастомизации, темы и плагины.
Пропатчите обновления версий
Redmine использует следующую схему нумерации версий: xyz Major/Minor/Patch. Каждая младшая версия имеет собственную стабильную ветку, в которой исправления и патчи безопасности будут применяться с течением времени (до тех пор, пока эта версия все еще поддерживается). В нашем случае это ветвь 3.2-stable .
Время от времени эта восходящая ветвь будет получать некоторые новые коммиты. Ваша задача — включить новые коммиты в локальную ветвь local/3.2-stable для развертывания.
Хотя возможно и просто регулярно дополнять восходящую ветвь, я предлагаю использовать git rebase для поддержки собственного набора изменений поверх стокового кода Redmine:
Перебазирование локальных изменений поверх «голого» Redmine:
- Отменит все локальные изменения в local/3.2-stable .
- Обновит local/3.2-stable , чтобы отразить изменения, произошедшие в redmine/3.2-stable .
- Повторно применит все локальные изменения поверх «голой» версии.
Итогом будет являться чистая история, в которой ваши (локальные) коммиты всегда находятся поверх последних (восходящих) коммитов Redmine.
Младшие и старшие обновления
Теперь, когда есть новая стабильная ветвь (скажем, 3.3-stable ), делайте то же самое — перебазируйте ваши изменения поверх неё. Команды git будут немного отличаться из-за изменения восходящей ветви:
Перенос локальных изменений в новую стабильную ветвь
Эти команды вначале создают две новые локальные ветви для версии 3.3: одну из восходящей, а другую — из локальной ветви 3.2. Затем они перебазируют локальные изменения поверх redmine/3.3-stable . Локальные изменения здесь — это разность между redmine/3.2-stable и local/3.3-stable (что по-прежнему является redmine/3.2-stable ). Теперь local/3.3-stable содержит Redmine 3.3 плюс любые локальные изменения.
Для новой старшей версии требуется сделать то же самое.
Бог ты мой, у меня конфликты!
Рано или поздно (вероятно, уже во время первого обновления до новой младшей версии) вы столкнетесь с конфликтами слияния. Во время ребазирования Git применяет коммиты один за другим и останавливается каждый раз, когда применение коммита происходит с ошибками. В этом случае команда git status покажет проблемные файлы.
Проверьте, какой из коммитов дал сбой, узнайте, для чего он предназначался (хорошо помогут осмысленные сообщения коммитов), исправьте файлы, командой git add добавьте каждый исправленный файл, когда закончите. Если конфликты были устранены, можно просмотреть изменения, которые будут зафиксированы, с помощью команды git diff —cached . Как только вы сочтете результат удовлетворительным, можно продолжить ребазирование с помощью команды git rebase —continue .
Если вы неожиданно получили кучу конфликтов, а времени на решение этой проблемы нет, можно просто прервать текущее ребазирование с помощью параметра —abort , который восстановит рабочую копию до исходного состояния.
Что дальше?
Теперь, когда рабочий процесс Git настроен должным образом, пришло время автоматизировать развертывание, о котором я расскажу во второй части этого руководства (примечание: перевод второй части будет доступен в течение нескольких дней).