AWS LightsailのWordPress移行アイキャッチ画像

これまで「Amazon Route 53でLet’s Encryptの証明書発行がうまくいかなかった場合の対処法」の記事でこのWeb サイトがAWS のLightsail で運営していることを書きました。

Lightsail では WordPress そのものではなくBitnami というパッケージ管理のソフトウェアが入っているため、便利なコマンドでWordPress 環境を起動・停止したりことができます。また、WordPress やプラグインのアップデートも管理画面からできるようになっているので、WordPress の使い勝手はそのままです。

どんなときにLightsail のインスタンスを移行する必要があるの?

その反面、Bitnami は内部で使用するPHP のバージョンアップがサポートされていません。Lightsail のインスタンスも結局はLinux なので、新しいバージョンのPHP を入れることもできなくはないのですが、Bitnami が動作保証したPHP のバージョンと違ってしまうので、自己責任になってしまいます。

一方で古いPHP をそのまま使い続けるわけにもいきません。WordPress のバージョンアップでPHP のサポートされるバージョンも変わってくるため、2年ぐらい運用しているとWordPress のバージョンアップをするには対応するPHP へバージョンアップすることが要求されます。

また、Lightsail のインスタンスのスペックを変えたいときも移行が必要です。Lightsail の最小スペックの1 vCPU、RAM が0.5 GB だと月々の料金が3.5 ドルですが、やはりスペック、特にメモリーが足りないので投稿一覧を表示するなどのデータベース処理で固まることもしばしばありました。さらにはアクセスが集中しているわけでもないのにWeb サーバーがダウンしてJetpack からお知らせが来ることもあったのですが、ひどいときは1日に3回も停止していました。スペックを一つ高い1vCPU、RAM 1 GB、月額5ドルのインスタンスにするだけでこうしたダウンタイムを避けられるなら悪くないと思います。

ここではAWS Lightsail のWordPress から同じくAWS Lightsail のWordPress へと移行する手順を紹介したいと思います。

All-in-One WP Migration プラグインを使うと便利

WordPress のデータベースはMySQL なので、MySQL をSQL で操作する方法でもデータ移行はできますが、All-in-One WP Migration プラグイン を使うと便利です。無料でも使えるプラグインですが、有料だとインポートする容量を増やしたりすることができます。ただ、設定ファイルをコマンドラインで変更すれば良いので私は無料のもので実現できています。

All-in-One WP Migration で移行元のDB のエクスポート

まず、移行元のWordPress で、管理画面の「All-in-One WP Migration」のメニューから「エクスポート」→「ファイル」を選択します。保存先を選べますが、ローカルPC にダウンロードします。

All-in-One WP Migrationプラグインを使ったデータベースのエクスポート
All-in-One WP Migrationプラグインを使ったデータベースのエクスポート

エクスポートしたファイルはWeb サイトの規模次第ですが、数十 MBから数GB ぐらいになります。ファイル名は「ホスト名-20230417-xxxxxx-xxxxxx.wpress」と拡張子「.wpress」のファイルです。

新しいLightsail インスタンスの作成

続いてAWS Lightsail で新しいWordPress インスタンスを作成します。

デフォルトのログインパスワードを取得

新しいインスタンスにAWS Lightsail のSSH コンソールでログインし、WordPress にログインするユーザー名「user」のパスワードを取得します。

cat bitnami_application_passwordCode language: Bash (bash)

PHP のアップロード最大サイズを変更

PHP のデフォルトのファイルアップロードサイズが80MB となっているため、これではダウンロードした移行元の「.wpress」ファイルをアップロードできません。作成したインスタンスにAWS Lightsail のSSH コンソールでログインし、PHP のファイルアップロードの最大サイズを変更します。

sudo vi /opt/bitnami/php/etc/php.iniCode language: Bash (bash)

で「Maximum」などで検索し、以下の2つの行を変更します。

【変更前】

; Maximum size of POST data that PHP will accept.
post_max_size = 80M
; Maximum allowed size for uploaded files.
upload_max_filesize = 80M

【変更後】.wpress ファイルが2 GB未満のとき

; Maximum size of POST data that PHP will accept.
post_max_size = 2048M
; Maximum allowed size for uploaded files.
upload_max_filesize = 2048M

移行先のBitnami のサーバーを再起動して反映させます。

sudo /opt/bitnami/ctlscript.sh restartCode language: Bash (bash)

WordPress の管理画面から.wpress ファイルをアップロード

続いて、移行先のWordPress の管理画面から作業をおこないます。
http://IPアドレス/wp-admin/ のURLを開き、ユーザー名「user」、パスワードは先ほど取得したものでアクセスします。

もし移行前のWordPress のバージョンと新規インスタンスで作ったWordPress のバージョンが違うとインポートがうまくできないので、その場合は新規インスタンスのWordPress のバージョンを上げたりするなどして移行元と同じバージョンにしてから実施してみてください。

All-in One WP Migration のプラグインをインストールし、「All-in One WP Migration 」→「インポート」から移行元の.wpress ファイルをアップロードし、データベースを移行します。

移行すると、移行先のWordPress の管理画面にアクセスするパスワードが移行元のパスワードと同じものに変更されるので要注意です。

静的IP アドレスのアタッチ

