吉方位確認サービス「楽方位」α版を公開しました。

AWS で HTTPS な WordPress (ALB, Route 53, ACM, EC2, Marketplace)

Sponsored Links

VPC (Virtual Private Cloud)

VPC

Name tagvpc-hirooka-pro
IPv4 CIDR block192.168.0.0/27
IPv6 CIDR blockNo IPv6 CIDR Block
TenancyDefault

サブネット

名前タグvpc-hirooka-pro-1a
VPCvpc-hirooka-pro (上記 VPC で作成したものを選択)
VPC CIDR192.168.0.0/27 (選択した VPC に応じて自動決定)
アベイラビリティゾーンap-northeast-1a
IPv4 CIDR ブロック192.168.0.0/28
名前タグvpc-hirooka-pro-1c
VPCvpc-hirooka-pro (上記 VPC で作成したものを選択)
VPC CIDR192.168.0.0/27 (選択した VPC に応じて自動決定)
アベイラビリティゾーンap-northeast-1c
IPv4 CIDR ブロック192.168.0.16/28

インターネットゲートウェイ

Name タグigw-hirooka-pro

作成後、アクションから VPC にアタッチします。アタッチする VPC は、vpc-hirooka-pro (上記 VPC で作成したもの) です。

ルートテーブル

VPC を作成すると自動作成されます。識別しやすいように Name を設定しておきます。

Namertb-hirooka-pro
VPC IDvpc-hirooka-pro (上記 VPC で作成したものが自動設定)

さらに、Routes タブの Edit routes でルートの追加を行います。

DestinationTarget
0.0.0.0/0igw-hirooka-pro (上記インターネットゲートウェイで作成したもの)
::/0igw-hirooka-pro (上記インターネットゲートウェイで作成したもの)

ネットワーク ACL

VPC を作成すると自動作成されます。識別しやすいように Name を設定しておきます。

Nameacl-hirooka-pro
VPCvpc-hirooka-pro (上記 VPC で作成したものが自動設定)

セキュリティグループ

VPC を作成すると自動作成されます。識別しやすいように Name を設定しておきます。

Namesg-hirooka-pro
説明default VPC security group
VPC IDvpc-hirooka-pro (上記 VPC で作成したもの) の VCP ID

EC2

インスタンス

Amazon マシンイメージ (AMI)

AWS Marketplace > WordPress Certified by Bitnami and Automattic

インスタンスタイプの選択

t2.micro (可変 ECU, 1 vCPU, 2.5 GHz, Intel Xeon Family, 1 GiB メモリ, EBS のみ)

インスタンスの詳細の設定

デフォルトから変更した箇所のみ記載しています。

ネットワークvpc-hirooka-pro (上記 VPC で作成したもの)
サブネットvpc-hirooka-pro-1a (上記サブネットで作成したもの)

ストレージの追加

デフォルトのまま使用します。10 GiB, 汎用 SSD (gp2)

タグの追加

Namehirooka-pro

セキュリティグループの設定

新しいセキュリティグループを作成します。ルールを設定します。

SSHTCP22マイ IP自動設定
HTTPTCP80カスタム0.0.0.0/0, ::/0
HTTPSTCP443カスタム0.0.0.0/0, ::/0

インスタンス作成の確認

問題が無ければ、起動ボタンをクリックします。キーペアを作成後、インスタンスが作成されます。

WordPress のユーザー名とパスワード

インスタンスを選択し、アクションから

インスタンスの設定 > システムログの取得

をクリックします。

下記のように username と password が記載されている箇所を見つけます。WordPress の管理画面にログインする際に使用します。

[   15.512633] bitnami[1161]: #########################################################################
[   15.527941] bitnami[1161]: #                                                                       #
[   15.541782] bitnami[1161]: #        Setting Bitnami application password to '★ここにパスワードが記載されています★'         #
[   15.561440] bitnami[1161]: #        (the default application username is 'user')                   #
[   15.577464] bitnami[1161]: #                                                                       #
[   15.596324] bitnami[1161]: #########################################################################

Route 53

ドメインの登録

AWS で独自ドメインを購入することができます。2019年5月時点では、pro ドメインは年間 $14 でした。

DNS 管理

購入したドメインに対して、NS、SOA が自動設定されます。

Certificate Manager

証明書のリクエスト

パブリック証明書のリクエストを行います。ドメイン名 hirooka.pro でリクエストしました。証明書のリクエストから証明書の発行まで4時間半でした。

再度 EC2

ターゲットグループ

ターゲットグループ名tg-hirooka-pro
ターゲットの種類インスタンス
プロトコルHTTP
ポート80
VPCvpc-hirooka-pro (上記 VPC で作成したもの)

