Windowsで、Redmine2.3 を 4.1 にバージョンアップしてみた

目次


概要

Windows Server 2008 R2Redmine 2.3 を使用していましたが、Windows Server 2008 の サポート終了に伴い、Windows Server 2012 R2 でRedmine 4.1 に移行しましたので、その時の手順をメモしておきます。

作業の概要は以下の通りです。

補足

  • プラグインは使用していません。
  • OSなど、Redmine以外の作業については記載していません。


旧サーバ:Redmine 2.3 を確認する

dos>cd /d C:\BitNami\redmine-2.3.0-0\apps\redmine\htdocs
dos>ruby script\about

Environment:
  Redmine version                          2.3.0.stable
  Ruby version                             1.9.3 (i386-mingw32)
  Rails version                            3.2.13
  Environment                              production
  Database adapter                         Mysql2
Redmine plugins:
  no plugin installed


旧サーバ:Redmine 2.3 のデータをエクスポートする

データベース設定を確認する

  • メモ帳等で以下のファイルを開き、「production:」の値を確認する。
    C:\BitNami\redmine-2.3.0-0\apps\redmine\htdocs\config\database.yml
production:          ←★
  adapter: mysql2
  database: bitnami_redmine  ←★
  host: localhost
  port: 3306
  username: bitnami      ←★
  password: "8888888888"    ←★
  encoding: utf8

使用しているポート番号を確認する

dos>netstat -a -b

アクティブな接続

  プロトコル  ローカル アドレス    外部アドレス    状態
  TCP         0.0.0.0:80           xxxxxxxx:0      LISTENING
 [httpd.exe]

サービスを停止する

  • Redmine 2.3用の「Application Manager」を起動し、「Manage Servers」タブを開く。
    C:\BitNami\redmine-2.3.0-0\manager-windows.exe

  • MySQL Database」以外のサービスをすべて止める。
    とりあえず、上から順に不要なものを止めれば大丈夫っぽいです。
    f:id:HopStepLab:20200104013321p:plain

データベースをバックアップ

Redmineで使用している MySQLのデータベースをバックアップします。

  • 次のバッチを実行し、Redmine用のコマンドプロンプトを開く。
    C:\BitNami\redmine-2.3.0-0\use_redmine.bat

  • エクスポートするファイル一式を格納するフォルダを作成する。
    フォルダ名は例です。

dos>mkdir C:\Backup2008-230\
  • 以下のコマンドでエクスポートを実行します。
    • 「データベース設定を確認する」の所で確認した値を使用します。
    • 出力先のパス・ファイル名は任意です。ここでは例として db.dmp の名前で出力しています。
    • passwordの値は、""で括っても、値だけでもどちらでも大丈夫なようです。
    • 出力先のディレクトリは、あらかじめ作成しておく必要があります。
    • エラーが出なければ、エクスポートできてると思われます。
dos>cd /d C:\BitNami\redmine-2.3.0-0\mysql\bin\
dos>mysqldump.exe --user=bitnami --password=8888888888 bitnami_redmine > C:\Backup2008-230\db.dmp
  • エクスポートしたファイルを確認する。
    • 最後に、以下が出力されていればエクスポートできていると思われます。
      -- Dump completed on 2020-01-02 0:00:46
dos>tail C:\Backup2008-230\db.dmp

ファイルのバックアップ

添付ファイルなどのファイルをバックアップします。

  • エクスプローラでコピーしてもよいが、ここではコピー結果をログに残すため次のコマンドでコピーする。
  • コピー先、ログの出力先は、上記で作成したフォルダに格納します。
  • ログの出力は任意です。
  • 実行後、ログファイルを開き、失敗していないことを確認する。
dos>robocopy "C:\BitNami\redmine-2.3.0-0\apps\redmine\htdocs\files" "C:\Backup2008-230\files" /E /R:3 /LOG:C:\Backup2008-230\CopyLog.txt

Redmine 4.1 ダウンロード

ダウンロード

