【WordPress引っ越し】レンタルサーバからAmazon Lightsail
当ブログはレンタルサーバで運営していたのですが、先日よりAmazon Lightsailに引っ越しております。
レンタルサーバのスペックは高くはなかったのですが、サイト表示のレスポンスが少しずつ遅くなってきたこともあり元々検討していたAWSへの引っ越しを行いました。
背景
wordpressを運営しているとよくあるのですが、最近サイト表示が遅いなと感じておりました。
その状態でのGoogle Search Consoleの結果がこちら



うわっ…私のLCP、低すぎ…?
(懐かしのネタを挟んでましたが関係ありません)
Goggle先生曰く、サイトの表示速度に問題があるようです。ということでサイト速度改善に取り組むこととなりました。体感としては4秒もかかっていないのですが、Google先生が仰っているので抗ってはいけません。
効果測定のため、まずはspeed insightでスコアを計測します。
speed insightのスコア
対策前のスコアがこちら


携帯電話/スマホともにスコアが低いですが、特に携帯電話の場合のスコアが壊滅的です。全ての項目でスコアが低いという状態ですね。これではSEO的にも悪影響です。
レンタルサーバはあまり高価なプランではないので、サーバスペックの問題をまずは改善してみます。試しにレンタルサーバの上位プランで一時的に移管してみた場合の速度がこちら。


サーバを変えただけでも多少はスコアが改善することがわかりました。携帯電話の方はまだスコアが赤表示ですが、サイト最適化プラグインなどうまく使っていけば大丈夫でしょう。
ということで、まずはWordpressのサーバ引っ越しから着手します。
サーバ選定 レンタルサーバ vs EC2 vs Lightsail
比較表はこちらの記事にまとめました。
【EC2×Lightsail×レンタルサーバ】サーバ比較
まずは比較的安価にサーバ運営し、今後の拡張も視野に入れるということでLightsailを採用しました。
AWSのサーバを使うことで、様々なAWSサービスを利用することができセキュリティや可用性を高めることもできます。また、OSとアプリケーションなどがテンプレートとして提供されるため、サーバを立てて即座にWordpressを利用することが可能です。
事前準備
データベースバックアップ
おなじみのPhpMyAdminからエクスポートします。

エクスポート方法は詳細を選択します。こちらの方式を選択しないと
autoincrementの値が引き継がれず移行先のWordpressでエラーになります。
私はこれで結構はまりました、、

DROP TABLE / VIEW / PROCEDURE / FUNCTION / EVENT / TRIGGER コマンドを追加するのチェックを追加します。
コンテンツファイル一式ダウンロード
WordPress本体はサーバ側でインストールした方が早いので、本体はバックアップ不要です。コンテンツのみ一式ダウンロードします。

wp-contentフォルダをまるっとそのままダウンロードします。サーバ側で圧縮してからダウンロードした方が早いですが、面倒なのでダウンロードして放置。
プラグイン・アップロードした画像・テーマフォルダなど一式ダウンロードされます。
サーバ起動(Lightsail)
Lightsailの立ち上げ方法は説明が要らないくらい簡単なので割愛します。プラットフォームの選択でWordpress用サーバとして立ち上げられますので、これを選択します。

これだけでWordpressの立ち上げ完了!!
データベース準備
Lightsailを立ち上げてWordpressを準備した状態でもデータベースが使用可能です。ただ、こちらはLightsailサーバに同居したMySQLを使用しているようです。
このままでも使えるのですが、マネージドデータベースを使いたかったのでオプションで準備しました。AWSのマネージドデータベースとしてはRDSが有名ですが、Lightsailのマネージドデータベースは簡易版RDSという感じです。
一番安いデータベースのスタンダートプランで$15/月になります。(高可用性プランだと倍の$30/月)
データベースを作成する手続きは数クリックです。

デフォルトではリージョンがUSになっていますので、東京リージョンへ変更します。

あとはデータベースやプランを選択して作成完了します。
データベースが作成されると、併せてユーザ名とパスワードが発行されエンドポイント情報が表示されます。WordPressのデータベース接続先をLightsailのデフォルトから変更するので、エンドポイントの接続先情報を控えておきます。
データインポート
データベースが立ち上がったら、まずはデータをインポートします。インポートするにはまず外部からデータベースにアクセスできるようにする必要があります。
Lightsailのデータベース設定ではネットワーキングタブからパブリックモードへの変更ができます。

設定変更後、しばらくするとパブリックモードとして外部からのアクセスが許可されます。
データをインポートするには、MySQL Workbenchなどを使って事前にエクスポートしたデータをインポートします。すべてのデータが問題なくインポートされることを見届けましょう。
パブリックモードのままにしておくのはセキュリティ上の問題がありますので
インポートが完了したら必ず設定をOFFに戻しましょう。
コンテンツファイルアップロード
事前にダウンロードしたコンテンツファイルをLightsailのサーバにアップロードします。Lightsailは立ち上げた時点でFTPも導入されていますので、とても便利です。
FTP接続するにはSSHのキーペアを取得する必要があります。

