BitnamiRedmineのバージョンアップ（Windows版）

# 概要
Bitnami Redmineの3.4.6-xから4.1.1-xへのバージョンアップ検証です。
主にDBデータのマイグレーションと、添付ファイルのコピー方法です。
必要か？と思われそうな手順も一つ一つ貼っていますが、ご容赦ください。

# 総論
Windowsサーバではファイルのコピペができたりするのと、Bitnami Redmineのインストーラや移行ツールが賢いこともあり、
基本的なコンポーネント構成さえ理解していれば、おおむね困ることなく作業することができました。

***
# 投稿の背景
* なんとなくイメージはついているが、実際やってみないと分からない
* 公式手順はLinux／Mac版がメイン
* なのでWindows版への手順読替
* および画面イメージ付与
* 構成について自分なりに理解できた点の情報整理

***
# 検証ポイント（私が調べたいこと）

* DBデータ周り
 * ユーザ情報は移行できるのか？
 * チケットデータは移行できるのか？
 * カスタムフィールドは移行できるのか？
* 物理ファイル周り
 * 添付ファイルは移行できるのか？

***
# 環境情報

* 1つサーバ上に2面の新旧Bitnami-Redmineを設置し、データ移行します。
* OSはWindowsServer2016です（実験ではAWSでEC2を使い捨てするのが便利でした）。
* Redmine
 * 旧バージョン:Bitnami-Redmine-3.4.6
 * 新バージョン:Bitnami-Redmine-4.1.1
![newFile.drawio.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1131613/c50b9f66-2fe8-3c3f-a128-01afa234be45.png)

***
# Redmineについて(URLリンク集)

### インストーラーのリンク
* Pure-Redmine
 * 日本語サイトは[こちら][Redmine]（今回は使いません）
* Bitnami-Redmine
 * 旧バージョンは[こちら][Bitname-Old-Version]
 * 新バージョンは[こちら][Bitname-New-Version]

[Redmine]:https://redmine.jp/install/
[Bitname-New-Version]:https://bitnami.com/stack/redmine/installer
[Bitname-Old-Version]:https://community.bitnami.com/t/redmine-3-4-installer/63877

### 参考にさせていただいたサイト
* [公式サイト][BitnamiUpgrade]
 * バージョンアップはアップグレードと表現するのですね。
* [Windows で Bitnami Redmine Stack を用い，1つの Apache サーバーで複数の Redmine を立ち上げる][サイト1]
 * Redmineの基本的な構成とマネジャーの使い方と基盤設定変更について理解することができました
* [メモ：Bitnami Redmine にプラグインをインストール][サイト2]
 * Linux版ですが、PATHの通し方のヒントを得ました
[BitnamiUpgrade]:https://docs.bitnami.com/ibm/apps/redmine/administration/upgrade/ 
[サイト1]:https://qiita.com/SKYS/items/8197ebc19d85954e7688
[サイト2]:https://qiita.com/wukann/items/4ee5381696920faff5b2


***
# 全体的な検証の流れ

* 旧バージョンのインストール
* 旧バージョンでの検証用準備
 * プロジェクト作成
 * ユーザ作成
 * カスタムフィールド追加
 * チケット作成
 * ファイル添付
* 新バージョンのインストール
* マイグレーション（基本的には公式サイトの手順通りに進めます）
 * データ移行
 * ファイル移行
* 新バージョンでの確認

***
# まずは、旧バージョンのインストール
* 言語選択（日本語）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1131613/4c68d1e4-6666-913a-0832-6d49bd6d42f5.png)

* コンポーネント選択（すべて）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1131613/bd74b8c7-5975-d15e-8e58-5e12d8cc8d0f.png)

* フォルダ選択（そのまま）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1131613/8f34ba49-2855-a700-7af7-8df642281213.png)

