脆弱性などに対応するため、同一系統のRedmineのバージョンアップ手順を示します。
環境¶
- Ubuntu 20.04 (AWS Lightsailで稼働中)
- 動かしていたRedmine:4.2.9
- Apache 2.4 / mod-passangerでRubyアプリを使用(Ruby 2.7系)
- MySQL 8.0.3
作業に備えての前提¶
- 本手順では「使用するDBの削除」を伴います。作業の際には慎重に行って下さい。
- Webサービスを止める/何も入っていないRedmineが途中でできるため、ユーザアクセスができない状況が発生します。
- また、筆者環境はfiles配下をクラウドストレージにマウントしています。手順は自身の環境に合わせてください。
さっくりとした手順¶
- スナップショットのバックアップ
- DBのバックアップ
- redmineのディレクトリを一度mvでリネームしてバックアップ。
- apache停止
- redmineのDBを消す。
- redmineのDBを新たに作る。(ユーザは全て権限があるので問題なし)
- apache再開
- ディレクトリを再作成し、新しい空のRedmineを作る。
- themesとpluginを再配置。filesのシンボリックリンクを貼り替える。
- themesとpluginを再配置した状態でDBマイグレーション。
- DBリストア。
データバックアップ¶
万一に備え、AWSからインスタンスのスナップショットを取得します。
mysqlによるDBバックアップ¶
mysqldump -h localhost -u redmine -p --no-tablespaces --single-transaction redmine > redmine_backup.$(date +%Y%m%d).sql
# DB名やDBユーザは自信の環境に合わせます
データ退避¶
cd /var/lib
# Redmineが格納されているディレクトリの親ディレクトリに移動します
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
sudo systemctl stop apache2.service
systemctl status apache2.service
DB削除¶
慎重に行って下さい。
sudo mysql -u root -p
show databases;
/* redmineのDBがあることを確認 */
drop database redmine;
show databases;
/* redmineのDBがないことを確認 */
CREATE DATABASE redmine character set utf8mb4;
show databases;
/* redmineのDBがあることを確認 */
exit
Redmine再インストール¶
ソースダウンロード¶
sudo mkdir /var/lib/redmine
sudo chown -R www-data:www-data /var/lib/redmine
sudo -u www-data svn co https://svn.redmine.org/redmine/branches/4.2-stable /var/lib/redmine
# 4.2系の最新安定版をダウンロードします
退避させたディレクトリからconfigファイルコピー¶
sudo cp -pi /var/lib/redmine_$(date +%Y%m%d)/config/database.yml /var/lib/redmine/config/database.yml
cat /var/lib/redmine/config/database.yml
#中身確認
sudo cp -pi /var/lib/redmine_$(date +%Y%m%d)/config/configuration.yml /var/lib/redmine/config/configuration.yml
cat /var/lib/redmine/config/configuration.yml
#中身確認
Redmineインストール¶
cd /var/lib/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
sudo systemctl start apache2.service
systemctl status apache2.service
再開後の仮パスワード作成¶
対象のRedmineにアクセスします。
IDとパスワードがadmin / admin に戻っている状態のため、仮パスワードを発行します。
退避したディレクトリからデータを再配置¶
cd /var/lib/redmine_$(date +%Y%m%d)/plugins
sudo cp -pir ./* /var/lib/redmine/plugins/
# プラグイン一式をコピーします
cd /var/lib/redmine_$(date +%Y%m%d)/public/themes
sudo cp -pir ./* /var/lib/redmine/public/themes/
# テーマ一式をコピーします
シンボリックリンク貼り替え¶
これは筆者の環境が
- logディレクトリとfilesディレクトリを別の場所にリンクを張っているための措置です。
- それ以外の場合は上述した
/var/lib/redmine_$(date +%Y%m%d)
からfilesやlogをコピーして下さい。
cd /var/lib/redmine
sudo rm -rf files
sudo rm -rf log
sudo ln -sf /mnt/wasabi/redmine/files files
# wasabiクラウドストレージを利用しています。
sudo chown -h www-data:www-data files
sudo ln -sf /var/log/redmine log
# ログは/var/log配下で一括管理しています。
sudo chown -h www-data:www-data log
データ再マイグレーション¶
プラグイン再マイグレーション¶
cd /var/lib/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
sudo systemctl restart apache2.service
systemctl status apache2.service
DBリストア¶
cd /hoge
# mysqldumpを行ったディレクトリ
mysql -h localhost -u redmine -p redmine < redmine_backup.$(date +%Y%m%d).sql
# パスワードはredmineインストール時に設定したDBユーザのものです
apacheリスタート¶
systemctl status apache2.service
sudo systemctl restart apache2.service
systemctl status apache2.service
動作確認¶
この状態でRedmineに管理者権限でログインします。手順通りなら
- テーマ
- 添付ファイル
- プラグイン
- チケット一覧
などが有効に動いています。