概要

Redmine 4.2 を動かしている Ubuntu 20.04 が2025年4月にEOLを迎えるため、Redmine 5.1 (Ubuntu 24.04)にリプレースをしました。

最初に

  • 「この手順で上手くいった」という筆者のメモ書きです。
  • Rubyのバージョン違いなどで動かないプラグインがいくつかあります。代替手段は別途考慮してください。

動かなかったプラグインとワークアラウンド

redmine_knowledgebase です。

5.xで動くフォークを試したものの、rubyの兼ね合いで動きませんでした。

そのため、記事をこのBookStackに移行させています。

環境

移行前環境

  • Ubuntu 20.04
  • Redmine 4.2
  • Ruby 2.7
  • Apache 2.4
  • MySQL 8.0.39

移行後環境

  • Ubuntu 24.04
  • Redmine 5.1
  • Ruby 3.2
  • Apache 2.4
  • MySQL 8.0.39

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

  1. 【移行先】空のRedmineを構築します。
  2. 【移行元】DBのダンプファイルを作成し、移行先に転送します。
  3. 【移行元】ファイル、メール設定ファイルなどを移行先に転送します。
  4. 【移行先】DBをリストアします。
  5. 【移行先】gemのアップデートを行います。
  6. 【移行先】移行元で稼働していたプラグインを入れていきます。
  7. 【移行先】動作確認を行います。
  8. 【移行元】移行元のredmineを停止します。
  9. 【移行先】必要に応じてDNSの切り替えと移行先のサイト設定を行います。

【移行先】Redmineを構築していきます。

  • こちらのページに従って、移行先のUbuntu 24.04サーバに、Redmineを構築していきます。
  • 構築したてのRedmineのアカウントとパスワードは admin /admin なので、仮パスワードを設定しておきます。

【移行元】DBのダンプファイルを作成して転送します。

  • ディレクトリ移動
cd /hoge && pwd

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

  • ダンプファイル取得
mysqldump -h localhost -u redmine -p --no-tablespaces --single-transaction redmine > redmine_backup.$(date +%Y%m%d).sql

ユーザー名(-uの後)とDB名(>の前)は自分の環境に合わせます。

  • ダンプファイル内容確認
view redmine_backup.$(date +%Y%m%d).sql

SQL文が平文で読めることを確認します。

作成後、任意の安全な方法で移行先に転送します。

【移行元】各種ファイルを転送します。

以下のディレクトリやを任意の安全な方法で転送します。

/path/to/redmine/root/directory配下(移行前のRedmineルートディレクトリ)の

  • files ディレクトリ(添付ファイル一式)
  • config/configuration.yml ファイル(メール設定がある場合)
  • public/thme/配下のテーマディレクトリ

これらのファイルは転送後、移行後のRedmineに対応するディレクトリ/ファイルに、そのまま上書きます。

【移行先】DBのリストアを行います。

  • ダンプファイル格納ディレクトリに移動
cd /hoge && pwd
  • ダンプファイル確認
ls -l redmine_backup.$(date +%Y%m%d).sql

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

  • DBリストア
mysql -h localhost -u redmine -p redmine < redmine_backup.$(date +%Y%m%d).sql

このときのパスワードは、「移行先のRedmineのDBユーザのパスワード」です。

  • Webサービス再起動
sudo systemctl restart apache2.service

Webサービス再起動後に

  1. 移行後のRedmineサイトが移行元と同じ見た目であること
  2. ログインできること
  3. プロジェクト一覧が見られること

までは確認しましたが、チケットを確認しようとすると

500 internal server error

が発生し、閲覧も編集もできない事態が発生しました。

【移行先】gemのアップデートを行います。

こちらの、チケット表示でinternal server errorを解消するため、

Has 500 Internal Server Error when upgrade 4.1.1 to 4.2.7, please help.
https://www.redmine.org/boards/2/topics/67435

この手順を追加します。

  • Redmineのルートディレクトリに移動
cd /path/to/redmine/root/directory && pwd

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

  • gem update
 sudo gem update

しばらく時間がかかります。

  • Webサービス再起動
sudo systemctl restart apache2.service

gemのアップデート後、今度はエラーが出ないことを確認です。

【移行先】各種プラグインを入れていきます。

移行前に動いていたプラグインを確認しながら、プラグインを入れていきます。

DBマイグレーション中にrake abortedが出た場合は、そのプラグインはRedmine/Rubyのバージョンが合わないので、動かないプラグインです。

【移行先】動作環境を行っていきます。

プラグインを入れながら、既存の機能(別のユーザーがログインできるか、アクセス権は合っているか、チケットの作成や更新ができるか)などを見ていきます。

【移行元】稼働していたRedmineサイトを停止します。

移行元のサーバにSSHログインし、

sudo a2dissite redmine.conf

redmine.confは自分の環境に合わせます。

で設定ファイルを無効化後、

  • Webサービス再起動
sudo systemctl restart apache2.service

として、稼働していた移行元のサイトにアクセスできないことを確認します。

【移行先】必要に応じてDNSの切り替えと移行先のサイト設定を行います。

これは、移行元でも同じURL(ドメイン)を使いたい場合の措置です。

  • DNS向き先変更

DNを利用して、ドメインを移行先のIPアドレスへと付け替えます。

各種DNSサービスによって異なるので、そちらを参照してください。

  • apacheバーチャルサイトの設定変更

/etc/apaches/site-available/redmine.conf (自分の環境に合わせます)

の以下の箇所を編集していきます。

<VirtualHost *:80>
servername hoge.example.com
# 今まで動いていたドメイン名

<VirtualHost *:443>
    ServerName hoge.example.com
# 今まで動いていたドメイン名
  • 構文確認
sudo apache2ctl configtest

Syntax OKを確認します。

  • Webサービス再起動
sudo systemctl restart apache2.service

切り替え後

  1. 前と同じドメインで、新しいRedmineサイトにログインできる
  2. (プラグインが廃止していなければ)同じ機能を使える

ことを確認できれば作業完了です。

移行後の処理

  1. DB移行時に利用したダンプファイルを削除します。
  2. 時期を見て旧サーバのデータの削除を行います。