Redmine3.2→3.4とruby20→24とプラグイン色々追加備忘録

Redmine関連のバージョンアップした備忘録です。
OSはAmazonLinux1。

公式の更新ガイドはここらへん
http://guide.redmine.jp/RedmineUpgrade/

・現状の確認

```
# ruby /var/www/redmine/bin/about 

sh: darcs: command not found
sh: hg: command not found
sh: bzr: command not found
Environment:
  Redmine version                3.2.0.stable
  Ruby version                   2.0.0-p648 (2015-12-16) [x86_64-linux]
  Rails version                  4.2.5
  Environment                    production
  Database adapter               Mysql2
SCM:
  Subversion                     1.8.15
  Git                            2.7.4
  Filesystem                     
Redmine plugins:
  redmine_wiki_extensions        0.7.0
  redmine_work_time              0.3.1
  view_customize                 1.1.2

# mysql --version
mysql  Ver 14.14 Distrib 5.5.46, for Linux (x86_64) using readline 5.1
```
・パッケージなどをテスト機からコピー

```
$ scp -Cpr -P <ssh-port> <test-server-ip>:/tmp/redmine-src.tar.gz .
# mv /home/<user>/redmine-src.tar.gz /usr/local/src
# cd /usr/local/src/
# tar xvzf redmine-src.tar.gz 
# cd redmine-src
# tar xvzf redmine-3.4.8.tar.gz 
# unzip EasyGanttFree.zip 
# unzip redmine_wiki_extensions-0.8.2.zip 
# unzip redmine-worktime-0.4.0.zip 
# tar xvzf redmine_theme_changer-0.3.1.tar.gz 
# unzip redmine_agile-1_4_7-light.zip 
```

imagemagickのパッケージ落としとく

```
# mkdir imagemagick;cd imagemagick
# wget http://<mysite>/rpm/amzn1/imagemagick/ImageMagick-6.9.6-8.amzn.x86_64.rpm
# wget http://<mysite>/rpm/amzn1/imagemagick/ImageMagick-c%2B%2B-6.9.6-8.amzn.x86_64.rpm
# wget http://<mysite>/rpm/amzn1/imagemagick/ImageMagick-c%2B%2B-devel-6.9.6-8.amzn.x86_64.rpm
# wget http://<mysite>/rpm/amzn1/imagemagick/ImageMagick-debuginfo-6.9.6-8.amzn.x86_64.rpm
# wget http://<mysite>/rpm/amzn1/imagemagick/ImageMagick-devel-6.9.6-8.amzn.x86_64.rpm
# wget http://<mysite>/rpm/amzn1/imagemagick/ImageMagick-djvu-6.9.6-8.amzn.x86_64.rpm
# wget http://<mysite>/rpm/amzn1/imagemagick/ImageMagick-doc-6.9.6-8.amzn.x86_64.rpm
# wget http://<mysite>/rpm/amzn1/imagemagick/ImageMagick-libs-6.9.6-8.amzn.x86_64.rpm
# wget http://<mysite>/rpm/amzn1/imagemagick/ImageMagick-perl-6.9.6-8.amzn.x86_64.rpm
```