ファイルのチェック

  • 同「Checksum」をクリックし、ダウンロードしたファイルのハッシュ値が一致することを確認する。
    CertUtil -hashfile <ダウンロードしたファイル名>
dos>CertUtil.exe -hashfile bitnami-redmine-4.1.0-0-windows-x64-installer.exe
SHA1 ハッシュ (対象 bitnami-redmine-4.1.0-0-windows-x64-installer.exe):
955672d5850fc456519f79ee18a797333b3112a2
CertUtil: -hashfile コマンドは正常に完了しました。

古いバージョンのダウンロード

新サーバ:Redmine 4.1 をインストール

インストール

  1. ダウンロードしたインストーラーを実行する
    bitnami-redmine-4.1.0-0-windows-x64-installer.exe

  2. 「Language Select」画面
    f:id:HopStepLab:20200104013327p:plain
    [日本語]を選択する

  3. f:id:HopStepLab:20200104013330p:plain

  4. コンポーネントを選択」画面
    f:id:HopStepLab:20200104013334p:plain

  5. 「Installation folder」画面
    f:id:HopStepLab:20200104013338p:plain
    C:\Bitnami\redmine-4.1.0-0

  6. 「管理者アカウントの作成」画面
    f:id:HopStepLab:20200104013341p:plain

    項目 初期値 設定値 備考
    表示用氏名 User Name admin 日本語は使用しないほう良さそう。
    Internal Error が発生しました。
    Emailアドレス mail@example.com admin@example.com
    ログイン名 user admin
    パスワード <未設定> 任意 8文字以上
  7. 「Webサーバのポート番号」画面
    f:id:HopStepLab:20200305220844p:plain
    標準のポート 80 が使用中の場合この画面が教示される。

  8. 「データベースに保存する際の既定の言語」画面
    f:id:HopStepLab:20200104013345p:plain
    “日本語”を選択

  9. f:id:HopStepLab:20200104013349p:plain

  10. f:id:HopStepLab:20200104013353p:plain
    インターネットに接続できない環境で使用しているので ON → OFF


  11. f:id:HopStepLab:20200104013357p:plain

  12. f:id:HopStepLab:20200104013400p:plain

  13. f:id:HopStepLab:20200104013404p:plain
    「終了」

  14. Awesome! Redmine is now Installed!」画面が表示される
    http://127.0.0.1/ f:id:HopStepLab:20200104013408p:plain

確認

  1. Awesome! Redmine is now Installed!」画面で「Access Redmine」クリック、もしくは次のURLを開き、Redmineのトップ画面が開くことを確認する。
    http://127.0.0.1/redmine/
    f:id:HopStepLab:20200104013412p:plain

新サーバ:Redmine 2.3 のデータをインポートし、マイグレーションする

Redmineの環境を確認する

dos>cd /d C:\Bitnami\redmine-4.1.0-0\apps\redmine\htdocs
dos>ruby bin\about

Environment:
  Redmine version                4.1.0.stable
  Ruby version                   2.5.7-p206 (2019-10-01) [x64-mingw32]
  Rails version                  5.2.4.1
  Environment                    production
  Database adapter               Mysql2
  Mailer queue                   ActiveJob::QueueAdapters::AsyncAdapter
  Mailer delivery                smtp
SCM:
  Git                            2.19.1
  Filesystem
Redmine plugins:
  no plugin installed

データベース設定を確認する

  • メモ帳等で以下のファイルを開き、「production:」の値を確認する。
    C:\Bitnami\redmine-4.1.0-0\apps\redmine\htdocs\config\database.yml
production:          ←★
  adapter: mysql2
  database: bitnami_redmine  ←★
  host: 127.0.0.1
  username: bitnami      ←★
  password: 9999999999     ←★
  encoding: utf8mb4
  port: 3306

サービスを停止する

  • Redmine 4.1用の「Application Manager」を起動し、「Manage Servers」タブを開く。
    C:\Bitnami\redmine-4.1.0-0\manager-windows.exe

  • MySQL Database」以外のサービスをすべて止める。
    とりあえず、上から順に不要なものを止めれば大丈夫っぽいです。
    f:id:HopStepLab:20200104013416p:plain

