Redmine 1.3.0→3.1.1(rails 2.3.14→4.2.4) の更新(CentOS5.11)

ローカルでredmine(1.3.0.devel.8694)を利用している。かなり古くなったので近々、バージョンアップしたい。いきなり、現物をいじるのは気が引けるので、virtualbox環境下のCentOS上で確認した関連更新手順を個人的な備忘録としてまとめた。

大きな流れは以下。

1. ruby `1.8.7-p352-1` → `2.2.3`の更新
2. ImageMagick`6.2.8.0`→`6.9.1`の更新
3. mysql`5.0.95`->`5.5.46`の更新
4. redmine及びrails関連
5. passengerの更新
6. apache再起動

尚、最終的には、以下になる。

| 主要項目 | 旧 | 新|備考|
|:-----------|:------------|:------------|:------------|
|ruby|1.8.7-p352-1|2.2.3-p173|
|redmine|1.3.0.devel.8694|3.1.1.devel.14607|trunkを利用|
|rails|2.3.14|4.2.4|
|passenger|3.0.7|5.0.20|
|mysql|5.0.95|5.5.46|
|rmagick|--|2.15.4|
|imagemagick|6.2.8.0|6.9.1|
|apache|2.2.3|--|
|CentOS|5.11|--|


# ruby `1.8.7-p352-1` → `2.2.3-p173`の更新