ヘルスチェックの設定

プロトコルHTTP
パス/

ターゲットグループ作成後、ターゲットタブの編集ボタンをクリックし、ターゲットの登録および登録解除画面を表示させます。そこで、WordPress のインスタンスを選択し、登録済みに追加します。

ロードバランサー

Application Load Balancer を作成します。

ロードバランサーの設定

基本的な設定
名前alb-hirooka-pro
スキームインターネット向け
IP アドレスタイプipv4
リスナー
HTTPS443
アベイラビリティゾーン
VPCvpc-hirooka-pro (上記 VPC で作成したもの)
アベイラビリティゾーンap-northeast-1a, ap-northeast-1c にチェック (上記サブネットを作成したゾーン)

セキュリティ設定の構成

デフォルト証明書の選択
証明書タイプACM から証明書を選択する
証明書の名前hirooka.pro (Route 53 で登録し、Certificate Manager で作成したドメインの証明書)

セキュリティグループの設定

既存のセキュリティグループを選択する、を選択します。

EC2 インスタンスを作成する際に新しく作成したセキュリティグループを選択します。

ルーティングの設定

ターゲットグループ既存のターゲットグループ
名前tg-hirooka-pro (上記ターゲットグループで作成したもの)
ターゲットの種類インスタンス
プロトコルHTTP
ポート80

ヘルスチェックの設定

プロトコルHTTP
パス/

ターゲットの登録

登録済みターゲットとして、ターゲットグループ作成時に登録した WordPress のインスタンスが設定されています。

確認

問題が無ければ、作成ボタンをクリックします。

ロードバランサーが作成されると、DNS 名が設定されます。

再度 Route 53

DNS 管理

レコードセットの作成ボタンをクリックします。タイプを A – IPv4 address とし、エイリアスでは、はいを選択します。

エイリアス先として、ELB Application Load Balancer で作成したターゲットの DNS 名を選択します。

WordPress への接続確認

Route 53 で登録したドメインに HTTPS でアクセスしてみます。今回の例だと https://hirooka.pro です。WordPress っぽい画面が表示されれば、ロードバランサーと EC2 が接続されています。

が、この時点では WordPress っぽい画面が表示されるものの、表示が崩れています。また、Google Chrome でアクセスすると、アドレスバーには「このサイトへの接続は完全には保護されていません」と表示されます。WordPress の管理画面にもログインできません。

そのため、WordPress の設定を少し編集します。

WordPress の設定変更

WordPress の EC2 インスタンスに SSH でログインし、WordPress の設定ファイルを編集します。

今回のケースの EC2 インスタンスはプライベート IP しか持っていないため、Elastic IP を一時的に割り当てます。割り当てられたパブリック IP に対してキーペアを使用して SSH でログインします。

ALB (HTTPS) 対応

chmod 400 aws-hirooka-pro.pem
ssh -i "aws-hirooka-pro.pem" ubuntu@<割り当てられたパブリックIP>

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

の 2 行目に下記の 2 行を追加してみます。

$_SERVER['HTTPS'] = 'on';
$_ENV['HTTPS'] = 'on';

さらに WP_SITEURL, WP_HOME の値を変更してみます。

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

ファイルを保存します。

再度、HTTPS で WordPress にアクセスします。

表示崩れも無く、正常に表示されることを確認します。また、WordPress の EC2 インスタンスを作成した際にメモした username と password で WordPress の管理画面にログインできることを確認します。

Manage バナーの無効化

Bitnami の WordPress では、デフォルトで画面の右下に Manage アイコンが表示されます。これを消します。

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

日本語化

私が使用した Bitnami の WordPress は、デフォルトで英語設定でした。そして、Settings > General に Site Language が無く、言語切り換えができませんでした。

そのため、使用している WordPress のバージョンと同じバージョンの日本語の Translation file をダウンロードします。私の場合は、https://translate.wordpress.org/projects/wp/5.1.x/ja/default/ の下部から all current as Machine Object Message Catalog (.mo) を Export しました。wp-5.1.x-ja.mo がダウンロードされます。

ダウンロードした wp-5.1.x-ja.mo を SCP で EC2 にアップロードします。

scp -i "aws-hirooka-pro.pem" wp-5.1.x-ja.mo ubuntu@<割り当てられたパブリックIP>:/opt/bitnami/apps/wordpress/htdocs/wp-content/languages/

これで、Settings > General に Site Language が表示されるようになります。Available で日本語を選択します。設定を保存すると、WordPress のメニューの表示言語が日本語になります。

最後に、一時的に割り当てていた Elastic IP を開放しておきます。

AWS
Sponsored Links
hirooka.pro