* 管理者ユーザ作成
ユーザ名をadminuser(Administratorは何かと衝突しそうなのでさけました)
パスワードは適当にadminadmin
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1131613/134b5544-22ae-0052-4a07-169b07ad9833.png)

* データベース保管言語（そのまま）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1131613/717daa4e-b893-0160-784d-0cbfbf5d38ac.png)

* メール設定（いらない）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1131613/58ef293d-fdf6-a169-eff6-871bdd523c66.png)

* クラウドについて（チェックはずしました）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1131613/4411462f-91a0-8ef8-3f9d-d222069d1e5f.png)

* あとはインストール完了を待つ

### 動作確認

* ちゃんと起動してる(あたりまえか)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1131613/f8c61996-e803-c1f9-ba7a-6dd50c1c6ce2.png)

* ログイン
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1131613/c2f6bbc8-f097-e4d2-57d2-e2bf0e87bacd.png)

* できた
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1131613/52f83f66-068f-16c5-2650-c4d7db8d1c01.png)

***
# 次に、旧バージョンでの検証用準備

* プロジェクト作成
 * Bitnamiバージョンアッププロジェクトとし、説明だけ記載
* ユーザ作成
 * tesuserのテスト太郎さんを作成
 * ついでに、testgroupに含めて作成したプロジェクトに紐づけ
* カスタムフィールド追加
 * ドロップダウンリスト
 *  ロングテキストエリア
* チケット作成
 * 入力項目には日本語を混ぜるようにしました
 * 作業時間も記録しました
* ファイル添付
 * pngを添付しました

### でき姿

* プロジェクト概要
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1131613/865db61e-ad3e-edb3-fc97-f76267f40f2c.png)

* チケットの中身
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1131613/3feb711b-7c3e-1978-c67a-b8063519e957.png)


### 添付ファイルの実体はここに
>今日は2/21なので2021年02のフォルダができてますね
>ファイル名やチケットの紐づけはデータ管理されているのでしょうが、そこまでは調査していません
>
>```
C:\Bitnami\redmine-3.4.6-5\apps\redmine\htdocs\files\2021\02
```
>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1131613/648dc819-b1e7-5252-f731-caf140932466.png)

***
# 新バージョンのインストール

### 前提
* 旧バージョンの停止はしていません。
起動したまま、お隣に新しくインストールします。

* ポート衝突
インストーラーが自動カウントアップでデフォルト＋１してくれます（賢い、、、）。
自分の好みのとこだけ手入力します。

* Thin_redmineについて
自動カウントアップでポート衝突を避けてくれますが、手動ではポート設定できないようです。
あとから直接3003,3004にHTTPでアクセスすると、実際に割り当てられていることが確認できます

### さて、またインストールします

* 言語選択
日本語にしました。画像省略

* コンポーネント選択（すべて）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1131613/94ed2cdd-fe64-ab5b-b60f-b67efb31e988.png)

* フォルダ選択（そのまま）
旧バージョンのお隣ですね。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1131613/11b931e2-1dae-c383-22ec-68145217b8c6.png)

* 管理者ユーザ作成
旧バージョンのインストール時とあえて同じ（挑戦）
ユーザ名をadminuser、パスワードは適当にadminadmin
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1131613/530f8419-4964-b86d-0209-1dc12b075ebe.png)

* Webサーバのポート番号（HTTP）
80だと衝突するので、自動カウントアップで81が表示されていますね
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1131613/91cc1b22-d907-3b30-cd4e-2e3554acdaf9.png)
好みじゃないので8080にしてみます
※ただのApacheなので後で変えられるはず
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1131613/aebdc55b-5671-5319-0344-c3af9a1e9b40.png)

* Webサーバのポート番号（HTTPS）
443だと衝突するので、自動カウントアップで444が表示されていますね
やな数字ですが使わないのでそのまま
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1131613/d3dd2f47-2ef4-7d3f-0629-92616c97882a.png)

