alminiumを入れたあと、Redmineを2.2にバージョンアップする

  Redmineを導入するにはalminiumを利用するのがとても容易だけど、お一人で管理されてる?ためかRedmineのバージョンがなかなかあがらず、これを書いてる時点では2.2.0が出たのに、alminiumがサポートするのは2.0.3であるため、バージョンアップ作業をどうするか悩んでしまいます。

  alminiumは公開された当初から利用していましたが、alminiumが新しいRedmineをサポートしてくれたときは再インストールして、そうでない場合はRedmineのソースを取得してalminiumで設定した内容をコピーする、という方法をとってきました。今回は後者について記録します。

 

前提

CentOS 6.2

alminiumインストール済み commit de5431ddeeecb8cfbcff2a9546ae6cf31e8b56ee

Ruby 1.9.3, rails 3.2.6

 

概要
 Redmineの最新版を取得して、alminiumの設定をコピーする。

 

バージョンアップ手順

1. サービスを停止する

service httpd stop

 2. 古いRedmineのバックアップをとって、新しいRedmineを取得する

Redmineのバックアップを取ります。

mv /opt/alminium /opt/alminium.base
mysqldump -ualminium -p alminium > alminium.dump

これを書いている時点ではBacklogsプラグインが2.2に対応していないため、Backlogsプラグインのアンインストールを行います。ひとまずデータベースを削除するだけです。(データベースの差し戻し)を行います。

cd /opt/alminium.base/
bundle exec rake redmine:plugins:migrate NAME=redmine_backlogs VERSION=0 RAILS_ENV=production

新しいRedmineを取得します。

cd /opt/
git clone https://github.com/redmine/redmine
ln -s redmine alminium
chown apache:apache -R redmine
chonw apache:apache -R alminium

以降、次のフォルダで作業します。

cd /opt/alminium

3. alminiumの設定をRedmineにコピーする

# スクリプトなど
cp -rp alminium.base/hooks alminium
cp -rp alminium.base/bin alminium
# 設定ファイル
cp -p alminium.base/config/configuration.yml alminium/config
cp -p alminium.base/config/database.yml alminium/config
cp -p alminium.base/config/scm.yml alminium/config
# テーマ
cp -rp alminium.base/public/themes/gitmike/ alminium/public/themes/
cp -rp alminium.base/public/themes/railsgun/ alminium/public/themes/
# プラグイン
cp -rp alminium.base/plugins/* alminium/plugins
# 一部のプラグインを削除する(rake db:migrateでエラーになる)
rm -rf alminium/plugins/redmine_redcarpet_formatter # db:migrateでエラーになる
rm -rf alminium/plugins/redmine_backlogs # rake db:migrateでエラーになる
rm -rf alminium/plugins/redmine_drafts # チケット作成画面でエラーになる
rm -rf alminium/plugins/redmine_banner # バナー設定画面でエラーになる

4. Redmineのgem管理をする

cd /opt/alminium

alminiumはproductionで動作させるだけなので、Gemfileからtest-unitに関する以下のコードをコメントアウトする。

group :test do
-- 中略 --
# It seems to need test-unit explicitely.
-- 中略 --
end

Redmine 2.2.0はrails 3.2.9を必要とするため、railsのバージョンアップを行う。alminiumはMySQLで動作するので、他のDBは除外する。

bundle install --without development test postgresql sqlite

もしこれを実行したときにエラーが出た場合は次のコマンドを実行するとうまくいく。エラーが出なかったなら実行する必要はない。

bundle update

5. 秘密鍵の生成を行う

rake generate_secret_token

6. データの移行を行う

rake db:migrate RAILS_ENV=production
rake db:migrate_plugins RAILS_ENV=production
cp -p ../alminium.base/files/* files

 7. セッションをクリアする

rake tmp:cache:clear
rake tmp:sessions:clear

8. サービスを起動する

service httpd start

 

 バージョンが2.2になって、Rails3.2.9対応になったためか、一部のプラグインが動かなくなるので、十分な検証が必要のようです。一定条件で、チケット一覧画面を開いたとき、SCMプラグインでエラーが出ました。