続いて、グローバルIP を静的アドレスにします。

移行元のLightsail インスタンスにアタッチされていた静的IP アドレスを、「ネットワーキング」タブの「パブリックIP」から「デタッチ×」のリンクをクリックしてデタッチします。続いてこのIP アドレスを移行先のLightsail インスタンスにアタッチし直します。

SSL の有効化

続いてHTTPS の通信にするためSSL を有効化します。私は今までAWS のドキュメントを見てLet’s Encrypt の証明書を手動で取得し、3ヶ月に1回これまた手動で更新していました。証明書を差し替える際にはWeb サーバーを一度止めないといけないので、なるべくアクセスが少ない時間帯を見計らって実施していたのですが、正直かなり面倒でした。しかし、Bitnami が提供するLet’s Encrypt の証明書自動取得のコマンドを最近知って、その便利さに驚いています。

下記のコマンドを移行先のインスタンスで実行します。

sudo /opt/bitnami/bncert-toolCode language: Bash (bash)

手順に沿ってYかn のタイプやメールアドレスの入力をおこないます。

wp-config.php ファイルの変更

SSL を有効にした後は、wp-config.php というコンフィグファイルを変更してURL をhttp:// から https:// に変更します。http→https へのリダイレクトがあれば不要ですが、別途プラグインが必要になるので、コンフィグファイルを変更して対応しておきます。

sudo vi /opt/bitnami/wordpress/wp-config.phpCode language: Bash (bash)

【変更前】

define( 'WP_HOME', 'http://' . $_SERVER['HTTP_HOST'] . '/' );
define( 'WP_SITEURL', 'http://' . $_SERVER['HTTP_HOST'] . '/' );Code language: PHP (php)

【変更後】

define( 'WP_HOME', 'https://' . $_SERVER['HTTP_HOST'] . '/' );
define( 'WP_SITEURL', 'https://' . $_SERVER['HTTP_HOST'] . '/' );
Code language: PHP (php)

そして

sudo /opt/bitnami/ctlscript.sh restart

を実行して設定変更を反映させます。

これで移行はほぼ終わりですが、色々と変わってしまうところが出てくるのでそれの後処理をおこないます。

不要なプラグイン、テーマの削除

移行先のWordPress に「Twenty Twenty-Three」などのデフォルトのテーマがインストールされてしまっているので、不要ならテーマの削除をします。

またプラグインも色々とデフォルトで入ってしまうので、使わないものは無効化→削除を実施で消していきます。

管理画面のURL のリンクがデフォルトになってしまう

移行元でWordPress の管理画面のURL を変更していても、移行後に反映されないことがあります。

その場合、https://ホスト名/w-admin/ のデフォルトのURL でアクセスし、「WPS Hide Login」などのプラグインを有効化して「設定」→「一般」でログインURLとリダイレクトURLの項目が追加されますので適宜変更してください。

メニューリストのURL に古いIP アドレスが入ってしまう

トップページからの「Blog」などのリンクがホスト名ではなくグローバルIPアドレス直書きになってしまっていることがあります。しかもグローバルIP がアタッチし直した静的IP ではなく、インスタンス新規作成時に割り振られたIP アドレスなので、クリックしてもリンク切れを起こしてしまいます。

その場合、「外観」→「カスタマイズ」でメニュー構造を編集し、「http://IP アドレス」になっているところを「https://ドメイン名」に直します。

メニューのリンク先が古いグローバルIPアドレスになってしまっている例
メニューのリンク先が古いグローバルIPアドレスになってしまっている例

画像のリンク先に古いIP アドレスが入ってしまう

また、画像を添付している記事で、リンク先のURLが古いグローバルIPアドレスになってしまっていることがあります。
例: http://13.231.233.135/wp-content/uploads/2021/11/fundamentals-of-computer-systems-itec.jpg

その場合は「Update URLs」プラグインを使って一斉に変換します。

「ツール」→「Update URLs」から
Old URLに「http://IPアドレス/」
New URL「https://ホスト名/」
で「URLs in page content」「URLs in links」「URLs for attachments」にチェックを入れてUpdateします。

Google Adsense のads.txt が無い

また、データベースの移行ができてもファイル自体が全て移行先に移ったわけではないので、Google Adsense をやっている場合ではads.txt ファイルが見つからないと数日後にエラーになってしまいます。

WP File Manager 」プラグインなどファイル転送できるプラグインを使用し、移行元のwordpressフォルダ−直下にあるads.txtをダウンロードし、移行先のwordpressフォルダ−直下にアップロードすればOK です。もし移行元からads.txt ファイルをそのままダウンロードできなければ、中身を開いて新しいテキストを新規作成してコピペしてファイル名をads.txt で保存してアップロードすれば問題ありません。

移行後のインスタンスの削除

移行した直後は旧インスタンスも停止だけしておいて、インスタンスは残しておいたほうが良いです。いざとなったときに戻せますので。1週間とか様子を見てみて、移行先が問題なければ古いインスタンスを削除すれば良いかと思います。

AWS Lightsail のWordPress を新しいLightsail インスタンスに移行する手順をまとめました。もし参考になったよ、という場合は記事の左下のいいねボタンでリアクションをお願いします!

Categories:

No responses yet

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

スポンサーリンク
カテゴリー