basyura's blog

あしたになったらほんきだす。

Bitnami (Redmine) 2.5 → 3.2 へアップデート

会社の Bitnami (Redmine) が 2.5 で古いのだけど Bitnami は一度アンインストールしてからインストールする必要があるようだったので放置してた。3.2 になるに至っていろいろ機能追加されてきた機能が欲しいというリクエストをもらったのでアップデート。vmware の windows で何回かアップデートの練習をしたおかげか特に問題なく終わった。後は、本体に直接入れていた修正をそのまま当て直すか、plugin 化するかが残っている状態。


以下アップデートのメモ

2.5 をアンインストール

念のためBitnami のルートフォルダからバックアップしておく。MySQL のデータはダンプしておく。
プログラムの追加と削除に登録されていないので (2.6 にはあった) インストールフォルダに有る uninstall.exe から実行

  • 「データも全て削除」を選択
  • レジストリキーを削除中を表示したまま応答なしの期間がけっこうあった。ディスクアクセス 100% だったのでノートンが過剰反応したように思う。
  • 4 つに増やしていた redmine のインスタンスも無事削除された
  • php の残骸が残っていたけど Bitnami フォルダごと削除

3.2 をインストール

アプリケーションの停止

  • manager-windows.exe を起動
  • MySQL 以外の各アプリケーションを停止する

ダンプファイルからリストア

コンソールを立ち上げる

  • use_redmine.bat を叩く
  • 必要な環境変数がセットされたコマンドプロンプトが起動する
  • rails、git、mysql 各コマンドが使えるようになる

MySQL にデータを読み込む

mysql -u bitnami -pパスワード bitnami_redmine < ファイルのパス

マイグレーション

> cd c:\Bitnami\redmine-3.2.0-0\apps\redmine\htdocs
> ruby -v
  ruby 2.0.0p647 (2015-08-18) [i386-mingw32]
> bundle exec rake db:migrate RAILS_ENV=production

email_addresses がすでに存在しているよエラーがでるけど、drop するとまずいので以下のファイルの中身をコメントアウトして再実行

  • 20150113194759_create_email_addresses.rb
  • 20150113213955_add_email_addresses_user_id_index.rb


その他の既にテーブルがある旨のエラーは中身が空であることを確認して drop する

mysql> drop table email_addresses;
mysql> drop table roles_managed_roles;
mysql> drop table imports;
mysql> drop table import_items;
mysql> drop table custom_field_enumerations;

再度マイグレーションを実行して終了を待つ。これ前にも遭遇した気がするのだけど、何か解決案はあるんだろうか?それともわざとそうなってるんだろうか?

plugin をインストール

  • plugins フォルダに git で clone
  • Redmine Q&A plugin が対応していなかったけど、とく使っていない上に手を入れてたりしてたので放置

入れている plugin 一覧

必要になって自作して入れてるもの

3.2 になって本体に取り込まれたので不要になったもの

plugin のアップデート

> bundle exec rake redmine:plugins:migrate RAILS_ENV=production

セションとキャッシュのクリア

bundle exec rake tmp:cache:clear tmp:sessions:clear

files フォルダを移す

  • バックアップから戻す
  • configuration.yaml の設定で files フォルダの位置を変更

メールの設定

  • configuration.yaml の設定

pdf 出力時のフォント設定

  • configuration.yaml の設定
rmagick_font_path: C:\windows\fonts\meiryo.ttc

ログ出力

config.logger = Logger.new("log/production.log", 5, 10 * 1024 * 1024)
config.log_level = :warn

2.5 では↓のようにログレベルを指定していたので、そのまま定義したのだけど効いてなかった。
logger の方の指定がちゃんと効いているかは不明・・・。

config.logger = Logger.new("log/production.log", 5, 10 * 1024 * 1024)
config.logger.level = Logger::WARN

アプリケーションの起動

  • manager-windows.exe を起動
  • アプリケーションを起動する

Redmine Comment Only plugin

テスト中にデフォルトの言語の中に日本語が出てこない現象が発生。ググってみると同じ現象が発生した人を発見。

http://ouranos.sakura.ne.jp/wordpress/2015/12/12/

自分の plugin が原因だった orz

原因を辿ってみると i18n.rb の中で言語を抽出してる時に蹴られちゃってるっぽいのだけどよく分からず。こういう時に型と IDE があれば・・・と思う・・。locale 周りっぽいことは分かったのでいろいろためしてみると、config/locales/en.yml の中に手抜きして en と ja の両方を定義していたのがダメだったようだ。

en:
  label_redmine_comment_only_display_all: 'display all history' 
ja:
  label_redmine_comment_only_display_all: '全ての履歴を表示' 

分割して問題解決。

まとめ

いろいろハマるんじゃないかなぁとか plugin がまた全部死んじゃうんだろうなぁとか思っていたのだけど、大きくハマることもなく済んでよかった。次にアップデートするのはまた一年後かな。