* MySQLのポート番号
3306だと衝突するので、自動カウントアップで3307が表示されていますね
これも後でポート変更できるはずなのでそのまま
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1131613/9492ffa5-2771-cd4b-c67b-70be9b561b44.png)

* データベース保管言語（そのまま）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1131613/4a374746-8587-d072-b80a-4129d6eb5354.png)

* メール設定（いらない）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1131613/4cca36e9-3078-b901-55f3-d8efac450d52.png)

* クラウドについて（チェックはずしました）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1131613/4365d7a1-babd-f772-03c8-ae05f6b242ce.png)

* あとはインストール完了を待つ
※同居によりリソース食うので、EC2のt2.microでは30分以上時間がかかりました。

### 動作確認


* ちゃんと同居しています（上段が新、下段が旧）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1131613/d4b9dcfb-8daa-846b-b26a-50d4b3a24830.png)

*** 
# やっとマイグレーション

[公式サイト][BitnamiUpgrade]をWIndows版に読み替えていきます

## データベースバックアップの作成（旧Ver側）

mysqldumpのコマンドでデータベースのバックアップをSQL形式で作成します。
公式手順と異なるところを書いていきます。

* Pathが通っていないのでbinまで移動して実行します
 * C:\Bitnami\redmine-3.4.6-5\mysql\bin
* 旧バージョン接続ポートを指定します
 * -P 3306
* 吐き出し先を指定します
 * C:\temp
* パスワード
 * インストールの時に設定したRedmine管理者と同じ
 * adminadminですね。

* 実行コマンド
>```
>mysqldump -u root -p -P 3306 --databases bitnami_redmine --add-drop-database > C:\temp\bitnami_redmine.sql
>```

* 実行イメージ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1131613/1caf6e6a-051e-2bbc-22ef-ba4be15ccfc4.png)

* できました
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1131613/73c55b4c-f783-30a6-712f-df8d07ad66f6.png)

## ファイル圧縮（旧Ver側）

添付ファイルの実体と、プラグインを移行用にtarに固めろとのことです。
今回の移行は同一サーバ上なのでWindowsの特性を活かし、後で新サーバ側へコピペすればいいです。
スキップします。

ちなみに対象をWindows版に読み替えると以下
C:\Bitnami\redmine-3.4.6-5\apps\redmine\htdocs\files
C:\Bitnami\redmine-3.4.6-5\apps\redmine\htdocs\plugins

## Apacheの停止（新Ver側）

Webを受付ないようにしろということでしょうか？
公式手順とは異なりますが、Thin_redmineも停止させました。
Linux版ではスクリプトキックするようですが、Windowsではマネジャーがあるので利用します。

* 新Verのマネージャ起動
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1131613/b8b3e671-b172-2a6e-1704-efe6faeb465d.png)

* Stopボタンを押す
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1131613/4b2fde38-1a7b-8d1a-fd8a-3001b3813c8f.png)

* 停止を確認（Thin_redmineも停止させました）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1131613/fb317aee-5ea9-32a6-ed8b-3b81093fa201.png)

## ファイルのアップロード（新Ver側）

公式手順は新しいサーバへ移行していますが、今回は同一サーバ上で移行するので、この手順は不要です。スキップします。

## データベースのリストア作業（新Ver側）

mysqlコマンドでデータベースへSQLを流し込みます。
公式手順と異なるところを書いていきます。

* Pathが通っていないのでbinまで移動して実行します
 * C:\Bitnami\redmine-4.1.1-8\mysql\bin
* 新バージョン接続ポートを指定します
 * -P 3307
* 取得元を指定します
 * C:\temp
* パスワード
 * インストールの時に設定したRedmine管理者と同じ
 * adminadminですね。

* 実行コマンド
>```
>mysql -u root -p -P 3307 < C:\temp\bitnami_redmine.sql
>```

* 実行イメージ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1131613/ae9d2c4d-d949-8f9f-e8e1-e2193e593532.png)

