AWS Lightsail + CloudFront + Route53 でWordPressを構築した話

2022/10/28
2019/05/20

はじめに

この記事では、Lightsail + CloudFront + Route53 を用いてWordPressを構築した手順を紹介します。

LightsailにはDNSレコードを管理する機能がありますが、そちらではなくRoute53に登録済みのドメインを使用する例をご紹介します。

環境

  • macOS 10.14.3
  • WordPress 5.2.1

前提

  • 自分のドメインを持っている
  • Route53に設定済み
  • ACMを取得し、Route53にアタッチ済み

Lightsailでインスタンス作成

AWSコンソールにログインし、Lightsail (https://lightsail.aws.amazon.com) にアクセスします

コンソールの雰囲気が全然違いますね〜

インスタンスの作成を押して、インスタンスロケーションを選択します。

私は国内向けのブログを作成するため東京リージョンを選択しました。

  • プラットフォームはLinux/Unixを選択
  • アプリ+OSを選択し、WordPressを選択

インスタンスイメージの種類を選択します。

Microsoft Windowsは値段が高くなるみたいです。

必要に応じてSSHキーを作成します。

このタイミングでSSHキーを作成することでローカルからSSH接続が可能になります(SSHキーを作成せずにブラウザから接続することも可能)

インスタンスプランは$3.50プランを選択します。

結構な数のアクセスが来ない限りは最安プランで十分なようです。

インスタンスが起動することを確認します。

1分ほどで起動が完了し、アクセスが可能となる(かなり早い!)

ぼかして隠している部分は静的IPアドレスです。しかし、このIPアドレスは定期的に変わるため、固定IPをベット取得する必要があります。

固定IPの取得

CloudFront経由でアクセスするためには、ドメインとIPを紐づける必要があります。なので、まずはLightsailコンソールから固定IPを取得します。

ネットワークから静的IPの作成を選択します。

ちなみに、DNSゾーンやロードバランサーをLightsailで設定することも可能です。(この記事では使用していません)

静的IPロケーションはインスタンスと同じゾーンを選択します。

先ほど作成したインスタンスをアタッチして作成すると、固定IPアドレスが作成されます。

固定IPアドレスは、Route53の設定時に必要なのでコピーしておきます。

WordPressへのアクセス

「SSHを使用して接続」 を選択することでブラウザから接続することが可能です。

今回は、ブラウザ経由でアクセスしてみます。

ブラウザでSSH接続したコンソールがこちらです。色々な情報が乗っているため、大部分を切り取って載せてます笑

下記コマンドを入力し、接続情報を取得する。セキュリティのため省略していますが、下記のような接続情報が出力されます。

$ cat bitnami_credentials
 
***************************************************************
The default username and password is 'user' and '〇〇〇〇〇'.
***************************************************************

http://(パブリックIP)/wp-admin に接続して管理画面にアクセスします。

管理画面にログインできれば、各種設定が可能に!(WordPressの設定の前に、ドメインなどの設定を整えましょう)

CloudFrontの設定

続いて、独自ドメインでアクセスする入り口となるCloudFrontを構築します。

Distributionの作成

以下の設定でDistributionを作成します。

ドメイン(example.com)は自身が取得したもの、サブドメイン(wwwやwp)は自身で適当に決めてください。

設定する2つのドメインの用途は以下の通りです。

Behaviorの設定

続いて、作成したDistributionにBehaviorを追加していきます。

  • CloudFrontでhttpをhttpsにリダイレクト
  • /wp-login.php* と /wp-admin/* は管理ページ用
    • 管理系ページはキャッシュを持たないように設定
  • /wp-json/* はいつかのバージョンから非同期で投稿者のユーザ情報やカテゴリ情報を取得しているため、その許可設定
  • 全てのHTTPメソッドを許可(公開サイトでは検索機能などがあり、POSTなどが行われる)
  • ForwardCookiesはWordPressで使用しているものを設定

作成後、DistributionのDomain NameをRoute53に設定するため、コピーしておきます。

CloudFrontの設定にはかなり時間がかかるので(30分くらい)、気長に待ちましょう…

Route53の設定

下記を参考にRoute53にレコードセットを2件追加します。

前提

  • お名前.comなどからドメインを取得し、Route53に設定が済んでいる事
  • ACMで証明書を取得し、Route53にアタッチできていること

上記については説明を省いていますが、必要に応じて別途記事を作成します。

設定項目

ここまでで、インフラ部分の設定は完了となります!

WordPressの設定

インフラ部分は完成し、設定したドメイン(サンプルの場合の https://ドメイン でいざアクセスしてみると

CSSが適用されていません…

原因

ユーザのアクセスはCloudFrontによって http→https にリダイレクトされますが、html内の参照はリダイレクトされないようです。

WordPressの初期状態では、 http でスクリプトやCSSを呼び出しているようです。

対処法

WordPressのプラグインを使用します。

https://ドメイン/wp-login.php にアクセスし、管理画面にアクセスします。

ユーザ名とパスワードは先ほどコンソールで確認したものです。

サイドバーのプラグイン → 新規追加から SSL Insecure Content Fixer を検索します。

設定から下記の設定をして設定の保存をすると、サイトへのアクセスが可能となります!

まとめ

Lightsail + CloudFront + Route53を用いたWordPress構築の手順を紹介しました。

CloudFront + Route53でドメイン周りの設定をした事で、他の記事通りではうまくいかない事象などがありましたが、基本はCloudFrontのBehaviorを見直せば解決しました。

参考

https://dev.classmethod.jp/cloud/aws/how-to-install-original-domain-ssl-wordpress-with-amazon-lightsail

https://qiita.com/Ichiro_Tsuji/items/38592e737257cb45ca13

https://qiita.com/Hikery/items/8933e1969c971eaa649d

AWS の記事