オフィス狛 技術部です。
弊社のRedmineは、平日は終日使用されていて、
バージョンアップを行うタイミングは土日に限られてしまうのですが、
以前実施した時に、見事に失敗して、そこからずっと再実施するタイミングがありませんでした。
今回、ようやく実施出来るタイミングを作れたので、
今度は成功するまで頑張ってみようと思います。
1)作業前バックアップ
弊社Redmineは、AWS(Amazon Web Services)上に構築しているので、
作業前のバックアップも、各データごとに取得する訳ではなく、
マシンイメージ(AMI)ごと取得しています。
よって、細かいバックアップの手順は記載しません。
必要であれば、
本家サイトを参照して下さい。
2)バージョンアップ前準備(プラグインの削除)
プラグインがRedmineの新しいバージョンに対応していないと、
バージョンアップに失敗する事がある、と聞いていたので、
念の為、プラグインは削除しておこうと思います。
現在使用しているのは以下の二つです。(思ったより少なかった)
Parent issue filter plugin (parent_issue_filter)
→チケットを親チケットでフィルタ出来るプラグインです。
Redmineの3.1から、プラグインなしでも親チケットによるフィルタが実装されたようなので、
このプラグインは削除しようと思います。
Redmine Gantt With Date plugin (redmine_gantt_with_date)
→ガントチャートに日付を表示するプラグインです。
こちらはRedmine3.2からプラグインなしでも日付が表示されるようになったようなので、
このプラグインも削除しようと思います。
削除は、下記のコマンドを実行します。
$ rake redmine:plugins:migrate NAME=xxxxxx VERSION=0 RAILS_ENV=production
「xxxxxx」の部分に、プラグインの名称を設定します。
例えば、Parent issue filter pluginを削除する際は、
$ rake redmine:plugins:migrate NAME=parent_issue_filter VERSION=0 RAILS_ENV=production
というコマンドを実行します。
ちなみに、上記コマンドは「Rakefile」が存在する場所で実行する必要があります。
(「Rakefile」はRedmineのHomeディレクトリに存在します。)
「Rakefile」が無いと、以下のようなエラーメッセージが出ます。
rake aborted!
No Rakefile found (looking for: rakefile, Rakefile, rakefile.rb, Rakefile.rb)
また、コマンドを実行した後、
$ rm -rf [Redmine HOME]/plugins/parent_issue_filter
というコマンドを実行する事で。実体のファイルも削除する必要があります。
※[Redmine HOME]は適宜環境によって書き換えて下さい。
3)バージョンアップ前準備(Rubyのバージョンアップ)
Redmine 3.3 から、Ruby 2.3 に対応しているようなので、Rubyもバージョンアップしようと思います。
(EC2でインスタンス作成時、Amazon Linuxの場合、Ruby2.0がインストール済みとなってるので、
「rbenv」を使用して、バージョン2.3をインストールします)
rbenvは、GitHubからクローンする必要があるので、gitがインストールされていない場合はインストールします。
$ sudo yum install git
※弊社は、同一インスタンスでGitのリポジトリも管理しているので、gitはインストールしてある状態でした。
・・・この同一インスタンス内で色々なシステムを導入しているのが、今回のバージョンアップになかなか踏み切れなかった要因です。
gitがインストール済みかどうかは、下記のコマンドで確認できます。
$ yum list installed | grep 'git'
さて、rbenvのインストールのやり方は、
https://github.com/rbenv/rbenv#installation
の通りに実行していくだけです。
(homeディレクトリで実施するのが良さそうです)
Githubからチェックアウト。
$ git clone https://github.com/rbenv/rbenv.git ~/.rbenv
環境設定ファイルにパスを追加。
$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
initコマンドを呼び出すように設定します。
$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
パスの変更を有効する為に、一度ターミナルの接続を切り、再接続します。
動作確認は以下のコマンドで行います。
$ rbenv -v
rbenvは、rubyのバージョン切り替えツールなので、
次はrubyのインストールを簡単にするプラグイン(ruby-build)をインストールします。
$ git clone git://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
以下のコマンドで、インストール可能なバージョンを確認します。
$ rbenv install -l
現時点(2016/11/12)最新安定版のバージョン 2.3.1 をインストールします。
$ rbenv install 2.3.1
ここでエラーが出ました。
Downloading ruby-2.3.1.tar.bz2...
-> https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.1.tar.bz2
Installing ruby-2.3.1...
BUILD FAILED (Amazon Linux AMI 2016.09 using ruby-build 2016xxxx-xx-xxxxxxxxx)
Inspect or clean up the working tree at /tmp/ruby-build.2016xxxxxxxx.xxxxx
Results logged to /tmp/ruby-build.2016xxxxxxxx.xxxxx.log
Last 10 log lines:
installing rdoc: /home/officekoma/.rbenv/versions/2.3.1/share/ri/2.3.0/system
installing capi-docs: /home/officekoma/.rbenv/versions/2.3.1/share/doc/ruby
The Ruby readline extension was not compiled.
ERROR: Ruby install aborted due to missing extensions
Try running `yum install -y readline-devel` to fetch missing dependencies.
Configure options used:
--prefix=/home/officekoma/.rbenv/versions/2.3.1
LDFLAGS=-L/home/officekoma/.rbenv/versions/2.3.1/lib
CPPFLAGS=-I/home/officekoma/.rbenv/versions/2.3.1/include
ここはエラーメッセージの通り、
$ sudo yum install -y readline-devel
を実行し、その後無事にインストール成功しました。
インストールに成功したところで、バージョンを切り替えます。
まずは、現在の選択されているRubyのバージョンを確認します。
$ rbenv versions
* system (set by /home/officekoma/.rbenv/version)
2.3.1
systemが選択されています・・・バージョンが分からない、という事で、
$ ruby -v
ruby 2.0.0p648 (2015-12-16) [x86_64-linux]
現在選択されているのは「2.0」だということが分かりました。
さて、バージョンを変えてみます。
$ rbenv global 2.3.1
再度、現在の選択されているRubyのバージョンを確認します。
$ rbenv versions
system
* 2.3.1 (set by /home/ofkomamanage/.rbenv/version)
$ ruby -v
ruby 2.3.1p112 (2016-04-26 revision 54768) [x86_64-linux]
現在の選択バージョンが「2.3.1」になりました。
ようやく、Redmineのアップグレードですが・・・長くなってきたので、次回に持ち越します。
次回:
Redmineのバージョンアップ 2.5 → 3.3 その2
Redmine