Обновление Redmine на Debian 2020 год

Обновление Redmine на Debian 2020 год

Что еще делать системному администратору 4 января, как не обновлять сервера. Пока все спят, едят и отдыхают, мы произведем обновление Redmine.

На текущий момент (январь 2020 года) установлена следующая сборка:

Environment:
  Redmine version                3.4.7.stable
  Ruby version                   2.4.5-p335 (2018-10-18) [x86_64-linux]
  Rails version                  4.2.11
  Environment                    production
  Database adapter               Mysql2
SCM:
  Git                            2.11.0
  Filesystem                     
Redmine plugins:
  a_common_libs                  2.5.3
  custom_menu                    1.8.5
  extra_queries                  2.3.5
  global_roles                   2.2.4
  redmine_checklists             3.1.14
  redmine_issue_dynamic_edit     0.6.7
  redmine_issue_tabs             1.3.1
  redmine_issue_view_columns     1.0.1
  redmine_people                 1.4.0
  redmine_preview_docx           1.0.0
  redmine_share                  1.1.0
  redmine_thumbnail_pdf          1.0.4
  redmine_xlsx_format_issue_exporter 0.1.6
  rm_user_mentions               1.0.3
  rmplus_devtools                1.1.0
  under_construction             2.0.7
  unread_issues                  2.2.2
  usability                      2.3.8

Новые версии Redmine в наличии имеются такие:

Redmine versionSupported Ruby versionsRails version used
4.1.0 (upcoming)Ruby 2.3, 2.4, 2.5, 2.6Rails 5.2
4.0.6Ruby 2.2 (2.2.2 and later), 2.3, 2.4, 2.5, 2.6Rails 5.2

Так как 4.1.0 — upcoming и большинство плагинов, которые у нас установлены, не поддерживают данную версию, будем ставить 4.0.6. При этом необходимо произвести обновление Rails.

Disclamer: есть официальная инструкция по обновлению Redmine, можно смело пользоваться ею. Данную статью преимущественно я пишу для себя, просто чтобы было. Данная инструкция подойдет тем, кто устанавливал redmine также, как я.

Сначала не забываем делать backup. Сохраняем дамп базы данных и делаем архив всей папки redmine.

apt-get update
apt-get upgrade

Обновляем RVM (Ruby Version Manager):

cd /opt/redmine
source /etc/profile.d/rvm.sh
rvm get stable

Устанавливаем новую версию Ruby:

rvm install ruby-2.5.7

Далее определяем новую версию Ruby по умолчанию:

rvm use ruby 2.5.7 --default
rvm gemset create redmine
rvm use 2.5.7@redmine --default

Проверяем:

root@rm:/opt/redmine# ruby -v
ruby 2.6.5p114 (2019-10-01 revision 67812) [x86_64-linux]
root@rm:/opt/redmine# rvm gemset list

gemsets for ruby-2.6.5 (found in /usr/local/rvm/gems/ruby-2.6.5)
   (default)
   global
=> redmine

Все ок! Теперь заливаем новые файлы redmine:

cd /opt
mv ./redmine ./redmine_old
wget https://www.redmine.org/releases/redmine-4.0.6.tar.gz
tar -xzf ./redmine-4.0.6.tar.gz
mv ./redmine-4.0.6 ./redmine
rm ./redmine-4.0.6.tar.gz
cp /opt/redmine_old/config/configuration.yml /opt/redmine/config/
cp /opt/redmine_old/config/database.yml /opt/redmine/config/
rm /opt/redmine/files/delete.me
cp /opt/redmine_old/files/* /opt/redmine/files/

Если в старой версии редмайна была установлена тема оформления, то выполняем следующее (например, у меня была тема от RM+ под названием redmine_alex_skin):

cp -r /opt/redmine_old/public/themes/redmine_alex_skin /opt/redmine/public/themes

Выставляем права:

chmod 775 -R /opt/redmine
chown -R www-data:www-data /opt/redmine

Перезаходим в консоль! Устанавливаем новую версию Rails (смотрим нужную в файле Gemfile):

cd /opt/redmine
source /etc/profile.d/rvm.sh
gem install rails --version=5.2.4.1

Обновляем gem’ы:

gem install rubygems-update
update_rubygems
gem update --system

Выходим из консоли, закрываем соединение с сервером, перезаходим по новой, выполняем:

cd /opt/redmine
source /etc/profile.d/rvm.sh
bundle install --without development test

Генерируем новый token:

bundle exec rake generate_secret_token

В новой версии редмайна больше не поддерживается асинхронный метод отправки почты, поэтому правим конфигурацию в файле config/configuration.yml. Вместо «async_smtp» делаем просто «smtp». Например:

email_delivery:
      delivery_method: :smtp
      smtp_settings:
        address: smtp.mail.ru
        port: 465
        ssl: true
        enable_starttls_auto: true
        domain: somedomain.ru
        authentication: :login
        user_name: redmine@somedomain.ru
        password: jyg3jhygf6

Сохраняем, выходим, обновляем базу данных:

bundle exec rake db:migrate RAILS_ENV=production
bundle exec rake redmine:plugins:migrate RAILS_ENV=production

Теперь самое интересное. Копируем плагины из старой версии в новую. Затем пробуем обновить базу данных.

rm /opt/redmine/plugins/README
cp /opt/redmine_old/plugins/* /opt/redmine/plugins/
chmod 775 -R /opt/redmine/plugins
chown -R www-data:www-data /opt/redmine/plugins
bundle update
bundle install --without development test
bundle exec rake redmine:plugins:migrate RAILS_ENV=production

Если есть ошибки при обновлении БД, определяйте в тексте ошибки, какой плагин не нравится и пробуйте искать его более новую версию или убирать вообще (возможно он устарел и не будет работать в новой версии). Лично у меня еще нужно было со старого редмайна скопировать из корня папку rgloader для плагинов от RM+. В общем, тут начинается творческий процесс.

Настраиваем apache:

gem install passenger
passenger-install-apache2-module

После данной команды отобразится инструкция по настройке модулей web-сервера. У нас не новая установка, поэтому нам нужно только поправить версии ruby и passenger’а. Тут все просто.

Меняем конфиг в /etc/apache2/mods-available/passenger.conf и /etc/apache2/mods-available/passenger.load. Перезагружаем apache:

service apache2 restart

Завершаем установку passenger’а.

Чистим кеш:

cd /opt/redmine
bundle exec rake tmp:cache:clear RAILS_ENV=production