エクスポートファイルを取得

  • 旧サーバで出力したファイル一式を持ってきます。
    C:\Backup2008-230\

データベースをリストア

Redmineで使用している MySQLに、旧サーバでエクスポートした Redmine 2.3 のデータベースをリストアします。

dos>cd /d C:\Bitnami\redmine-4.1.0-0\mysql\bin
dos>mysql.exe --user=bitnami --password=9999999999 bitnami_redmine < C:\Backup2008-230\db.dmp
  • db.dmp は、エクスポートしたときのファイル名です。
  • passwordの値は、上記「データベース設定を確認する」で確認した値です。
  • mysql: [Warning] Using a password on the command line interface can be insecure.」が出力されました。

データベースマイグレーション

dos>cd /d C:\Bitnami\redmine-4.1.0-0\apps\redmine\htdocs
dos>bundle exec rake db:migrate RAILS_ENV="production"
  • 以下の感じでエラーが出なければよしとする。
== 20151025072118 CreateCustomFieldEnumerations: migrating ====================
-- create_table(:custom_field_enumerations, {:options=>"ENGINE=InnoDB", :id=>:integer})
   -> 0.0107s
== 20151025072118 CreateCustomFieldEnumerations: migrated (0.0124s) ===========

:
:

== 20190620135549 ChangeRolesNameLimit: migrating =============================
-- change_column(:roles, :name, :string, {:limit=>255, :default=>""})
   -> 0.0551s
== 20190620135549 ChangeRolesNameLimit: migrated (0.0567s) ====================
  • 以下の感じのエラーが出たら、対象のテーブルを削除することで解消するようです。
Mysql2::Error: Table 'queries_roles' already exists: CREATE TABLE `queries_roles` (`query_id` int NOT NULL, `role_id` int NOT NULL) ENGINE=InnoDB

Mysql2::Error: Table 'custom_fields_roles' already exists: CREATE TABLE `custom_fields_roles` (`custom_field_id` int NOT NULL, `role_id` int NOT NULL) ENGINE=InnoDB

Mysql2::Error: Table 'email_addresses' already exists: CREATE TABLE `email_addresses` (`id` int NOT NULL AUTO_INCREMENTPRIMARY KEY, `user_id` int NOT NULL, `address` varchar(255) NOT NULL, `is_default` tinyint(1) DEFAULT FALSE NOT NULL, `notify` tinyint(1) DEFAULT TRUE NOT NULL, `created_on` datetime NOT NULL, `updated_on` datetime NOT NULL) ENGINE=InnoDB

Mysql2::Error: Table 'roles_managed_roles' already exists: CREATE TABLE `roles_managed_roles` (`role_id` int NOT NULL, `managed_role_id` int NOT NULL) ENGINE=InnoDB

Mysql2::Error: Table 'imports' already exists: CREATE TABLE `imports` (`id` int NOT NULL AUTO_INCREMENT PRIMARY KEY, `type` varchar(255), `user_id` int NOT NULL, `filename` varchar(255), `settings` text, `total_items` int, `finished` tinyint(1) DEFAULT FALSE NOT NULL, `created_at` datetime NOT NULL, `updated_at` datetime NOT NULL) ENGINE=InnoDB

Mysql2::Error: Table 'import_items' already exists: CREATE TABLE `import_items` (`id` int NOT NULL AUTO_INCREMENT PRIMARY KEY, `import_id` int NOT NULL, `position` int NOT NULL, `obj_id` int, `message` text) ENGINE=InnoDB

Mysql2::Error: Table 'custom_field_enumerations' already exists: CREATE TABLE `custom_field_enumerations` (`id` int NOTNULL AUTO_INCREMENT PRIMARY KEY, `custom_field_id` int NOT NULL, `name` varchar(255) NOT NULL, `active` tinyint(1) DEFAULT TRUE NOT NULL, `position` int DEFAULT 1 NOT NULL) ENGINE=InnoDB
  • テーブルの削除手順
    • user、password、DB名は、上記で確認した値。
