今日も見に来てくださってありがとうございます。石川さんです。
このサイト、WordPressで作られています。管理画面にダッシュボードというのがあるのですけど、使っているプラグインやテーマが古くなると、更新してください、と教えてくれる優れものです。先日も更新してください、と言われましたので、しゅるっと更新しました。更新についても何か書こうと思いましたが、簡単すぎて記憶に残っていません。
更新後、ダッシュボードを見ていて、ふと、気づきましたが、何やら問題がありそうです。
まったく意味が分かりませんが、5項目ほど改善が必要な項目があるそうです。見てみましょう。左下の「サイトヘルス画面」をクリックしてみます。
なんと、WordPressさん、こんな機能まであるのですね!すばらしい。おすすめの改善はいいとしても、致命的な問題は捨て置けませんね。ということで、サイトのPHPのバージョンアップ、したいと思います。
しかし、どうやるのでしょうかねぇ。ぼくのサイト、GoogleさまのGoogle Cloud Platform (GCP)のCompute Engineというサービスを利用していまして、もう一年以上前にセットアップしたので記憶が、、、薄いなぁ。確か、MarketPlaceに用意されていたWordPress用のイメージをVMのインスタンスとしてDeploy、みたいな感じだったような。当時よくわからず、セットアップしたら、Googleさまの方で勝手に最新版に更新してくれるなんてすごいよねぇ、と、勘違いしておりました。いや、自分でやんなきゃね。
ということで、手順は以下の通り進めていきましょう。
- まず、自分の使っているサーバーのOSを調べる。わからなければ調べ方を調べる。
- そのOSのPHPの更新方法を調べる。
- 更新する前にバックアップを取得。そのためにバックアップの取り方を調べる。
- PHPを最新版にアップデートする。
- 動作確認。正常に動作していれば、バックアップを削除して完了。
- 正常に動作していなければ、バックアップを戻して、ふりだしに戻る。
と、いう感じでしょうか。計画通りにうまく行くといいのですけど。
サーバーOSの確認~バックアップ
とりあえず、GCPのダッシュボードを見てみましょう。そこからCOMPUTE ENGINEに移動して、このサイト用のVMインスタンスの情報を見てみます。ええと、OSのバージョンは特に記載されていませんでしたね。と、いうことでSSHを使ってログインしましょう。Linuxマシンですので、バージョン確認方法をGoogle先生に教えてもらいましょう。このサイトが出てきました。最初に三つのやり方が示されていましたので、簡単に一つ目を実行してみました。
prompt $ cat /etc/os-release PRETTY_NAME="Debian GNU/Linux 9 (stretch)" NAME="Debian GNU/Linux" VERSION_ID="9" VERSION="9 (stretch)" ID=debian HOME_URL="https://www.debian.org/" SUPPORT_URL="https://www.debian.org/support" BUG_REPORT_URL="https://bugs.debian.org/" prompt $
OSは、Debian 9ということですね。
そして、次はPHPのバージョンアップですが、今のバージョンを調べるコマンドは、php -vということですので実行してみます。
prompt $ php -v PHP 7.0.33-0+deb9u7 (cli) (built: Feb 16 2020 15:11:40) ( NTS ) Copyright (c) 1997-2017 The PHP Group Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies with Zend OPcache v7.0.33-0+deb9u7, Copyright (c) 1999-2017, by Zend Technologies prompt $
PHPのバージョンは、7.0.33-0+deb9u7ということだそうです。アップグレードの前にバックアップを取ろう。Google Cloud Platformは、スナップショットという機能で、バックアップできるようです。Compute Engineでスナップショットを選択して、スナップショットの作成をクリックします。
ソースディスクにWordPressのVMを選択して、作成クリックすれば簡単にできそうですね。ソースディスクを選ぶとソースディスクのロケーションに基づいて、勝手にロケーションが決まりました。たくさん管理している人は、ラベルを追加するようですが、ぼくはこのサイトだけしか管理していないので、そのままで「作成」をクリックします。しばらく時間がかかって、スナップショットが出来上がりました。スナップショットはバックアップ目的で、スケジューリングして定期的に実行することが推奨されているようですね。初めて知りました。最新の状態が残っていれば大丈夫、と、思っていたので深く調べてはいなかったのですが、基幹システムを運用する場合などは、必須ですね。
1~2分ほどでしょうか、文章を書いているうちに30GBytesのバックアップ終了しました。さすがGCP、早いですねぇ!
PHPのバージョンアップ
このページを参考に、バージョンアップを実行していきます。SSHで接続して、以下のコマンドを順番に実行していきます。
For Debian: $ sudo apt install apt-transport-https lsb-release $ sudo wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg # Download the signing key $ sudo sh -c 'echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list' # Add Ondrej's repo to sources list. $ sudo apt update $ sudo apt-get install php7.3
はい、無事にバージョンが変更されました。
$ php -v PHP 7.3.16-1+0~20200320.56+debian9~1.gbp370a75 (cli) (built: Mar 20 2020 14:36:13) ( NTS ) Copyright (c) 1997-2018 The PHP Group Zend Engine v3.3.16, Copyright (c) 1998-2018 Zend Technologies with Zend OPcache v7.3.16-1+0~20200320.56+debian9~1.gbp370a75, Copyright (c) 1999-2018, by Zend Technologies
しかし、WordPressのヘルスチェックでは、まだバージョンが更新されていませんね。再起動すれば、更新されるかな。GCPのコンソール画面からリセットを実行してみます。
おお、リセットを押したら、警告メッセージが!
なんと恐ろしいメッセージでしょう。「停止」の方がいいのかな。キャンセルして「停止」してみます。
恐ろしさはあんまり変わりませんねぇ。ま、仕方ありませんね。停止して、開始しましょう。無事に停止できましたので、起動しました。起動時には以下のようなメッセージが表示されます。いったい料金はいくら請求されるのでしょうか。ビビります。
さて、ヘルスチェックは、、、あらら、変わってませんね。いや、よく見ると違います。
コマンドを調べてみると、どうやらphp-cgiのバージョンのようです。
prompt $ php-cgi -v PHP 7.0.33-26+0~20200320.33+debian9~1.gbp746b8e (cgi-fcgi) (built: Mar 20 2020 14:33:44) Copyright (c) 1997-2017 The PHP Group Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies with Zend OPcache v7.0.33-26+0~20200320.33+debian9~1.gbp746b8e, Copyright (c) 1999-2017, by Zend Technologies prompt $
と、いうことで今度はこのページを参考にしてアップデートを実行してみます。ちょっと長いですが、以下の通り実行しました。
sudo apt-get install php7.3 php7.3-cli php7.3-cgi php7.3-fpm php7.3-gd php7.3-mysql php7.3-imap php7.3-curl php7.3-intl php7.3-pspell php7.3-recode php7.3-sqlite3 php7.3-tidy php7.3-xmlrpc php7.3-xsl php7.3-zip php7.3-mbstring php7.3-soap php7.3-opcache php7.3-common php7.3-json php7.3-readline php7.3-xml
すでにインストールされているものはスキップしてインストールできたようです。google-fluentdでエラーが起きたと言っていますが、まあ、よいでしょう。
prompt $ php-cgi -v PHP 7.3.16-1+0~20200320.56+debian9~1.gbp370a75 (cgi-fcgi) (built: Mar 20 2020 14:36:13) Copyright (c) 1997-2018 The PHP Group Zend Engine v3.3.16, Copyright (c) 1998-2018 Zend Technologies with Zend OPcache v7.3.16-1+0~20200320.56+debian9~1.gbp370a75, Copyright (c) 1999-2018, by Zend Technologies prompt $
バージョン上がりました!しかし、ヘルスチェックのバージョンは変わっておりません。再起動しましょうかねぇ。
と、いうことで再起動しましたが、状況が変わりません。ログを見ていると、google-fluentdというサービスかプロセスがエラーを出力していましたので、その関係でしょうか。とりあえず、今日は力尽きました。やっぱりサーバーのセットアップとかは、苦手分野だなぁ。誰か知ってる人、教えてくださーい!