キーペアが取得できたらFTPでアクセスしていきます。
ダウンロードしてきたwordpressのコンテンツファイルは下記にアップロードします。
/bitnami/wordpress/wp-content
コンテンツのアップロード時には重要なポイントがあります。それは所有者を変更するということです。
デフォルトで作成されているファイルやフォルダなどは所有者が『daemon』になっているため、そのままでは配下のフォルダの変更やファイル修正ができません。
そこでまず下記コマンドでWordpressディレクトリごと所有者を変更します。
sudo chown -R bitnami wordpress
こうすることでWordpress配下のフォルダ・ファイルの所有者がFTPアクセスしているユーザになり、ファイルのアップロードやファイルの編集ができます。
所有者の変更後、コンテンツのアプロードやwp-config.phpを修正します。
作業が終わったら必ず下記コマンドで所有者をdaemonに戻してください。
sudo chown -R daemon wordpress
所有者を戻さないと、Wordpressを操作している際にファイルアクセスや編集ができず様々な箇所でエラーが発生します。
コンテンツアップロードには所有者の変更が必要です。
作業が完了したら必ず所有者を元に戻してください。
ドメイン設定
コンテンツやデータベースの引っ越しが完了したら、ドメインを設定していきます。今回はレンタルサーバを指定していたDNSレコードをLightsailのパブリックIPアドレスに変更することでサーバ移設を行っております。
Lightsailで立ち上げたサーバには静的IPアドレスが紐付いておりませんので、サーバ再起動のタイミングなどでIPアドレスが変わってしまう可能性があります。
そこでまずは静的IPアドレスを設定します。

静的IPアドレス作成から設定が可能です。インスタンス選択画面で先ほど立ち上げたサーバを設定しIPアドレスを紐付けるます。これでドメインを指定する準備ができました。
ドメインを設定する場合はAWSサービスのRoute53を利用します。
実際にLightsail側のサーバにアクセスさせるにはドメインのDNSネームサーバを変更させる必要があります。これはroute53に記載されています。
この辺りに記載されているのがネームサーバとして設定するドメインです。

メール設定
Lightsailにはsendmailがインストールされていないため、Amazon SES(Simple Email Service)を利用します。SESにメールアドレス登録と認証を行います。
WordPress側にはプラグインをインストールしてSMTP設定を行います。今回はWP for SMTPを利用しました。
SSL化
サイトのSSL化はこちらの記事を参考に設定しました。
Amazon Lightsail でホストされている Bitnami スタックにスタンダード Let's Encrypt SSL 証明書をインストールするにはどうすればよいですか?
bncert-toolというコマンドを利用して設定を行います。
sudo /opt/bitnami/bncert-tool
一連の流れはこのようになります。
bitnami@ip-172-XX-XX-XX:/$ sudo /opt/bitnami/bncert-tool ←コマンド入力 ---------------------------------------------------------------------------- Welcome to the Bitnami HTTPS Configuration tool. ---------------------------------------------------------------------------- Domains Please provide a valid space-separated list of domains for which you wish to configure your web server. Domain list []: syuntech.net ←SSL設定するドメインを指定します The following domains were not included: www.syuntech.net. Do you want to add them? [Y/n]: n Warning: No www domains (e.g. www.example.com) or non-www domains (e.g. www.example.com) have been provided, so the following redirections will be disabled: non-www to www, www to non-www. Press [Enter] to continue: ---------------------------------------------------------------------------- Enable/disable redirections Please select the redirections you wish to enable or disable on your Bitnami installation. Enable HTTP to HTTPS redirection [Y/n]: Y ←HTTPアクセスとHTTPSへリダイレクトする場合はYES ---------------------------------------------------------------------------- Changes to perform The following changes will be performed to your Bitnami installation: 1. Stop web server 2. Configure web server to use a free Let's Encrypt certificate for the domains: syuntech.net 3. Configure a cron job to automatically renew the certificate each month 4. Configure web server name to: syuntech.net 5. Enable HTTP to HTTPS redirection (example: redirect http://syuntech.net to https://syuntech.net) 6. Start web server once all changes have been performed Do you agree to these changes? [Y/n]: Y ←設定の最終確認です。YESで登録します ---------------------------------------------------------------------------- Create a free HTTPS certificate with Let's Encrypt Please provide a valid e-mail address for which to associate your Let's Encrypt certificate. Domain list: syuntech.net Server name: syuntech.net E-mail address []: info@syuntech.net ←証明書に関連付けるメールアドレスを登録 The Let's Encrypt Subscriber Agreement can be found at: https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf Do you agree to the Let's Encrypt Subscriber Agreement? [Y/n]: Y ←YESで登録 ---------------------------------------------------------------------------- Performing changes to your installation The Bitnami HTTPS Configuration Tool will perform any necessary actions to your Bitnami installation. This may take some time, please be patient.
これでSSLの設定が完了です。
最後に
これで無事にWordpressの引っ越しが完了しました。Lightsailに移行してサーバのレスポンスも多少良くなった気がしています。
さらにレスポンスを良くするには、サーバスペックだけでなくWordpressの最適化も必要になりますので次回はWordpressの改善に取り組んでいきます。