Windows で Bitnami Redmine からのデータ移行と起動成功までの血涙奮闘記 (SSL 無効化 & 旧DB移行編)

前回の記事では、Windows 環境で Redmine を bundle exec rails s -e production で起動させるまでの道のりを記録しました。今回は、Bitnami Redmine からのデータ移行を行い、SSL 関連のエラーを解消して最終的にログインに成功するまでの手順をまとめます。もし同様の状況で困っている方がいれば、ぜひ参考にしてください。

前回の記事はこちら: Windows で Redmine を `bundle exec rails s -e production` で起動させるまでの血涙奮闘記

SSL 接続エラーとの戦い

前回の記事の末尾で触れた Internal error の原因を調査したところ、ログには以下のような SSL 接続エラーが出力されていました。

ActiveRecord::ConnectionNotEstablished (SSL connection error: protocol version mismatch):

ローカル環境での利用であり、特に SSL を有効にする必要がないと判断したため、Redmine 側のデータベース接続設定で SSL を無効にすることにしました。

対策: `database.yml` で SSL を無効化

Redmine の config フォルダにある database.yml ファイルを開き、production 環境の設定に以下の行を追加または修正しました。

production:
  adapter: mysql2
  encoding: utf8mb4
  database: redmine
  username: redmine
  password: "your_password"
  host: localhost
  port: 3306
  ssl_mode: :disabled # ← この行を追加または修正
  # その他の設定 ...
    

ssl_mode: :disabled を設定することで、Redmine は MySQL への接続に SSL を使用しないようになります。

古いデータベースからの移行とログインエラー

Bitnami Redmine で使用していたデータベースを新しい環境にインポートした後、Redmine を起動し初期画面が表示されたものの、ログインを試みると以下のエラーが発生しました。

NameError (undefined local variable or method `twofa_scheme' for #<User ...>):

このエラーは、古いバージョンの Redmine (Bitnami Redmine 3.0.1) のデータベーススキーマと、新しい Redmine (5.0.0 以降) のスキーマとの間に差異があることが原因でした。特に、二段階認証に関連するカラム `twofa_scheme` が古いデータベースには存在しないために発生していました。

対策: データベースのマイグレーション再実行

この問題を解決するために、Redmine のルートディレクトリで以下のコマンドを実行し、データベースのマイグレーションを再度行いました。

bundle exec rake db:migrate RAILS_ENV=production

このコマンドを実行することで、古いデータベースのスキーマが新しい Redmine のバージョンに合わせて更新され、不足していたカラムなどが追加されました。

ついにログイン成功!

データベースのマイグレーションを再実行した後、Redmine を再起動して再度ログインを試みたところ、無事に成功しました!プラグインがまだ導入されていないためオリジナルの画面が表示されましたが、フッタのバージョン情報も正しく表示されており、データの移行が完了したことを確認できました。

今後のステップ

これで、Windows 環境への Redmine のデータ移行と基本的な起動が完了しました。今後は、以下の作業を進めていく予定です。

  • 本番環境での Puma の導入
  • アクセス URL のサブフォルダ化
  • Web アプリケーションサーバの Windows サービス化

これらの設定についても、また機会があれば記事にまとめたいと思います。

まとめ

Windows 環境で Bitnami Redmine からデータを移行し、SSL 関連のエラーや古いデータベースによるログインエラーを乗り越えて、Redmine を起動させるまでの道のりは決して簡単ではありませんでした。しかし、一つ一つエラーの原因を特定し、対策を講じることで、最終的に目標を達成することができました。この記事が、同様の課題に直面している方の助けとなれば幸いです。

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です