Linuxサーバ

Ubuntu14.04から16.04へアップグレードしたお話

Ubuntu14.04のサポート期限が迫ってきた…

2019年4月をもってサポート期間が終了するUbuntu14.04。その前に自宅サーバのOSをなんとかしなきゃ…と色々考えてきたんですが最終的に「現行のサーバOSをアップグレードする」で落ち着きそうです。

 

ただ、一足飛びで14.04→18.04とはいかないようなので段階を踏んでまずは16.04へのアップグレードを行います。

 

14.04から16.04へアップグレードして大きく変わること

以前12.04から14.04へアップグレードするときに深く考えず実行した結果サーバとしての機能がほとんど停止、心が折れてOS再インストールを行うハメになるという悲しい過去があるので、事前にある程度変更点を調べてみることに。自分が使う機能の中で影響がありそうなものを挙げるなら

  • PHPが5系から7系へ!
  • MySQLが5.5か5.7へ!

WordPressを動かすにあたってこの2点は大きな障害になりそうな予感がします。特にPHP…。

 

※メールも動くかどうか心配ですが、とりあえず止まったところでそこまで困るものでもないので割愛。

 

do-release-upgradeにてアップグレード実施!

以下のコマンドにて16.04へのアップグレードを実行します。

 

# apt-get update
# apt-get upgrade ※終了後に再起動を求められたら実施しておく
# do-release-upgrade

 

 

あとはしばらく画面とにらめっこ。いくつかバージョンが変わったソフトについて「設定ファイルは既存のものを使う?それとも最新版のデフォルトを有効にする?」みたいな事を聞かれますが、基本的に既存のものを生かして進めました。

 

アップグレードが終了して再起動を済ませたらUbuntu自体はスムーズに起動。が、予想通り各種サーバとしての機能は色々と停止している状態に。ここからが本番です。

 

PHP7が動くようにする

まずはブラウザで当サイトを表示させてみるとPHPが動作していない様子。PHPのコードがそのまま表示されてしまってます。ということはApache2は普通に動いてそうですね。

 

phpinfo()を動かしてみても何も表示されません。明らかにPHP7に変わった影響でしょう。調べていくと以下のパッケージを新たに導入して設定しないといけない様子。

 

# apt-get install php-cgi libapache2-mod-php php-common php-pear php-mbstring
# a2enconf php7.0-cgi
# sytemctl apache2 restart

 

 

この状態でphpinfo()を動かすと無事表示されたのでPHP7の動作はオッケー。

 

MySQLとの連携が上手くいかない?というか動いてない?

ブラウザ上の当サイトを更新してみるとなんとでかでかと「データベース接続確立エラー」と表示されるじゃないですか…

 

phpinfo()のmysqliの辺りを見ていくとどうやらソケットの設定がおかしい様子。本来なら「/var/run/mysqld/mysqld.sock」と入っているべきところが「no value」になっています。こいつが原因だろうと思い設定ファイルを編集します。

 

# vi /etc/php/7.0/apache2/php.ini
↓以下を追記
socket = "/var/run/mysqld/mysqld.sock"
:wqで保存して終了
# systemctl apache2 restart

 

 

しかしこれでもデータベースに繋がりません。調べると次の可能性として浮上してきたのは「ソケットが壊れてる」または「ソケットがない」のいずれか。私の場合調べるとソケットが存在しませんでした。

 

というかそもそもMySQLが動いてない様子。

 

# /etc/init.d/mysql start

と入力するとなんとMySQLがインストールされてないとか。なんじゃそりゃ…と思いつつインストールしてみます。

# apt-get install mysql-server

 

 

あとは必要なものが一緒にインストール。しばらく眺めていると5.5からデータを移行している様子。インストール終了後にMySQLを起動すると問題なく動きました。

 

またもPHPのトラブル?プラグインが悪さしてる?

ソケットも確認して今度こそ!と思いchee-s.netに接続すると今度はHTTP500エラーが発生…

 

調べていくとテーマやプラグインがPHP7に対応してない可能性あり!ということでwp-config.phpを開きdefine ('WP_DEBUG', false);→define ('WP_DEBUG', true);へ修正してデバッグモードにて動かします。

 

するとプラグイン2個が原因で止まっている事が判明。それら二つを別のディレクトリへ退避させてみるとようやく繋がるようになりました。

 

その他発覚している不具合

今の時点で把握できているのは

  • メールの送受信ができない
  • Zabbixでのサーバ監視が動いていない
  • Redmineも動いてない

といったところです。死ぬほど困るようなものではないですがとりあえずメールは早く直さないといけません。

 

もしかしたら設定ファイルを削除→最新のデフォルトをコピーして設定し直すかもしれません。このあたりは改めて投稿したいと思います。

 

一通り動くようになったら次は本番の18.04へのアップグレードです。

オススメの記事

-Linuxサーバ
-,