Ubuntu 14.04LTSを16.04LTSにアップグレードした
自宅機ではなくレンタルサーバー(さくらのVPS)なのだがUbuntu 14.04LTSを16.04LTSにアップグレードした。
デスクトップではなくサーバー機なのでGUIはなく遠隔のCUIでの作業だが、SSHでやろうとしたら警告がでたのでシリアルコンソールでやり直した。
SSHでやったら作業中に切断されちゃいそうだしね。
ググってアップグレードの仕方調べるとこの後いきなりアップグレードしてる記事が多かったのだが、LTSとLTS以外を指定する設定ファイルがあった記憶があるので更に調べたが、
/etc/update-manager/release-upgrades に設定がある。
元々13.10から14.04にアップしてたので書き換わってる可能性があるが、
このまま14.04からアップグレードすると14.10に1段階アップグレードになっちゃうので、
これでアップグレードすれば14.04の次のLTSである16.04に一発でアップグレードできる。
途中YNの選択とかでてくる。
ググったらこのコマンドに-dオプション付けてる例がでてきたが、-dオプションは開発版リポジトリから拾ってくるオプションと思うので付けないのが普通のやり方のはず。
このコマンドが入ってない場合もあるらしく、その場合は update-manager-core をインストールらしい。
サーバー機なのでサーバーソフトウェアがいろいろ入っているが、アップグレードの途中で phpmyadminの設定ダイアログみたいのがでてきたが突破できなくてキャンセルしたのだが、
最終的に「アップグレード成功だがエラーがあったよ」的なメッセージが出て、どうもmysql5.7へのアップグレードでトラブってたぽい。
phpmyadminがすんなりアップできなかったのもmysqlが原因だったぽい。
mysqlのアップグレードがエラーになった原因だが、mysqlの設定ファイル(/etc/mysql/my.cnf)に5.7で無効になった項目があって起動に失敗したぽい。
/var/log/mysql/error.log を確認すると、
/etc/mysql/my.cnf の方は、
5.7では、
log_slow_queries 以外にも5.7で無効になった項目があるようなので他の項目で同じようなエラーに遭遇することもあるかもしれない。
あと、innoDBはメモリ消費が大きいから今までMyISAMに最適化してDBアプリ作ってきてinnoDBは無効化してMySQL使ってきたが、
5.7ではinnoDBの無効化はできないらしい・・・
ちょっと設定とか見直す必要があるかも・・・
テーブルロックのMyISAMに最適化して開発してきたから、innoDBに変えるのはちょっと厳しい・・・
メモリ消費せずに共存できるのか?
[追記]
アップグレード後一度つながったはずだがwebminの更新か何かの後でwebminに繋がらなくなってた。
mysqltunerがエラーになったのとphpmyadminでステータスが見れなかった。
デスクトップではなくサーバー機なのでGUIはなく遠隔のCUIでの作業だが、SSHでやろうとしたら警告がでたのでシリアルコンソールでやり直した。
SSHでやったら作業中に切断されちゃいそうだしね。
$ lsb_release -d
まず現在のUbuntuバージョンを確認。
$ sudo apt-get update
パッケージデータベースのアップデート。ググってアップグレードの仕方調べるとこの後いきなりアップグレードしてる記事が多かったのだが、LTSとLTS以外を指定する設定ファイルがあった記憶があるので更に調べたが、
/etc/update-manager/release-upgrades に設定がある。
$ sudo nano /etc/update-manager/release-upgrades
元々13.10から14.04にアップしてたので書き換わってる可能性があるが、
#Prompt=lts
Prompt=normal
設定ファイルの末尾付近に上記2行があってltsの方がコメントアウトされてた。Prompt=normal
このまま14.04からアップグレードすると14.10に1段階アップグレードになっちゃうので、
Prompt=lts
#Prompt=normal
に書き換えた。#Prompt=normal
これでアップグレードすれば14.04の次のLTSである16.04に一発でアップグレードできる。
$ sudo do-release-upgrade
これでアップグレードが始まる。途中YNの選択とかでてくる。
ググったらこのコマンドに-dオプション付けてる例がでてきたが、-dオプションは開発版リポジトリから拾ってくるオプションと思うので付けないのが普通のやり方のはず。
このコマンドが入ってない場合もあるらしく、その場合は update-manager-core をインストールらしい。
サーバー機なのでサーバーソフトウェアがいろいろ入っているが、アップグレードの途中で phpmyadminの設定ダイアログみたいのがでてきたが突破できなくてキャンセルしたのだが、
最終的に「アップグレード成功だがエラーがあったよ」的なメッセージが出て、どうもmysql5.7へのアップグレードでトラブってたぽい。
phpmyadminがすんなりアップできなかったのもmysqlが原因だったぽい。
mysqlのアップグレードがエラーになった原因だが、mysqlの設定ファイル(/etc/mysql/my.cnf)に5.7で無効になった項目があって起動に失敗したぽい。
/var/log/mysql/error.log を確認すると、
2016-09-17T22:35:24.049693Z 0 [ERROR] unknown variable 'log_slow_queries=/var/log/mysql/mysql-slow.log'
2016-09-17T22:35:24.049725Z 0 [ERROR] Aborting
こんな感じでERRORが出てた。2016-09-17T22:35:24.049725Z 0 [ERROR] Aborting
/etc/mysql/my.cnf の方は、
log_slow_queries = /var/log/mysql/mysql-slow.log
という行があったが、ここが無効で起動失敗になってた。5.7では、
slow_query_log=ON
slow_query_log_file=/var/log/mysql/mysql-slow.log
こう書くらしいので変更したら起動した。slow_query_log_file=/var/log/mysql/mysql-slow.log
log_slow_queries 以外にも5.7で無効になった項目があるようなので他の項目で同じようなエラーに遭遇することもあるかもしれない。
あと、innoDBはメモリ消費が大きいから今までMyISAMに最適化してDBアプリ作ってきてinnoDBは無効化してMySQL使ってきたが、
5.7ではinnoDBの無効化はできないらしい・・・
ちょっと設定とか見直す必要があるかも・・・
テーブルロックのMyISAMに最適化して開発してきたから、innoDBに変えるのはちょっと厳しい・・・
メモリ消費せずに共存できるのか?
[追記]
アップグレード後一度つながったはずだがwebminの更新か何かの後でwebminに繋がらなくなってた。
$ sudo systemctl restart webmin
したら繋がるようになった。mysqltunerがエラーになったのとphpmyadminでステータスが見れなかった。
$ sudo mysql_upgrade -u root -p
でmysqlを更新する必要があるぽい。-uオプションでコマンドにユーザー名書かないとダメだった。
これでmysqlをrestartしたらphpmyadminの方は問題なくなった。
mysqltunerの方は何かエラーが出るが結果は表示される状態。
apacheがpreforkになってたのでworkerに変えた。以前からだが何故かeventは起動しない。
phpmyadminをアップした影響だと思うがapacheモジュールでphp7が有効になってた。基本使わないのにmod_phpは危険なのでphpはcgi版にしてphpmyadminn以外で無効にしてる。
まだ何かありそう・・・