さくらのVPS 512からさくらのVPS 2Gに移行していろいろ作業している間に Redmineは1.4.xがリリースされ、さらに Rails3向けのRedmine 2.0がリリースされた。
取り残されないうちにRedmine 2.0に更新する。Nginx+Passengerで動かしているがほとんどの作業はコマンドラインからでウェブサーバの違いが手順に影響することはあまりない。
本家サイトの手順にそっていく
http://www.redmine.org/projects/redmine/wiki/RedmineUpgrade
なおCentOS版の更新手順はredmine.jpで公開されている
http://blog.redmine.jp/articles/redmine-2_0-installation_centos/
Step 1 – Check requirements
Redmine 1.3.2の環境でRubyは1.8.7のみ、Railsは 2.3.14、gemは古いという状態。
一方、Redmine 2.0はRubyは1.8.7, 1.9.2, 1.9.3, jruby-1.6.7、Railsは3.2.3が必要。他のパッケージが記載されていないのでよく読んでみると、Redmine 1.4からBundlerに対応し、依存パッケージbundle installでセットアップできるようになったようだ。
さて今回はいろいろあって(後述)、Ruby 1.8.7を継続して使うことにした。Redmineの依存パッケージをインストールしていく。
su
PATH="$PATH:/var/lib/gems/1.8/bin"
gem install bundler
cd /path/to/redmine
bundle install --without development test
gemのバイナリのパスが通してないので面倒なことをしている。
RMagickの依存ライブラリのインストール
RMagickのインストールに失敗したので補足しておく。いままでRMagickはオプションだったし、別に要らないと思ってインストールしていなかった。しかし、bundle installの途中で失敗してストップしてしまい、withoutするのも癪なのでRMagickをインストールしてみる。
apt-cache search magick でそれらしいパッケージを検索し、以下のコマンドを実行。
apt-get install imagemagick
apt-get install libmagickcore-dev
apt-get install libmagickwand-dev
正直なところ3回実行した。最初にCan't install RMagick 2.13.1. Can't find Magick-config
というエラーだったので薄々開発モジュールが要りそうだと思っていてimagemagickをインストールしてもMagick-configは入らなかったので続けてlibmagickcore-devをインストール。しかしそれでも Can't install RMagick 2.13.1. Can't find MagickWand.h.
というエラーがでたので libmagickwand-dev をインストール。これでRMagickはインストールできた。
Step 2 – Backup
MySQLデータベースだけ。ここからはrootではなく通常ユーザで実行。
mysqldump -u redmine -p redmine > ~/redmine.dump.sql
Step 3 – Perform the upgrade
gitリポジトリを使ってredmine 1.1から1.2に更新
gitで管理しているので2.0のローカルブランチを作成する。
cd /path/to/redmine
git status
git checkout master
git pull
git pull --tags
git checkout -b redmine/2.0.0 2.0.0
Step 4 – Update the database
mv vendor/plugins/* plugins/
rm config/initializers/session_store.rb
rake generate_secret_token
rake db:migrate RAILS_ENV="production"
rake redmine:plugins:migrate RAILS_ENV=production
1行目について
プラグインのディレクトリが変更されたらしい。(プラグインを使っていなかったので未検証)
2,3行目について
Redmine 1.4からsessionまわりが変わったらしいのだが
rake db:migrate RAILS_ENV=”production”
Please remove config/initializers/session_store.rb and runrake generate_secret_token
.
と怒られたので従う。
5行目について
rake db:migrate_plugins RAILS_ENV=production
Note: The rake task db:migrate_plugins has been deprecated, please use the replacement version redmine:plugins:migrate
ということでdb:migrate_pluginsはredmine:plugins:migrate
に置き換わった。
プラグインを入れてなかったのでRedmine 2.0とプラグインの互換性についてはなんとも言えない。自作テーマはRedmine 2.0でも問題なさそうだ。
GithubテイストなRedmineのテーマを自作してみた
undefined method `log_path’
データベースのマイグレーションを実行しようとすると以下のようなエラーが表示された。
rake db:migrate RAILS_ENV="production"
rake aborted!
undefined method `log_path' for #<Rails::Application::Configuration:0x7f0a75721448>
Configクラスにlog_pathがないので怒られている模様。config/additional_environment.rbに記載していたログのカスタマイズのコードが該当していた。ドキュメントのまま記述していいたのだけど・・・とりあえずコメントアウト。
#config.logger = Logger.new(config.log_path)
#config.logger.level = Logger::WARN
本家サイトでも報告されているのでそのうち修正されるか、回避策が提示されるだろう。それまではデフォルトの設定でいく。
undefined method ‘log_path’
install redmine 2.0, when rake generate_secret_token, an error appear..
Step 5 – Clean up
rake tmp:cache:clear
rake tmp:sessions:clear
sudo service nginx restart
Redmineが無事表示できたら、ログインして管理 > 情報からバージョンを確認しておく。
次に 管理 > ルールと権限から新しい権限のチェック。
管理者にて
「チケットをプライベートに設定」
「自分のチケットをプライベートに設定」
「関連するチケットの管理」
チェックが入っていなかった。いつから増えたのかは不明。
Ruby 1.9系のインストール
移行を諦めたRuby 1.9の話。
Debianは1.8系がruby1.8、1.9系がruby1.9.1をそれぞれapt-get installでインストールできる。もともとruby1.9だったのだが問題があってパッケージ名がruby1.9.1になったようで混乱する。apt-cache show ruby1.9.1で以下のように表示される。
Package: ruby1.9.1
Version: 1.9.3.0-2.1
しかし実際いれてみて ruby1.9.1 -vとすると ruby 1.9.2p0 (2010-08-18 revision 29036) [x86_64-linux] で1.9.3にならなかった。。
sudo apt-get install ruby1.9.1 ruby1.9.1-dev
# /usr/bin/gem is already managed by gem
# gemは別にmasterで管理されてるよと怒られたので削除
sudo update-alternatives --remove-all gem
sudo update-alternatives --install /usr/bin/ruby ruby /usr/bin/ruby1.8 120\
--slave /usr/bin/irb ruby-irb /usr/bin/irb1.8\
--slave /usr/bin/gem ruby-gems /usr/bin/gem1.8
sudo update-alternatives --install /usr/bin/ruby ruby /usr/bin/ruby1.9.1 150\
--slave /usr/bin/irb ruby-irb /usr/bin/irb1.9.1\
--slave /usr/bin/gem ruby-gems /usr/bin/gem1.9.1\
--slave /usr/bin/rake ruby-rake /usr/bin/rake1.9.1
sudo update-alternatives --config ruby
一応ruby1.9.1には切り替えられるようにはしたが、最新版を使うならRVMから入れた方が良いような気もしている。いずれにせよRedmine以外Rubyアプリケーションは動かしていないので一旦保留にした。