dos>cd /d C:\Bitnami\redmine-4.1.0-0\mysql\bin
dos>mysql --user=bitnami --password=9999999999 bitnami_redmine

mysql> drop table queries_roles;    ←エラーの出たテーブルを指定する
Query OK, 0 rows affected (0.05 sec)

mysql> exit
Bye

もういちど、「データベースマイグレーション」を実施する。

キャッシュのクリア

dos>cd /d C:\Bitnami\redmine-4.1.0-0\apps\redmine\htdocs
dos>bundle exec rake tmp:cache:clear
※エラーメッセージが出ずに終われば、正常終了なんだと思います。
dos>bundle exec rake tmp:sessions:clear        ←こちらはエラーになった。
rake aborted!
Don't know how to build task 'tmp:sessions:clear' (See the list of available tasks with `rake --tasks`)
Did you mean?  tmp:sockets:clear
C:/Bitnami/redmine-4.1.0-0/apps/redmine/htdocs/vendor/bundle/ruby/2.5.0/gems/rake-13.0.1/exe/rake:27:in `<top (required)>'
        (See full trace by running task with --trace)

ファイルのリストア

添付ファイルなどのファイルをリストアします。
- エクスプローラでコピーしてもよいが、ここではコピー結果をログに残すため次のコマンドでコピーする。 - コピー元、ログの出力先は、上記で作成したフォルダに格納する。 - ログの出力は任意。 -実行後、 ログファイルを開き、失敗していないことを確認する。

dos>robocopy "C:\Backup2008-230\files" "C:\Bitnami\redmine-4.1.0-0\apps\redmine\htdocs\files" /E /R:3 /LOG:C:\Backup2008-230\RestoreLog.txt

サービスの開始

  1. Redmine の「Application Manager」を起動し、「Manage Servers」タブを開く。
    C:\Bitnami\redmine-4.1.0-0\manager-windows.exe

  2. 「Start All」クリック
    f:id:HopStepLab:20200104013421p:plain
    すべてが緑色になったことを確認する。

確認


  1. f:id:HopStepLab:20200104013425p:plain
    Redmineにログオンし、問題なく使えることを確認する。

Redmineのすべてのサービスを停止

旧VerのRedmine と 新VerのRedmineを同一サーバ上でバージョンアップする場合は、旧VerのRedmineをアンインストールもしくは無効化する必要があります(旧Verが自動起動するとまずいので)。無効化するときは以下の手順で。

dos>dir /X C:\BitNami\

2020/01/03  14:48  <DIR>  REDMIN~1.0-0 redmine-2.3.0-0  ←無効化したいのは Redmine 2.3
                          ^^^^^^^^^^^^ ^^^^^^^^^^^^^^^
                          長い名前と、それの短い名前を確認
  • サービスの一覧を取得し、上記ディレクトリ名のサービスを確認する。
dos>wmic SERVICE GET Caption,PathName | findstr BitNami

redmineApache                       "C:\BitNami\REDMIN~1.0-0\apache2\bin\httpd.exe" -k runservice
redmineMySQL                        C:\BitNami\redmine-2.3.0-0\mysql\bin\mysqld.exe --default・・・
redmineSubversion                   "C:\BitNami\redmine-2.3.0-0\subversion\scripts\winserv.exe"
redmineThin1 (managed by WinServ)   "C:\BitNami\redmine-2.3.0-0\apps\redmine\scripts\winserv.exe"
redmineThin2 (managed by WinServ)   "C:\BitNami\redmine-2.3.0-0\apps\redmine\scripts\winserv.exe"
  • Windowsの「サービス」を開き、上記の短い名前/長い名前のパスが設定されているサービスについて、「スタートアップの種類」を"自動" → "無効" にする

  • サーバーを再起動し、旧Verのサービスが自動的に起動してこないことを確認する。

記事内の環境について