Lightsail 上に作成したWordPressインスタンスのPHPをバージョンアップする

 この記事では、Lightsail 上に構築したWordPress環境(内部ではUbuntu、bitnamiを使用)でPHPのバージョンを上げるための方法を記載します。なお、この方法では現時点ではPHP7.3までしかバージョンを上げることが出来ませんのでご注意をお願いいたします。

WordPressのサイトヘルスステータスでPHPバージョンが指摘される

 そもそもなぜ PHP のバージョンを上げるかと言うと、WordPressのサイトヘルスステータスで下記のようにPHPのバージョンが古いことが指摘されるようになったからです。

サイトがPHPの古いバージョン(7.2.13)を実行しており、更新をおすすめします

 また、たとえここで指摘されなかったとしても、PHP7.2系は2020年11月30日でセキュリティサポートが停止されますから、アップデートしておくに越したことはありません。

bitnami でインストールされた WordPress のPHPバージョンアップは難しい

 PHPやMySQLのバージョンアップであれば、Lightsailのインスタンスのディストリビューション(ubuntu)に合わせて所定のアップデート作業を行えばよいと考えていましたが、bitnamiでインストールされた PHP は、通常の構成ではなくbitnami用のディレクトリ構成となっており、アップデートするのであれば bitnami 丸ごと最新バージョンに上げる必要がありそうでした。それはそれで面白そうではあるので検証環境で試してみたいのですが、今回は確実な方法を取ることとしました。

Lightsailの新インスタンスを立ち上げ、WordPressのバックアップを復元する

 今回実施するのは、現行のインスタンスでコンテンツとDBのバックアップを取得しておき、それを新しいLightsailのインスタンスで復元する、という方法です。bitnamiの最新バージョンインストールを試すにせよ、検証環境の立ち上げは必要となるので、それならば別インスタンスへのバックアップによる移行を検証しつつ、バージョンアップ(新しいインスタンスでは各種ツールのバージョンが更新されている)を狙っています。

現行インスタンスでWordPressのコンテンツとDBをバックアップ

 まずは現行のインスタンスにSSHログインし、コンテンツとDBをバックアップします。

 なお、MySQLのrootユーザーのパスワードは

$ cat ~/bitnami_application_password

で確認できますので、確認しておきます。こちらのパスワードを使用してMySQLサーバーへログイン後、DB名を確認してDBをバックアップします。

バックアップのためのコマンドは

$ mysqldump --single-transaction -u root -p bitnami_wordpress > ~/bitnami_wordpress.dump

です。

なお、WordPressのコンテンツ側のバックアップは

$ tar acvf wp.tar.gz /opt/bitnami/apps/wordpress/htdocs/

で可能です。作成された wp.tar.gz と bitnami_wordpress.dump は、SCPなどでローカルに保存しておきます。続いて新しいインスタンスを立ち上げます。

新しいインスタンスにSSHログインして、PHPバージョンを確認してみましょう。

PHPが7.3に更新されていることが分かります。

バックアップからWordPressを復元する

 WordPressをバックアップから復元しますが、DBユーザーとして既に存在するWordPressのデフォルトユーザーをそのまま使用するため、予めWordPressのユーザーパスワードを控えておきます。

$ cat /opt/bitnami/apps/wordpress/htdocs/wp-config.php | grep DB_PASSWORD

 wp.tar.gz と bitnami_wordpress.dump を任意の場所(今回はホームディレクトリ)にSCPなどで格納しておき、展開とDBリストアを行います。

$ cd /
$ sudo tar ~/xvf wp.tar.gz
$ mysql -u root -p bitnami_wordpress < ~/bitnami_wordpress.dump

 上記コマンドでwp-config.php が上書きされてしまっていますので、控えておいたDBユーザーのパスワードを再度記載しておきます。

$ vim /opt/bitnami/apps/wordpress/htdocs/wp-config.php

 ここまで実行すれば、新しいインスタンス上でWordPressが動作するはずです。あとはDNSのAレコードなどを書き換えて、新インスタンスとドメインを紐づければ移行が完了します。なお、Aレコード変更前に直接新インスタンスのIPを指定するなどしてアクセスすると、Jetpackがセーフモードで実行されてしまいますが、これは別ドメインでJetpackが実行されているためで、Aレコードの書き換えが反映され、移行前のURLで新インスタンスへアクセスすれば解消されます。

 また、コンテンツかDBどちらかのバックアップ、復元が失敗するなどしてDBとWordPressが不整合となっていると、下記のような画像が表示されることがあるので注意してください。この場合は、復元手順にミスがないか確認し、ミスが無いのであればバックアップの作成からやり直すのが良いです。

まとめ

 いかがでしたでしょうか?このほか、bitnamiのロゴを消したり、証明書を旧インスタンスからコピーしたり、証明書更新用のLet’s Encrypt用cronタブを再設定したりと、面倒なこともありますので、次回はスナップショットからの検証環境立ち上げと、bitnamiの最新バージョンインストールによるバージョンアップが可能か、を検証していきたいと思います。