【1.3.0 → 4.1.0.stable】Bitnami Redmineのサーバー移行&バージョンアップデート!【引っ越し】

今回はこのような質問をいただきました。

Redmineのバージョンをアップグレードしたい!
使用しているRedmineが非常に古かった(1.3.0)ので2020年1月時点の最新版(4.1.0.stable)へアップグレードを行いました。
動作中のRedmineをアップデートするのは環境の都合で難しかったので、別のサーバーへ移行してアップグレードすることにしました。
そこで今回はこちらの質問について解説していきます!
移行データの準備
まずは旧サーバからデータを抽出します。
私が抽出したのは以下の2つです。(他にも必要なものがあるかも)
- データベースのダンプ
- アップロードされたファイル
データベースのダンプ
使用しているデータベースに接続してダンプを取得してください。
接続情報はインストールディレクトリ内のconfig/database.ymlに記述されています。
あとはmysqldumpコマンド等でダンプを取得してください。
アップロードされたファイル
アップロードされたファイルはインストールディレクトリ内のfilesに格納されています。
このディレクトリごとコピーしておきましょう。
新しいサーバーを立てる
今回はAWSのAMIを利用しました。
詳細はこちらの記事にまとめてあります。

すぐに構築できるのでおすすめです!
データベースの作成
ダンプファイルからデータベースを作成します。
ダンプファイルはコマンドで取り込むこともできるのですが、phpMyAdminが使えたので使うことにしました。
アクセスするまでの設定はこちらにまとめてあります。

大きく分けると以下のような手順で作成します。
- ダンプファイルから新たなデータベース(schema)を作成する
- rake db:migrateを実行する
ダンプファイルから新たなデータベースを作成する
デフォルトで生成されるデータベースがあるのですが、そちらは使用しません。
今回は新たにデータベースを作成します。
まずはrootアカウントでログインします。(パスワードに関しては先ほどの記事参照)
デフォルトのデータベースの変更、または削除
rootアカウントでログインすると「bitnami_redmine」というデータベースが存在するのがわかると思います。
こちらがデフォルトで生成されるデータベースです。
まずはこのデータベースの名前を変更しましょう。(同じ名前のデータベースを作成したいため)
画面左側のデータベース一覧から「bitnami_redmine」を選択し、「操作」タブから変更、または削除が行えます。

私は「bitnami_redmine_base」というデータベース名に変更しました。
データベースを新規作成
画面左側のデータベース一覧に表示されている「新規作成」からデータベースを作成します。
データベース名は「bitnami_redmine」で文字コードはそのままで大丈夫です。
データのインポート
次に「インポート」からインポートします。
作成したデータベースが選択されていることを確認してください。
「インポート」タブから操作を行います。

sql形式で抽出していればそのまま取り込めました。
これで今まで動いていたRedmineのデータベースをコピーすることができました。
rake db:migrateを実行する
次にデータベースの構造を最新のものに合わせる必要があります。
そこでActive Recordのマイグレーションを使用します。
まずはRedmineのインストールディレクトリ(/opt/bitnami/apps/redmine/htdocs/)へ移動します。
その後、マイグレーションコマンドを実行します。
$ cd /opt/bitnami/apps/redmine/htdocs/
$ bundle exec rake db:migrate RAILS_ENV=production
これでデータベースが最新の状態になります。
ファイルの配置
旧サーバからバックアップを取ったファイル(アップロードされたファイル)をコピーします。
インストールディレクトリのfiles(/opt/bitnami/apps/redmine/htdocs/files)内にコピー or 置換するだけです。
これですべてのデータが移行できました。
今までと同じようにRedmineが利用できるはずです。
あとがき
このあと簡単な動作確認程度しか行っていないので、もしかしたら手順が足りていないかもしれません。
カスタムクエリでエラーが出るような話を聞いたけど、そこは作り直せば良いかも。
移行まで行わない場合はバージョンが古すぎると簡単にはアップデートできないみたいですね(Rubyのバージョンが原因?)…定期的にアップデートしたほうが良いかも。
GUIで簡単にアップデートできたらいいのになぁ。