BiTT開発
BiTT開発
2019.07.10
#52
バックエンドへの道

Amazon LightsailでWordPressサイトを構築する

エリカ

こんにちは、ディレクターのエリカです。今日はAmazon Lightsailを使ってサクッとWordPressサイトを構築してみたいと思います。

準備

主に設定しなければならないのは、下記のサービスになります。

  • Route53
  • Lightsail
  • Amazon SES(Simple Email Service、以下SES)

SSL証明書やSESの承認にDNSレコードを利用することになりますので、Route53が利用できるようになっている必要があるかもしれません。

今回は前提として、対象のドメインをRoute53で管理できていることとします。

SESのセットアップ

WordPressがSMTPを利用してメール送信を行うことができるようにするために、Amazon SES(Simple Email Service)をセットアップします。

東京リージョンはまだないので、任意のリージョンを選択します。

「Verify a New Domain」でドメインを検証します。

ここに対象のドメインを入力し、検証を開始します。

詳細画面に行き、Verification の欄に記載されている下記のようなレコードをRoute53に追加します。

Record Type: TXT (Text)
TXT Name*: ****
TXT Value: ****

レコード追加後、しばらくすると承認が完了します。

以上によりSESを利用して、対象ドメインのメールアドレスの送受信が可能になります。

メールの送信先に外部ドメインのメールアドレスを利用する場合は、送信制限の解除申請も忘れずにしておきましょう。

WordPressからはSMTPでSESを利用することになりますので、クレデンシャルを作成します。

作成されたクレデンシャルの情報は、WordPressの管理画面からWP Mail SMTPプラグインの設定に利用します。

Lightsailのセットアップ

続いてAmazon Lightsailをセットアップします。

まずはロードバランサーを作成します。

ロードバランサーの作成

ロードバランサを作成したら、ヘルスチェックのパスを変更しておきます。

SSL証明書の割り当て

SSL証明書を取得します。

検証を行うために、レコードをRoute53に追加します。

しばらくすると検証が完了するので、証明書をロードバランサーにアタッチします。

Route53でAレコードを作成し、エイリアスにロードバランサーのドメイン名を設定します。

これで、http、httpsの両方で、指定のドメインを利用できるようになりました。

インスタンスの作成

希望のインスタンスタイプを選択し、WordPressがインストールされたインスタンスを作成します。

WordPressのセットアップ

bitnamiバナーの削除

画面右下にbitnamiのバナーが表示されてしまっていますので、そのバナーを非表示化します。

sudo /opt/bitnami/apps/wordpress/bnconfig --disable_banner 1

ベーシック認証とヘルスチェック

開発中はベーシック認証が必要になるかもしれませんので、ベーシック認証の設定をします。

まずは、ヘルスチェック用のファイルを作成します。

touch /home/bitnami/apps/wordpress/htdocs/healthcheck.php

htaccess.confに下記を追記します。

<Directory "/opt/bitnami/apps/wordpress/htdocs">
    AuthUserfile /home/bitnami/apps/wordpress/htdocs/.htpasswd
    AuthGroupfile /dev/null
    AuthName "Please enter your ID and password"
    AuthType Basic
    require valid-user
    <FilesMatch "(healthcheck\.php)$">
        Satisfy Any
        Order allow,deny
        Allow from all
        Deny from none
    </FilesMatch>
</Directory>

ベーシック認証用のパスワードを設定します。

htpasswd -c /home/bitnami/apps/wordpress/htdocs/.htpasswd USER_NAME

Webサーバーをリスタートします。

sudo /opt/bitnami/ctlscript.sh restart apache

wp-config.phpに下記を追記・変更し、常時SSLに対応させます。

$_SERVER['HTTPS'] = 'on';
$_SERVER['SERVER_PORT'] = 443;

// 中略

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

最後に、ロードバランサーにWordPressインスタンスをアタッチして、ヘルスチェックが成功すれば完成です。

まとめ

すべてAWSリソースを使って、簡単にSSLなWordPressサイトを構築することができました。気になる方は、ぜひ試してみてください。