Что еще делать системному администратору 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 version | Supported Ruby versions | Rails version used |
---|---|---|
4.1.0 (upcoming) | Ruby 2.3, 2.4, 2.5, 2.6 | Rails 5.2 |
4.0.6 | Ruby 2.2 (2.2.2 and later), 2.3, 2.4, 2.5, 2.6 | Rails 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