プロジェクト

全般

プロフィール

Ubuntu 20.04で動いていた Redmine 4.2のデータを Ubuntu 24.04上のRedmine 5.1に移行。

バージョン 1 (手動人形, 2024/10/11 16:13) → バージョン 2/2 (手動人形, 2024/10/11 16:14)

### 概要

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

### 最初に

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

### 環境

#### 移行前環境

- 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を構築していきます。

- {{article(76)}}
- 構築したてのRedmineのアカウントとパスワードは admin /admin なので、仮パスワードを設定しておきます。

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

- ディレクトリ移動

```bash
cd /hoge && pwd
```

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

- ダンプファイル取得

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

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

- ダンプファイル内容確認

```bash
view redmine_backup.$(date +%Y%m%d).sql
```

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

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

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

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

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

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

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

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

- ダンプファイル格納ディレクトリに移動

```bash
cd /hoge && pwd
```

- ダンプファイル確認

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

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

- DBリストア

```bash
mysql -h localhost -u redmine -p redmine < redmine_backup.$(date +%Y%m%d).sql
```

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

- Webサービス再起動

```bash
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](https://www.redmine.org/boards/2/topics/67435)

この手順を追加します。

- Redmineのルートディレクトリに移動

```bash
cd /path/to/redmine/root/directory && pwd
```

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

- gem update

```bash
sudo gem update
```

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

- Webサービス再起動

```bash
sudo systemctl restart apache2.service
```

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

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

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

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

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

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

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

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

```bash
sudo a2dissite redmine.conf
```

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

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

- Webサービス再起動

```bash
sudo systemctl restart apache2.service
```

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

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

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

- DNS向き先変更

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

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

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

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

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

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

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

- 構文確認

```bash
sudo apache2ctl configtest
```

`Syntax OK`を確認します。

- Webサービス再起動

```bash
sudo systemctl restart apache2.service
```

切り替え後

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

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

#### 移行後の処理

1. DB移行時に利用したダンプファイルを削除します。
2. 時期を見て旧サーバのデータの削除を行います。
クリップボードから画像を追加 (サイズの上限: 50 MB)