Redmine 5.1.x→5.1.yのバージョンアップ(同一サーバでの作業)

脆弱性などに対応するため、同一系統のRedmineのバージョンアップ手順を示します。

環境

作業に備えての前提

作業前のチェック

以下が必須です。

さっくりとはならない手順

  1. スナップショットのバックアップ (推奨)
  2. DBのバックアップ
  3. redmineのディレクトリを一度mvでリネームしてバックアップ。
  4. apache停止
  5. redmineのDBを消す。
  6. redmineのDBを新たに作る。(ユーザは全て権限があるので問題なし)
  7. apache再開
  8. ディレクトリを再作成し、マイナーバージョンが上がったRedmineを作る。
  9. themesとpluginを再配置。
  10. themesとpluginを再配置した状態でDBマイグレーション。
  11. DBリストア。
  12. 動作確認。

システム全体のバックアップ(推奨)

万一に備え、システム全体のバックアップを取ることを推奨します。AWSや仮想サーバ等の場合は、インスタンスをまるごとバックアップしておくと良いでしょう。

mysqldumpによるDBバックアップ

cd /hoge

任意のバックアップディレクトリを指定します。

mysqldump -h localhost -u redmine -p --no-tablespaces --single-transaction redmine > redmine_backup.$(date +%Y%m%d).sql

DB名やDBユーザは自分の環境に合わせます。

データ退避

cd /home/www-data && pwd

Redmineが格納されているディレクトリの親ディレクトリに移動します。筆者環境は/home/www-dataなので、自分の環境に合わせます。

ls -ld redmine

退避対象のディレクトリがあることを確認します。

sudo mv redmine redmine_$(date +%Y%m%d)
ls -ld redmine_$(date +%Y%m%d)

ファイルがあることを確認します。

apache停止

ここでWebサービスを停止するのは、DBを削除するためです。

systemctl status apache2.service

active(running)を確認します

sudo systemctl stop apache2.service
systemctl status apache2.service

inactive(dead)を確認します

DB削除と再作成

この作業は慎重に行って下さい。

sudo mysql -u root -p
SHOW DATABASES;

redmineのDBがあることを確認します。

DROP DATABASE redmine;

DB名は再確認してください。

SHOW DATABASES;

RedmineのDBがないことを確認します。

CREATE DATABASE redmine character set utf8mb4;

同じDBを作り直します。

SHOW DATABASES;

作成したDBがあることを確認します。

EXIT

ソースダウンロード

sudo mkdir /home/www-data/redmine

自分の環境に合わせます。

sudo chown -R www-data:www-data /home/www-data/redmine
sudo -u www-data svn co https://svn.redmine.org/redmine/branches/5.1-stable /home/www-data/redmine

5.1系の最新安定版をダウンロードします

退避させたディレクトリからconfigファイルコピー

sudo cp -pi /home/www-data/redmine_$(date +%Y%m%d)/config/database.yml /home/www-data/redmine/config/database.yml

コピー元・コピー先は自分の環境に合わせます。

cat /home/www-data/redmine/config/database.yml

コピーされていることを確認します。

sudo cp -pi /home/www-data/redmine_$(date +%Y%m%d)/config/configuration.yml /home/www-data/redmine/config/configuration.yml

コピー元・コピー先は自分の環境に合わせます。

cat /home/www-data/redmine/config/configuration.yml

Redmineインストール

cd /home/www-data/redmine
sudo -u www-data bundle install --without development test --path vendor/bundle
sudo -u www-data bundle exec rake generate_secret_token
sudo -u www-data RAILS_ENV=production bundle exec rake db:migrate
sudo -u www-data RAILS_ENV=production REDMINE_LANG=ja bundle exec rake redmine:load_default_data

apache再開

systemctl status apache2.service

inactive(dead)を確認します

sudo systemctl start apache2.service
systemctl status apache2.service

active(runnning)を確認します

再作成後の仮パスワード作成

対象のRedmineにアクセスします。

IDとパスワードがadmin / admin に戻っている状態のため、ログイン後、仮パスワードを発行します。

退避したディレクトリからデータを再配置

cd /home/www-data/redmine_$(date +%Y%m%d)/plugins
sudo cp -pir ./* /home/www-data/redmine/plugins/
cd /home/www-data/redmine_$(date +%Y%m%d)/public/themes
sudo cp -pir ./* /home/www-data/redmine/public/themes/

いくつかのファイルを上書きするか求められるので、yで返します。

cd /home/www-data/redmine_$(date +%Y%m%d)/files
sudo cp -pir ./* /home/www-data/redmine/files/
cd /home/www-data/redmine_$(date +%Y%m%d)/log
sudo cp -pir ./* /home/www-data/redmine/log/

プラグイン再マイグレーション

cd /home/www-data/redmine
sudo -u www-data bundle install
sudo -u www-data bundle exec rake redmine:plugins:migrate RAILS_ENV=production

apacheリスタート

systemctl status apache2.service

active(running)を確認します

sudo systemctl restart apache2.service
systemctl status apache2.service

active(runnning)を確認します

DBリストア

cd /hoge && pwd
mysql -h localhost -u redmine -p redmine < redmine_backup.$(date +%Y%m%d).sql

パスワードはredmineインストール時に設定したDBユーザのパスワードです。

apacheリスタート

systemctl status apache2.service

active(running)を確認します

sudo systemctl restart apache2.service
systemctl status apache2.service

active(runnning)を確認します

動作確認

この状態でRedmineに管理者権限でログインします。手順通りなら

などが有効に動いています。

また、管理>情報へと進み、バージョンが上がっていることを確認します。

作業後-退避前のディレクトリ一式を削除-

cd /home/www-data

自分の環境に合わせます。

ls -ld redmine_$(date +%Y%m%d)

ディレクトリがあることを確認します。

sudo rm -rf redmine_$(date +%Y%m%d)
ls -ld redmine_$(date +%Y%m%d)

ディレクトリが無いことを確認します。

作業後-MySQLのダンプファイルを削除-

cd /hoge && pwd
ls -l redmine_backup.$(date +%Y%m%d).sql

ファイルがあることを確認します。

rm redmine_backup.$(date +%Y%m%d).sql
ls -l redmine_backup.$(date +%Y%m%d).sql

ファイルが無いことを確認します。

備考

Redmineはバージョンさえ合っていれば

を移行することで、別のサーバへの引っ越しが可能になります。


リビジョン #1
作成: 1 5月 2024 13:46:54 (manualmaton)
更新: 1 5月 2024 13:48:46 (manualmaton)