[rbenv](https://www.ruby-lang.org/ja/documentation/installation/#rbenv)の利用が正だが、横着してソースから実施。

## `1.8.7-p352-1`の削除

`1.8.7-p352-1`は、yum経由でインストールしていたので、以下で消す。

~~~~sh
$ sudo yum erase ruby-1.8.7-p352-1 rubygems-1.3.5-1
~~~~

## `2.2.3`のビルド＆インストール

基本、単に make & make install。

~~~~sh
$ wget --no-check-certificate https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.3.tar.gz
$ cd ruby-2.2.3
$ ./configure
$ make
$ sudo make install
~~~~

# ImageMagick`6.2.8.0`→`6.9.1`の更新

redmineは、rmagick(ImageMagick)を使わなくても利用できるっぽいが、この機会にインストールしてみる。

当初、SRPMからの更新を試みたが、依存パッケージのインストールなどかなり面倒だったので、`tar.xz`からの`make` & `make install`での更新を用いる。

また、2015/10/09時点最新の`6.9.2-3`だと、新しすぎて後々、依存関係(rmagickだったかな？)で怒られたので、`6.9.1`を選択。

大きな流れは、ざっと以下の様な感じ。

1. `6.2.8.0`のアンインストール
2. `6.9.1`のビルド＆インストール


## `6.2.8.0`のアンインストール

`6.2.8.0`は、yum経由でインストールしていたので、以下で消す。

~~~~sh
$ sudo yum erase ImageMagick-6.2.8.0-15.el5_8
~~~~

## `6.9.1`のビルド＆インストール

基本、単に make & make install。
ただ、`--prefix=/usr`だけ指定。(デフォルトだと、rmagickインストール時に`PKG_CONFIG_PATH`とかの指定を行わなければいけなかった気がする。)

~~~~sh
$ wget http://www.imagemagick.org/download/releases/ImageMagick-6.9.1-10.tar.xz
$ xz -dv ImageMagick-6.9.1-10.tar.xz
$ tar -xvf ImageMagick-6.9.1-10.tar
$ cd ImageMagick-6.9.1-10
$ ./configure --prefix=/usr
$ make
$ sudo make install
~~~~

## フォントのインストール

redmineでガンチャートのpng出力するときなどに、このフォントが無いと化ける。

~~~~sh
sudo yum install ipa-pgothic-fonts ipa-pmincho-fonts
~~~~

CentOSだと、`/usr/share/fonts`配下に、フォント群はインストールされる。

# mysql`5.0.95`->`5.5.46`の更新

[mysql(5.0.95->5.5.46) + mod_auth_mysql の更新](http://qiita.com/gitseitanaka/items/5bcc07d9300119dc2473)参照。

# redmine及びrails関連

ここで、一気にredmineとrailsの更新を行う。
redmineは`svn trunk`環境を用いており、今回も引き続き、trunkを利用する。但し、レビジョンは、安定化バージョンと同等のものを用いる。
大きな流れは、以下。

1. trunk造り直し
2. gem update (ここで、railsのupdateも実施)
3. redmineの設定ファイル更新
4. `db:migrate`他

## `trunk`造り直し

redmineのsvnレポジトリが、以下の様に変更されているので、改めてチェックアウト。r14607が、`3.1.1`相当。
現：https://svn.redmine.org/redmine/trunk
旧：http://redmine.rubyforge.org/svn/trunk


あとは、以下を実施。

* 添付ファイル群を旧trunkよりコピー。
* プラグイン取り込み

~~~~sh
$ mv trunk old_trunk
$ svn co -r 14607 https://svn.redmine.org/redmine/trunk
$ cd trunk
$ cp -p ../old_trunk/filses/* filse/.
$ cd plugins
$ git clone git://github.com/dergachev/redmine_gist.git gist
~~~~

## `gem update`

`gem`の更新を行い、合わせて以下をgemインストールしておく。

* `bundle`
* `mysql2` ← アダプタが`mysql`から変わった

その後、trunk内で、`bundle install`を実施し、trunkの依存モジュールも更新する。このタイミングでrailsも`4.2.4`に更新される。

~~~~sh
$ sudo gem update --system
$ sudo gem install bundle
$ sudo gem install mysql2
$ cd trunk
$ sudo bundle install --without development test
~~~~

## redmineの設定ファイル更新

~~~~sh
$ cd trunk
$ cp config/database.yml.example config/database.yml
$ cp config/configuration.yml.example config/configuration.yml
~~~~

~~~~diff:config/database.yml
--- database.yml.example        2015-10-09 13:19:46.000000000 +0900
+++ database.yml        2015-10-09 08:29:08.000000000 +0900
@@ -6,8 +6,8 @@
   adapter: mysql2
   database: redmine
   host: localhost
-  username: root
-  password: ""
+  username: redmineuser
+  password: xxxxxxxxxxxx
   encoding: utf8

 development:
@@ -15,7 +15,7 @@
   database: redmine_development
   host: localhost
   username: root
-  password: ""
+  password:
   encoding: utf8

~~~~

~~~~diff:config/configuration.yml
   # Absolute path (e.g. /usr/bin/convert, c:/im/convert.exe) to
   # the ImageMagick's `convert` binary. Used to generate attachment thumbnails.
-  #imagemagick_convert_command:
+  imagemagick_convert_command: /usr/bin/convert

   # Configuration of RMagcik font.
   #
@@ -202,7 +202,7 @@
   #   Linux:
   #     rmagick_font_path: /usr/share/fonts/ipa-mincho/ipam.ttf
   #
-  rmagick_font_path:
+  rmagick_font_path: /usr/share/fonts/ipa-pgothic/ipagp.ttf

   # Maximum number of simultaneous AJAX uploads
   #max_concurrent_ajax_uploads: 2
~~~~

## `db:migrate`他

規定のおまじないを実施。

~~~~sh
$ cd trunk
$ bundle exec rake generate_secret_token
$ bundle exec rake db:migrate RAILS_ENV=production
$ bundle exec rake redmine:plugins:migrate RAILS_ENV=production
$ bundle exec rake tmp:cache:clear tmp:sessions:clear RAILS_ENV=production
~~~~

# passengerの`3.0.7`→`5.0.20`

前述の更新に伴い、passengerも更新を行わないとhttpから起動してくれないので、以下で更新。

~~~~sh
$ sudo gem install passenger
$ sudo passenger-install-apache2-module
~~~~

最終的(apach2/ruby)に出力された以下を、httpd.conf(redmine.conf)に貼りつける。旧(`3.0.7`)モジュールの読み込みはコメントアウト又は削除。

~~~~httpd.conf
  # LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-3.0.7/ext/apache2/mod_passenger.so
  # PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-3.0.7
  # PassengerRuby /usr/bin/ruby

   LoadModule passenger_module /usr/local/lib/ruby/gems/2.2.0/gems/passenger-5.0.20/buildout/apache2/mod_passenger.so
   <IfModule mod_passenger.c>
     PassengerRoot /usr/local/lib/ruby/gems/2.2.0/gems/passenger-5.0.20
     PassengerDefaultRuby /usr/local/bin/ruby
   </IfModule>
~~~~

# apache再起動

~~~~sh
# /etc/init.d/httpd restart
~~~~

# 本チャン環境への適用結果(2015/10/14)

上記にまとめた手順で、最終的に本チャン環境の更新は行えた。(20分弱程度)
ただ、mysqlの更新時のリストア作業で、mysqlのアカウント情報が消えるハプニングがあり、肝を冷やした。。