※この前試験機で以下のあたりを見ながらビルドしたやつ。(redmine_agile入れるのにrmagickが入らなくてビルドした）
https://blog.jicoman.info/2017/06/amazon_linux_imagemagick_rpm/

・プラグインとfileと設定を新しい方にコピーしておく

```
# cp -rp /var/www/redmine/plugins/* redmine-3.4.8/plugins/
# rm -rf redmine-3.4.8/plugins/redmine_wiki_extensions
# rm -rf redmine-3.4.8/plugins/redmine_work_time
# mv redmine_wiki_extensions redmine-3.4.8/plugins/
# mv redmine_work_time-0.4.0 redmine-3.4.8/plugins/
# mv easy_gantt redmine-3.4.8/plugins/
# mv redmine_theme_changer-0.3.1 redmine-3.4.8/plugins/
# git clone https://github.com/sciyoshi/redmine-slack.git redmine_slack
# mv redmine_slack redmine-3.4.8/plugins/
# git clone https://github.com/simplethings/redmine-msteams.git redmine_msteams
# mv redmine_msteams redmine-3.4.8/plugins/
# git clone https://github.com/simplethings/redmine-msteams.git redmine_msteams
# mv redmine_issue_templates redmine-3.4.8/plugins/
# git clone https://github.com/peclik/clipboard_image_paste.git
# mv clipboard_image_paste redmine-3.4.8/plugins/
# mv redmine_agile redmine-3.4.8/plugins/

$ cp -p /var/www/redmine/config/configuration.yml redmine-3.4.8/config/
$ cp -p /var/www/redmine/config/database.yml redmine-3.4.8/config/

##添付ファイルコピー
cp -pr /var/www/redmine/files redmine-3.4.8/

##apacheユーザをオーナーにしておく
# chown -R apache. redmine-3.4.8
```

・まずバックアップ

マネコンからAMIを取得

```
<myhostname>-ami-20190125
ami-xxxxxxxxxxxxxx
```

```
# cp -rp /var/www/redmine{,-3.2}
```
rootの秘密のmy.cnfを設置する（バックアップ用

```
# vi /root/.my.cnf
[mysql]
user=root
password=
[mysqldump]
user=root
password=

# chmod 400 /root/.my.cnf 
# DB_SRC_DIR=/opt/bin
# DB_ARCIVE=${DB_SRC_DIR}/redmine_$(/bin/date +%Y-%m-%d)_bf_verup.gz
# mysqldump --all-databases --default-character-set=utf8 --events | gzip > ${DB_ARCIVE}
```


・とりあえずImageMagickの入れ替えから

```
% yum install bzip2-devel freetype-devel libjpeg-devel libpng-devel libtiff-devel giflib-devel perl-devel ghostscript-devel libwmf-devel jasper-devel libtool-ltdl-devel libX11-devel libXext-devel libXt-devel lcms2-devel fftw-devel jbigkit-devel
% yum install libwebp-devel --enablerepo=epel --disablerepo=amzn-main
% yum install djvulibre-devel openjpeg2-devel --enablerepo=epel

% cat << '_EOT_' > /etc/yum.repos.d/CentOS-Base.repo
[base]
name=CentOS-6 - Base
mirrorlist=http://mirrorlist.centos.org/?release=6&arch=x86_64&repo=os
gpgcheck=1
enabled=0
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6
_EOT_

% yum install OpenEXR-devel librsvg2-devel --enablerepo=base

# yum remove ImageMagick*
# cd /usr/local/src/imagemagick
# rpm -Uvh ImageMagick-*
```

・rubyを入れ替える

```
# rpm -qa|grep ruby
rubygem20-rdoc-4.2.2-1.43.amzn1.noarch
rubygems20-2.0.14.1-1.29.amzn1.noarch
ruby20-devel-2.0.0.648-1.29.amzn1.x86_64
ruby-2.0-0.3.amzn1.noarch
rubygem20-psych-2.0.0-1.29.amzn1.x86_64
rubygem20-json-1.8.3-1.51.amzn1.x86_64
ruby20-libs-2.0.0.648-1.29.amzn1.x86_64
ruby20-2.0.0.648-1.29.amzn1.x86_64
ruby-devel-2.0-0.3.amzn1.noarch
rubygem20-bigdecimal-1.2.0-1.29.amzn1.x86_64
ruby20-irb-2.0.0.648-1.29.amzn1.noarch

# yum remove ruby*
# yum install ruby24 ruby24-libs ruby24-devel ruby24-irb \
rubygem24 rubygem24-io-console rubygem24-rake rubygem24-rdoc rubygem24-xmlrpc \
rubygem24-json rubygem24-psych rubygem24-bigdecimal \
aws-amitools-ec2 vim-enhanced
# ruby --version
```

環境変数を追加
http://source.hatenadiary.jp/entry/2014/01/27/202806

```
# export RAILS_ENV=production
# vi ~/.bashrc
export RAILS_ENV=production
```
bundlerとか入れる

```
# mv /usr/local/src/redmine-src/redmine-3.4.8 /var/www/
# cd /var/www/redmine-3.4.8
# gem update --system
# gem search ^bundler$ --all
# gem install bundler -v 1.17.3
# mv Gemfile.lock ../   #失敗したときだけやるやつ
# bundle install
```

まだjsonがロードできないと言われるので回避策

```
# vi Gemfile.local 
gem 'json'
https://github.com/tdiary/tdiary-core/issues/510
```

とりあえず入ったっぽいのでバージョン確認

```
# ruby ./bin/about 

sh: darcs: command not found
sh: hg: command not found
sh: bzr: command not found
Environment:
  Redmine version                3.4.8.stable
  Ruby version                   2.4.5-p335 (2018-10-18) [x86_64-linux-gnu]
  Rails version                  4.2.11
  Environment                    production
  Database adapter               Mysql2
SCM:
  Subversion                     1.8.15
  Git                            2.7.4
  Filesystem                     
Redmine plugins:
  clipboard_image_paste          1.13
  easy_gantt                     1.12
  redmine_agile                  1.4.7
  redmine_issue_templates        0.2.1
  redmine_msteams                0.2.0
  redmine_slack                  0.2
  redmine_theme_changer          0.3.1
  redmine_wiki_extensions        0.8.2
  redmine_work_time              0.4.0
  view_customize                 1.1.2
```

シークレットトークンをつくる（ひつような作業）

```
# bundle exec rake generate_secret_token
```

ruby上げてしまったのでpassengerいれなおす
https://qiita.com/katsuyuki/items/5ba39293f16f5d6cbb56

```
# gem install passenger
# mv /etc/httpd/conf.d/passenger.conf{,.ruby20}
# passenger-install-apache2-module
# vi /etc/httpd/conf.d/passenger.conf
# diff /etc/httpd/conf.d/passenger.conf{,.ruby20}
1c1
< LoadModule passenger_module /usr/local/share/ruby/gems/2.4/gems/passenger-6.0.1/buildout/apache2/mod_passenger.so
---
> LoadModule passenger_module /usr/local/share/ruby/gems/2.0/gems/passenger-5.0.27/buildout/apache2/mod_passenger.so
3,4c3,4
<   PassengerRoot /usr/local/share/ruby/gems/2.4/gems/passenger-6.0.1
<   PassengerDefaultRuby /usr/bin/ruby2.4
---
>   PassengerRoot /usr/local/share/ruby/gems/2.0/gems/passenger-5.0.27
>   PassengerDefaultRuby /usr/bin/ruby2.0
```


・mysqlのバージョンを5.5から5.7に上げる

```
# service mysqld status
# service mysqld stop
# service mysqld status
# rpm -qa|grep -i mysql
mysql55-5.5.46-1.10.amzn1.x86_64
perl-DBD-MySQL55-4.023-5.23.amzn1.x86_64
mysql-5.5-1.6.amzn1.noarch
mysql-config-5.5.46-1.10.amzn1.x86_64
mysql55-server-5.5.46-1.10.amzn1.x86_64
mysql55-devel-5.5.46-1.10.amzn1.x86_64
mysql-server-5.5-1.6.amzn1.noarch
mysql55-libs-5.5.46-1.10.amzn1.x86_64
mysql-devel-5.5-1.6.amzn1.noarch

# yum remove mysql*
# yum install mysql57 mysql57-devel mysql57-server postfix perl-DBD-MySQL
# service mysqld start
# mysql --version
mysql  Ver 14.14 Distrib 5.7.24, for Linux (x86_64) using  EditLine wrapper
# mysql
# mysql_upgrade -u root -p
# service mysqld restart
# service mysqld status
# DB_SRC_DIR=/opt/bin
# DB_ARCIVE=${DB_SRC_DIR}/redmine_$(/bin/date +%Y-%m-%d)_af_verup.gz
# mysqldump --all-databases --default-character-set=utf8 --events | gzip > ${DB_ARCIVE}
```

とりあえずログインできるので以下で言われてる問題はまあ大丈夫。
https://qiita.com/ftomo100/items/555236cf0e8e9d3a3b0e

upgradeしないとmysqldumpに失敗するのでしましょう。
https://qiita.com/ogrew/items/9d75864ab21c06bb27de

・マイグレートする

```
# bundle exec rake db:migrate RAILS_ENV=production

##既知のやつ。
== 20161220091118 AddIndexOnIssuesParentId: migrating =========================
-- add_index(:issues, :parent_id)
rake aborted!
StandardError: An error has occurred, all later migrations canceled:

Index name 'index_issues_on_parent_id' on table 'issues' already exists

# mysql
mysql> use db_redmine
mysql> show index from issues;
mysql> ALTER TABLE issues DROP INDEX index_issues_on_parent_id;
mysql> quit

# bundle exec rake db:migrate RAILS_ENV=production

# bundle exec rake redmine:plugins:migrate RAILS_ENV=production

# bundle exec rake tmp:cache:clear RAILS_ENV=production
```
きりかえてapacheリスタートして反映。

```
# cd ../
# mv redmine{,.bk}
# ln -s /var/www/redmine-3.4.8 /var/www/redmine 
# ll
# service httpd restart
```

なんかpassengerのエラーが出たがELBのヘルスチェック用のファイルが足らなかった模様。

```
#  tail -30 /var/log/httpd/error_log
App 18698 output: 
App 18698 output: Started GET "/healthcheck.html" for 192.168.1.139 at 2019-01-25 19:51:30 +0900
App 18698 output: 
App 18698 output: ActionController::RoutingError (No route matches [GET] "/healthcheck.html"):

# find /var/www -name healthcheck.html -type f
/var/www/redmine-3.2/public/healthcheck.html
/var/www/redmine.bk/public/healthcheck.html

# cp /var/www/redmine.bk/public/healthcheck.html /var/www/redmine/public/
# service httpd restart
```

で、ELBでInserviceになるとみられるようになる。

あと管理から色々設定を弄り回す
→追加したプラグイン新規プロジェクトでデフォルト有効化
　（既存はプロジェクト１つだけ根こそぎプラグインを有効化しておいた）
→gravaterの画像が個人アイコンに反映されるようにした
→メールAPIを有効化

新規追加したプラグインの機能
・issueのテンプレート設定できる
・ドラッグ設定できるカンバン機能
・ドラッグ設定できるガントチャート
・slack連携通知
・teams連携通知
・クリップボード画像コピペ
・個人ごとにテーマ追加変更可能に

バージョン上げたプラグイン
・wiki_extensions
・work_time

3つしかプラグインなかったところに8個くらい追加したので結構変わったはず

問題でてなさそうで更新してくれてるっぽいのでテスト機を停止して週明けに消す。
テスト機作る用の旧いAMIとそのsnapshotは即刻消す。→消した。

teams連携設定について、
webhookの初回の構成方法は、
・・・（そのたのオプション）クリック＞コネクタ＞IncommingWebhookの構成ボタンを押す＞名前を入力しイメージアイコンをアップして作成
＞でてきたURLをコピー＞Redmine側の、管理＞プラグイン設定＞msteamsの設定＞コピーしといたURLを貼り付ける・保存
で完了。構成済みのURLもいつでも確認可能。

テーマを追加してみる
→３つくらい追加してみました。/var/www/redmine/public/themesに置いてapacheリロードくらいで使えるように。
https://qiita.com/y_hokkey/items/7c02a3af319b353136d5

このへんなどRedmineテーマでググると色々出てくるので適当に置いたらよさそう。
https://codelab.website/redmine-favorite-themes/
http://www.redmine.org/projects/redmine/wiki/Theme_List