脆弱性などに対応するため、同一系統のRedmineのバージョンアップ手順、その5.1版での書き直しです。
環境
- Ubuntu 22.04
- 動かしていたRedmine:5.1.1
- Apache 2.4 / mod-passangerでRubyアプリを使用(Ruby 3.0系)
- MySQL 8.0.3
作業に備えての前提
- 本手順では「使用するDBの削除」を伴います。作業の際には慎重に行って下さい。
- Webサービスを止める/何も入っていないRedmineが途中でできるため、ユーザアクセスができない状況が発生します。
作業前のチェック
以下が必須です。
- [ ] 作業影響について、利害関係者に周知している。
- [ ] MySQLの管理者アカウントを所持している。
- [ ] サーバに十分な空き容量がある。
- [ ] 「一度DBを削除する」ことについて、作業者/確認者が重要度を理解している。
さっくりとはならない手順
- スナップショットのバックアップ (推奨)
- DBのバックアップ
- redmineのディレクトリを一度mvでリネームしてバックアップ。
- apache停止
- redmineのDBを消す。
- redmineのDBを新たに作る。(ユーザは全て権限があるので問題なし)
- apache再開
- ディレクトリを再作成し、マイナーバージョンが上がったRedmineを作る。
- themesとpluginを再配置。
- themesとpluginを再配置した状態でDBマイグレーション。
- DBリストア。
- 動作確認。
システム全体のバックアップ(推奨)
万一に備え、システム全体のバックアップを取ることを推奨します。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ファイルコピー
- 退避させたRedmine→ 新規に作成したRedmineにコンフィグをコピー
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
コピーされていることを確認します。
- 退避させたRedmine→ 新規に作成したRedmineにメール設定情報などをコピー
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 に戻っている状態のため、ログイン後、仮パスワードを発行します。
退避したディレクトリからデータを再配置
- 退避したRedmineのプラグインディレクトリに移動
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で返します。
- 退避したRedmineの添付ファイル格納ディレクトリに移動
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はバージョンさえ合っていれば
- DB
- 設定ファイル
- 添付ファイル
- プラグイン
- テーマ
- ログ
を移行することで、別のサーバへの引っ越しが可能になります。