* エラーなく終わりました
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1131613/c9680ae0-0006-b659-002a-cad7a8c33b4d.png)

※エラーがでる場合は、関係するものをSQLで削除して再実行しろとのことです。

## ファイルの移行（新Ver側）

公式手順は新しいサーバへ移行していますが、今回は同一サーバ上で移行するので、単純コピペします。
ですのでtarコマンドでの解凍は不要です。
ただし大量データの場合は容量不足にならないか、注意必要です。
また、Linux版ではその後に権限設定していますが、Windows版ではAdministratorで作業していれば関係ないものと思います。

* コピペ前（上段：旧、下段：新）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1131613/4548559c-e898-3f3f-64ae-76a9457e82b5.png)

* コピペ後（上段：旧、下段：新）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1131613/7a93e0c1-bc96-e8db-c768-bb2b7cfeb4b3.png)

## データベースの最新化（新Ver側）

内容が理解できませんでしたが、
rubyソースコードを実行できる状態にするようです。
Pathが通ってなかったりで一苦労しました。

* パスを通す(use_redmineバッチファイルをたたきます)
下記実行するとプロンプトがたちあがります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1131613/5a3b50e2-b96c-1450-bbd5-4ba8ad2c2524.png)

* コマンド
>```
>cd C:\Bitnami\redmine-4.1.1-8\apps\redmine\htdocs
>bundle exec rake db:migrate RAILS_ENV="production"
>```

* 実行イメージ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1131613/3270e577-8267-861a-dd6a-ae7006d19dd6.png)

* なんだかいろいろ出ましたが、終わりました
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1131613/85f4289d-95cd-ec58-1c0b-05538ebcd20c.png)

* 続きでキャッシュクリア
>```
>bundle exec rake tmp:cache:clear
>```

* 実行イメージ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1131613/ae340def-6ed1-3bbd-bc53-ec390f0c9013.png)

## プラグインコピー
ないので手順スキップします。

## 再起動
Thin_redmine, Thin_redmine2, Apacheの順で起動します。

* 起動前
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1131613/fd00c708-08a7-1f42-69c7-845b692c0c5c.png)

* 起動後
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1131613/b89f588a-fb21-be4f-6eb9-7b69b1ac700d.png)

* アクセス確認
URL忘れてしまったら下記からアクセスできます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1131613/298eeaa1-2e48-1d34-4af4-9e6490b4c0cc.png)

* ログインしプロジェクトの画面へ
成功！！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1131613/8cb7e59c-90eb-aaae-88bf-b4da9db3dc8b.png)

***
# 移行結果の確認

* プロジェクトや、ユーザ、作業時間などうまく移行できているようです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1131613/11859d67-3401-e189-a8c1-6db2ca78a79b.png)

* チケット内容、添付ファイル、カスタムフィールド（リスト）が移行できています
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1131613/e2df4848-3f84-3b5b-ba51-686abb80c0e8.png)

* カスタムフィールド（ロングテキスト）、注釈なども問題ありません
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1131613/4c64e593-c185-7cc7-58ef-b77acc63bae5.png)

***
# あとがき

今回無事移行することができ、作業した甲斐がありました。
後始末方法や、easy_ganttの導入など、追加で記載したいと思っています。
qiita初投稿で長々と書いてしまったので、今後は短くわかりやすくをこころがけたいと思います。

下記は後始末方法の概要

### 旧Versionのアンインストール

コンパネ上一つしかでてこないので、アンインストーラでしか削除できません。
旧版のディレクトリにある、削除バッチ（exeファイル）を実行しましょう
C:\Bitnami\redmine-3.4.6-5\uninstall.exe

### ポート設定の戻し方

削除が終われば、衝突はなくなります。
ユーザに意識させないため、Apache、MySQLのポートをデフォルトポートに戻しましょう。
マーネジャーを起動させ、Configから変更できます。
サービスの依存関係には注意しましょう。

以上です。