Redmine — заметка по обновлению

Redmine — открытое серверное веб-приложение для управления проектами и задачами.

Так вышло, что для реализации проекта «активного helpdesk с Telegram и 1С» под кодовым названием HIT,  нужна свежая версия Redmine. В организации где проект планируется применить текущая версия 3.0, а последняя версия 5.0 ну и проект для которого планируется использовать Redmine уже написан под версию 5.0 (возможно это было ошибкой и я немного поторопился так как под 5ю версию не так много плагинов, а бесплатных плагинов и того меньше). Ну раз нужна 5.0, то буду обновлять до 5.0 подумал я и начал изучать материал, материал2, материал3 и т.д.

В целом картина ясна, делаем бэкап БД, файлов и плагинов из старой версии, разворачиваем новую и заливаем туда эти данные. Далее выполняем миграцию и готово. Дел-то на пару часов, подумал я, но получилось не сразу. По этому я написал данную статью, как заметку для самого себя и в помощь для людей которые будут в дальнейшем разворачивать проект HIT и им понадобится выполнить ту же процедуру. Не считаю данную статью инструкцией, так как при таком переносе я в итоге перенес только данные и файлы, а все плагины просто удалил, что для некоторых пользователей Redmine — большая потеря.

Что имею: «Старый Redmine» установлен на Windows Server 2012 R2 пакетом от Bitnami. На этот же сервер решено ставить «Новый Redmine». Поскольку разрыв между версиями приличный я подумал, что хорошо бы сохранить в рабочем виде «Старый Redmine» и поменял порт с стандартного 80 на другой, что бы Apache новой установки не ругался на занятый порт. К тому же наша цель сделать все так, что бы пользователи не заметили переноса Redmine. И так, поехали…

  1. Останавливаем Apache.
  2. Делаем бэкап старой версии. Команда в консоли: mysqldump -u bitnami -p --databases bitnami_redmine --add-drop-database > bitnami_redmine.sql  Команда сработает если «Старый Redmine» был установлен из пакета Bitnami, если же нет, то логин юзера , пароль и название самой базы могут быть другими. Логин и пароль от БД можно узнать из файла конфигурации: «Расположение Вашей «Старой версии Redmine»»\apps\redmine\htdocs\config\database.yml».
    Определение переменных среды
    Если Вам повезло, то в вашей системе уже определены все переменные среды Path и команда выполнится без проблем. Если нет, то  вот какие  записи я добавил для себя:  ««Расположение Вашей «Старой версии Redmine»»\mariadb\bin;«Расположение Вашей «Старой версии Redmine»»\ruby\bin;«Расположение Вашей «Старой версии Redmine»»\git\bin» — важно что бы путь (выделен красным) был определен к папкам приложения которое у вас установлено для вашей версии Redmine.
    В результате выполнения команды, в директории из которой выполнялась команда появится файл «bitnami_redmine.sql» — это БД Вашего Redmine.
  3. Находим и копируем папки Files и Plugin. Эти папки лежат в корневой директории htdocs вашего приложения Redmine. У меня это «Расположение Вашей «Старой версии Redmine»»\apps\redmine\htdocs.
  4.  Установка Redmine из пакета Bitnami — самое простое. Запускаем установщик, далее, далее готово. Попутно выбираем директорию установки, вводим логин и пароль локального админа вашего нового Redmine и настройки почту если нужно. После просто проверяем что все работает открыв в браузере сайт, по умолчанию: http://localhost/redmine/.
  5. Запись базы данных в новую версию Redmine. Команда: mysql -u bitnami -p bitnami_redmine < bitnami_redmine.sql
    которая выполняется в консоли из папки где лежит созданный на шаге №1 — файл бэкапа БД «bitnami_redmine.sql». Пароль все в том же файле конфигураций БД, но уже в директории новой установки Redmine — «Расположение Вашей «Новой версии Redmine»»\apps\redmine\htdocs\config\database.yml«.
  6. Переносим папки с файлами — Files и плагинами — Plugins (Если уверены, что все плагины поддерживаются Вашей новой версией Redmine) в директорию «нового Redmine» — «Расположение Вашей «Новой версии Redmine»»\apps\redmine\htdocs.  
  7. Выполним обновление базы данных под новую версию Redmine — командой: rake db:migrate RAILS_ENV=production но в моем случае пришлось запускать команду:
    "C:\Bitnami\redmine-5.0.0-1\ruby\bin\bundle" exec rake db:migrate RAILS_ENV=production
    Данную команду обязательно выполнять директории «нового Redmine» — «Расположение Вашей «Новой версии Redmine»»\apps\redmine\htdocs. При первом запуске может потребоваться выполнить: bundle install , в моем случае это:
    "C:\Bitnami\redmine-5.0.0-1\ruby\bin\bundle" install  и снова "C:\Bitnami\redmine-5.0.0-1\ruby\bin\bundle" exec rake db:migrate RAILS_ENV=production
    Беды с БД и ошибки обновления БЛ
    При выполнении миграции я постоянно втыкался в разные проблемы, то плагин не совместим и ошибка с этим плагином, но в итоге я их все просто удалил. Иногда в БД уже были какие то нужные индексы или таблицы, или ключи и миграция просто прерывалась. На каждую такую ошибку пришлось корректировать БД. В моем случае был установлен phpMyAdmin и я просто запускал Apache, заходил в phpMyAdmin и если ошибка говорит что дубль таблицы, я проверял что данная таблица пустая и удалял ее, далее запускал миграцию снова. На скрине Выше видно, что Индекс «index_issues_on_parent_id» в таблице issues — уже существует. По этому я просто его удалил, остановил Apache и запустил обновление командой: "C:\Bitnami\redmine-5.0.0-1\ruby\bin\bundle" exec rake db:migrate RAILS_ENV=production снова. И так пока все миграция не выполнится без ошибок.
  8. Обновление БД для плагинов все в той же папке, командой rake redmine:plugins:migrate RAILS_ENV=production в моем случае — "C:\Bitnami\redmine-5.0.0-1\ruby\bin\bundle" exec rake redmine:plugins RAILS_ENV=production
  9. Чистим кэш командой: rake tmp:cache:clear для меня: "C:\Bitnami\redmine-5.0.0-1\ruby\bin\bundle" exec rake tmp:clear
  10. Запускаем Apache и проверяем наш Redmine. Если все получилось, Вы сможете зайти в него под локальным пользователем.

Настройка почты

Наверняка в «Старом Redmine» использовалась отправка почты. За настройку почты отвечает файл: «Расположение Вашей «Новой версии Redmine»»\apps\redmine\htdocs\config\configuration.yml«. У файла строгий синтаксис и он чувствителен к пробелам и табуляциям. Можно попробовать скопировать конфигурацию почты из «Старого Redmine», но у меня такой трюк не сработал. Для меня актуальна отправка почты без авторизации и без шифрования. Вот рабочий для меня конфиг:

Конфигурация почты без авторизации и шифрования

email_delivery:
delivery_method: :smtp
smtp_settings:
address: АдресВашегоСервера
port: 25
domain: ВашДомен
authentication: :none
openssl_verify_mode: ‘none’

 

 

Write a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Close