脳みそスワップアウト

揮発性なもので。おもにPHPのこととか。

Redmine upgrade 3.3.2 -> 4.4.1

Redmine upgrade 3.3.2 -> 4.4.1

MySQL8を検証のために導入したらRedmineが動かなくなってしまった。
その流れでRedmineをバージョンアップしたので作業メモ

  • CentOS-6.10
  • Redmine 3.3.2 → 4.4.1
  • rbenv 0.4.0-192-g825de5d → 1.1.2-30-gc879cb0
  • ruby 2.2.3 → 2.6.6

Ruby

2.3.0以降が必要とのこと。

$ rbenv --version
rbenv 0.4.0-192-g825de5d

$ rbenv versions
* system (set by /usr/local/rbenv/version)
  2.2.3

$ ruby --version
ruby 1.8.7 (2013-06-27 patchlevel 374) [x86_64-linux]

rbenvの更新

$ rbenv --version
rbenv 0.4.0-192-g825de5d

$ cd /usr/local/rbenv/
$ sudo git pull

$ rbenv --version
rbenv 1.1.2-30-gc879cb0


$ cd plugins/ruby-build/
$ rbenv install --version
ruby-build 20151028-11-gbd22205

$ sudo git pull

$ rbenv install --version
ruby-build 20200401-9-g3ef704e

Ruby

$ sudo rbenv install 2.6.6
Downloading ruby-2.6.6.tar.bz2...
-> https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.6.tar.bz2
Installing ruby-2.6.6...
Installed ruby-2.6.6 to /usr/local/rbenv/versions/2.6.6

$ rbenv versions
* system (set by /usr/local/rbenv/version)
  2.2.3
  2.6.6

DBバックアップ

mysqldump -uroot -p redmine --databases --single-transaction --order-by-primary --quick --quote-names > redmine.sql.20200502.gz

解凍

$ cd /PATH/TO/redmine

### 古いソースに上書きさせる感じ
$ sudo cp -Rp redmine-3.3.2 redmine-4.1.1
$ sudo -u redmine:redmine tar -zxvf ~/local/src/redmine-4.1.1.tar.gz

外部ライブラリ取得

$ cd redmine-4.1.1

$ rbenv local
2.2.3

$ sudo rbenv local 2.6.6
$ rbenv local
2.6.6

$ export RAILS_ENV=production
$ sudo bundle update

DBマイグレーション

$ sudo bundle exec rake db:migrate
$ sudo bundle exec rake tmp:clear

unicorn設定

/etc/unicorn/redmine.conf

--- redmine.conf.20200502       2017-02-17 11:37:00.608028010 +0900
+++ redmine.conf        2020-05-02 06:56:24.813072793 +0900
@@ -2 +2 @@
-RAILS_ROOT=/var/www/vhosts/redmine.studiopoppy.com/redmine-3.3.2
+RAILS_ROOT=/var/www/vhosts/redmine.studiopoppy.com/redmine-4.1.1

起動

unicorn

$ sudo service unicorn start
/var/www/vhosts/redmine.studiopoppy.com/redmine-4.1.1: /etc/init.d/unicorn: line 37: kill: (3193) - No such process
Starting

$ ps aux | grep [u]nicorn
root      4485 14.8 13.8 439292 141088 ?       Sl   06:59   0:04 unicorn_rails master -c config/unicorn.rb -E production -D                                                      
root      4488  0.0 13.3 440316 136540 ?       Sl   06:59   0:00 unicorn_rails worker[0] -c config/unicorn.rb -E production -D                                                   
root      4490  0.0 13.3 440316 136540 ?       Sl   06:59   0:00 unicorn_rails worker[1] -c config/unicorn.rb -E production -D                                                   

nginx

$ sudo service nginx start

プラグイン更新

テーマ更新

$ cd public/themes/redmine-theme-gitmike/
$ sudo -u redmine git pull

さくらVPSの障害後、CentOS6のホストが起動しなくなった

Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)
Pid: 1, comm: swapper Not tainted 2.6.32-754.9.1.el6.x86_64 #1

ハードリセットして、grubを起動して 2.6.32-642.13.1.el6.x86_64 にしたら起動した。
VPSコンソールだとgrubの起動操作が慌ただしい。

ついでだから yum update して 2.6.32-754.29.1.el6.x86_64 にした。
これも起動した。

多段SSH

PC --(pubkey)--> 踏み台(bastion) --(password)--> リモート(remote1, remote2)

# 踏み台
Host bastion
  Hostname bastion.exapmle.com
  User pen
  PreferredAuthentications publickey
  IdentityFile ~/.ssh/bastion.id_rsa
  IdentitiesOnly yes
# 踏み台の先
Host remote1 remote2
  User www
  PreferredAuthentications password
  ProxyCommand ssh -W %h:%p bastion
Host remote1
  Hostname remote1.example.com
Host remote2
  Hostname remote2.example.com

cmd.exe からネットワーク設定

業務でノートPCを使っていて、固定IPアドレスだったり、DHCPだったり、現場のルールによって頻繁にネットワーク設定を変更しなければならない。
手間なのでバッチファイル化しておくといい。

固定IPアドレスの場合

netsh interface ipv4 set address "Wi-Fi" static 192.168.1.100 255.255.255.0 192.168.1.10
netsh interface ipv4 set dns "Wi-Fi" static 192.168.1.10 primary

DHCPの場合

netsh interface ipv4 set address "Wi-Fi" dhcp
netsh interface ipv4 set dns "Wi-Fi" dhcp

インタフェイス名はこれで調べられる

C:\work>netsh interface show interface

Admin State    State          Type             Interface Name
-------------------------------------------------------------------------
有効             接続             専用               VirtualBox Host-Only Network #4
有効             接続             専用               VirtualBox Host-Only Network #5
有効             接続             専用               VirtualBox Host-Only Network #6
有効             接続             専用               イーサネット
有効             接続             専用               vEthernet (DockerNAT)
有効             切断             専用               Wi-Fi
有効             接続             専用               vEthernet (Default Switch)

イマドキは netsh コマンドではなく、PowerShell を使ってやるのが主流かもしれない。
これは昔ながらの(Windows2000くらい?)方法だけどメモ。

phpunit/dbunit のフォーク

phpunit/dbunit 終了 の続き

phpunit8 で動くようにこそこそ手直しをしていたのだけど (iamapen/dbunit)

すでに先人がいるのを発見した。
とくに kornrunner/dbunit の方がリリースタグも打っていて丁寧。

オリジナルが 4.0 で開発停止だから、バージョンは 4.1 として、self.version で replace されている。
phpunit8 だけでなく、phpunit7 への後方互換も持たせている模様。

packagistにも登録されている(kornrunner/dbunit) ので、こちらを使った方がよさそう。

「本気でメンテしていくつもりがないならフォークはダメよ」という注意書きを読んで私は登録を断念した。