Redmineを2.6から3.3にアップデートした

２年ほど運用しているVPS上のプライベートRedmineのアップデートを行った
ほとんど参考サイトそのままだが手順をまとめておく
目的はRedmineの整理とレスポンシブルデザイン！

参考：http://redmine.jp/guide/RedmineUpgrade/
参考：http://qiita.com/moroishi/items/2832408a0a3fd5845b3c
参考：http://d.hatena.ne.jp/torutk/20150906/p1

## 環境

旧ディレクトリ：/var/lib/redmine
新ディレクトリ：/var/lib/redmine3

前回はGitでダウンロードしてきたのを展開してインストールした
アプリケーションサーバーはUnicornを使用

|         |       旧       |   新   |      備考     |
| ------- | -------------- | ------ | ------------- |
| OS      | Ubuntu 14.04.2 |        |               |
| Redmine | 2.6.2          | 3.3.2  |               |
| MySQL   | 5.5.41         | 5.5.41 |               |
| Ruby    | 2.1.2          | 2.3.0  | rbenvで管理   |
| rbenv   | 0.4.0          | 1.1.0  | gitで管理     |
| Unicorn | 4.8.3          | 5.2.0  | bundlerで管理 |

rubyの最新は2.4だったが、3.3.2は2.3までのサポートなので、2.3にする
（…2.4でやってしまい動かなかったのは内緒）

### プラグインの対応表

xは未インストールのもの、またはアンインストールするもの

|                                           |  旧   |  新   | 対応状況 |
| ----------------------------------------- | ----- | ----- | -------- |
| Redmine Absolute Dates plugin             | 0.0.2 | x     | -        |
| Redmine Backlogs                          | 1.0.6 | x     | -        |
| Redmine Free Mind plugin                  | 1.1.1 | x     | -        |
| Redmine Issue Templates plugin            | 0.1.0 | x     | -        |
| Redmine (Monitoring & Controlling)        | 0.1.1 | x     | -        |
| Redmine Readme plugin                     | 0.0.3 | x     | -        |
| Redmine Agile plugin (Light version)      | 1.3.8 | 1.4.2 | 3.3      |
| Redmine Checklists plugin (Light version) | 3.0.4 | 3.1.5 | 3.3      |
| Default Assign plugin                     | 0.4   | 0.5   | ?        |
| Knowledgebase                             | 3.0.7 | 3.2.1 | 3.2      |
| Lightbox Plugin 2                         | x     | 0.3.1 | 3.3.x    |
| PlantUML Plugin for Redmine               | x     | 0.3.0 | 3.1.x    |

## プラグインのアンインストール

データベースの更新とプラグイン自体の削除をして再起動
アンインストールする理由は、入れたものの使っていないのがほとんど

    $cd /var/lib/redmine
    $rake redmine:plugins:migrate  NAME=<plugin_name> VERSION=0 RAILS_ENV=production
    $rm -rf plugins/<plugin_name>
    $kill -QUIT `cat tmp/pids/unicorn.pid`
    $bundle exec unicorn_rails -c config/unicorn.rb -E production -D

## 停止

    $kill -QUIT `cat tmp/pids/unicorn.pid`

## バックアップ

files以下とDBのバックアップを取る
永続的に残す事も考えて、まとめてzipで固めておく

    $mkdir ~/Work/redmine_update
    $cd ~/Work/redmine_update/
    $cp -r /var/lib/redmine/files .
    $mysqldump -uredmine -predmine redmine > mysql.dump
    $zip redmine_backup_`date +%Y%m%d`.zip -r files mysql.dump

## Ruby

### rbenvのアップデート

最新をインストールするため ruby-build（ruby installを提供しているプラグイン）もアップデートする

    $cd ~/.rbenv
    $git pull
    $cd plugins/ruby-build/
    $git pull

### Rubyのアップデート

ビルドするため時間が掛かる
ビルド中に以下のエラーが出たので、libreadline-devをインストールした

    ERROR: Ruby install aborted due to missing extensions
    Try running `apt-get install -y libreadline-dev` to fetch missing dependencies.

    $apt-get install -y libreadline-dev
    $rbenv install 2.3.0
    $rbenv rehash
    $rbenv global 2.3.0
    $gem install bundle
    $rbenv rehash

## Redmineのアップデート

### Redmine本体の更新

インストール時に直接展開していた場合とSVNで行った場合との２パターンがある
自分はGitでダウンロードしてきので、直接展開してた場合で行った

#### A. 直接展開の場合

##### 何らかの方法でRedmineを取得し展開する

今後のアップデートの手間を考えSVNにした

    #apt-get install subversion subversion-tools
    $svn co http://svn.redmine.org/redmine/branches/3.3-stable /var/lib/redmine3

##### 設定等のコピー

configuration.ymlは弄ってなかったのでなかった
Unicorn用のファイルもコピー

    $cd /var/lib/redmine3
    $cp ../redmine/config/database.yml config
    $cp ../redmine/config/configuration.yml config
    $cp ../redmine/config/unicorn.rb config
    $cp ../redmine/Gemfile.local .

filesディレクトリとプラグイン、テーマをコピー

    $cp -r ../redmine/files .
    $cp -r ../redmine/plugins .
    $cp -r ../redmine/public/themes/farend_fancy public/themes

##### gemのインストールと鍵生成

    $bundle install --without development test

相変わらずnokogiri時間掛かるな
終わったらセッション鍵を作成

    $bundle exec rake generate_secret_token

#### B. SVNの場合

    $cd /var/lib/redmine
    $svn update
    $bundle update

### プラグインのアップデート

古いものを削除し最新をインストール
またはGitで最新をPull

    $rm -rf redmine_agile
    $unzip redmine_agile-1_4_2-light.zip
    $rm -rf redmine_checklists
    $unzip redmine_checklists-3_1_5-light.zip
    $cd redmine_default_assign
    $git pull
    $cd redmine_knowledgebase
    $git pull
    $bundle install --without development test

### テーマのアップデート

    $cd public/themes/farend_fancy
    $git pull

### データベースの更新

    $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

## 起動

    $bundle exec unicorn_rails -E production -c config/unicorn.rb -D

## 結果

無事起動を確認できた…のだが、どうも一部の表示がおかしい
タブやボタンなどが重なっていたり２重になっていたりする
ん～レスポンシブルデザインでスマホで見れるようになったのが個人的に嬉しくてアップデートしたのだけれど…
デフォルトテーマにしても同様の様子、またCSS見てみるか
データは全然問題なかったので一安心

追記：
chromeだと崩れてedgeだと正しく表示された
メインPCのchromeのみで崩れるようなので、調べてみた所、chromeのキャッシュクリアで治った