サイトのHTTPS化が完了した勢いで、この間アップグレードしたばかりだけれど、16.04.01 LTSにアップグレードした。一番の強敵はPHP5からPHP7.0にアップグレードされることなので、HTTP回り(Apache2.4/PHP/MySQL)の設定は丸々バックアップを取るも、MySQLのDBは特にバックアップせず。WordPressのDBは先のHTTPS化で既に作成済。まずは既存のシステムを最新にしてから、お決まりのコマンドでアップグレードを開始した;
$ sudo apt update $ sudo apt upgrade $ sudo systemctl reboot (...) $ sudo do-release-upgrade
途中、設定ファイルの適用可否を聞かれることがあったがアップグレード自体は20分位で終了した。と言っても正常終了ではなく、こんな感じでMySQLサーバの起動に失敗していたけど
:
Errors were encountered while processing: mysql-server-5.7 mysql-server Error in function: (...) Could not install the upgrades The upgrade has aborted. Your system could be in an unstable state. A recovery will run now (dpkg --configure -a). Setting up mysql-server-5.7 (5.7.13-0ubuntu0.16.04.2) ... invoke-rc.d: Unit mysql.service is masked Renaming removed key_buffer and myisam-recover optoins (if present) ERROR: Unable to start MySQL server: 2016-09-04T01:20:22.230428Z 0 [ERROR] unknown variable 'myisam-recover=BACKUP' 2016-09-04T01:20:22.234640Z 0 [ERROR] Aborting (....)
こちらはMySQL-5.7になってオプション名が変更になり、mysqld.cnfを修正する必要があったことが原因。アップグレード中の設定ファイル適用可否の質問には全て(N)で答えていたのが影響したようで、MySQLは下位バージョンとは互換性がないようだ(という情報をリリースノートに期待しているんだけど・・・)。ということで、設定ファイルを修正したらあっさり起動した。ここで再びaptコマンドからupgradeを実行して、やっと16.04.01 LTSの環境になった。
で、ここからが重要で、ウェブサービスを一つ一つ確認してくと、いろいろ問題がでてきたが代表的なものはこんな感じ。全てPHP7.0になったことが原因:
- MediaWikiが例外発生で起動しない
[b6d53246] 2016-09-04 02:45:20: Fatal exception of type MWException
- 城攻め訪問記でフォト集として使っていたO.r.i.g.i.n.a.l.が何も表示されなくなった
正直、PHPなんて「守備範囲外」なのでよくわからない。そのため最初はPHP5.6にダウングレードしようかと思ったけど、結局はいつか解決しないといけないので今やることにした。
1.の問題はデバッグログを出力するようにして実行時のバックトレースを見ると、どうやらキャッシュタイプが問題のようだった。PHP7.0になってphp-xcacheが提供されないことが原因。ということで、ここはキャッシュを無効することで解決した。
2.の問題は、error.logとPHP7.0への移植の際の注意点を見ながらDEPRECATEDなコードを一つ一つ修正した。まぁ、もともとが相当古いコードということもあって、PHP5時代からいろいろNOTICES(Warnings)が出ていたのだけれど。そういうこともあり、併せて他にも危なそうなコードを修正しておいた。
ということで半日がかりの作業になってしまったけれど、LTS+HTTPS環境の構築が完了で、やっと肩の荷が下りたといったところ:
$ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 16.04.1 LTS Release: 16.04 Codename: xenial