【無料利用枠】AWSでWordPressブログをつくろう Part.2 独自ドメイン設定～SSL化編

# はじめに
[Part.1 初期設定～インストール編](https://qiita.com/pike3/items/0c4f194a1ad51cc15da3)
->Part.2 独自ドメイン設定～SSL化編
[Part.3 S3画像保存～SESメール転送編](https://qiita.com/pike3/items/eeaffd9163bce56a4a31)
[Part.4 WordPress設定編](https://qiita.com/pike3/items/1bab8dea37be47bcdf0c)

今回は作成したインスタンスに独自ドメインの紐付けとSSL化の設定をしていきます。

# 概要
独自ドメインの紐付けにはDNSサービスを利用する必要があります。
AWSにもRoute53というDNSサービスがあるのですが、こちらを利用した場合、月に50円程かかるので今回は利用しません。
その代わり、Cloudflareというサービスを利用します。

今回は下記の設定を行っていきます。

* Cloudflareの登録
* 独自ドメインとEC2インスタンスの紐付け
* WordPressのSSL化

# Cloudflareの登録
Cloudflareを利用するには会員登録が必要なので、まずはそこからやっていきます。

https://www.cloudflare.com/ja-jp/

「サインアップ」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2520632/109f0b06-85e1-c4d3-e769-0bd4e887627f.png)

メールアドレスとパスワードを入力して、「アカウントを作成」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2520632/7f9ee5ea-d4c5-2eda-b331-3dae3f297223.png)

登録確認メールが届くので、メールのリンクをクリックして、登録を完了させます。
その後、画面右上の「サイトを追加」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2520632/42e3c3aa-816c-5a44-2217-39f74b913af9.png)

お名前ドットコムなどで購入したドメインを入力して「サイトを追加」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2520632/f09d0cf7-d568-fff1-3d29-193ba7675da6.png)

プラン選択画面に移るので、「Free」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2520632/74d3f108-8b53-c34f-4914-ebb2509bb549.png)

次の「DNSレコードを確認する」は後から設定するので、そのままで次に進みます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2520632/070761d5-d961-93f9-3141-68001bea9f38.png)

Cloudflareのネームサーバーのアドレスが3番目に表示されるので、コピーしてお名前ドットコムなどのレジストラに設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2520632/7cf15662-85e1-fcef-5ce2-53a18fd2607f.png)

お名前ドットコムの場合は、次のような画面になっています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2520632/ba4e0943-afb0-b71c-af60-d783ec6e8edd.png)

以上で、対象のドメインにアクセスした時にCloudflareのネームサーバーを見に行くように設定できました。

# 独自ドメインとEC2インスタンスの紐付け
次にCloudflareのネームサーバーにEC2インスタンスのIPアドレスを登録して、ドメインにアクセスした時にEC2インスタンスにつなげるように設定していきます。

## Elastic IPアドレスの紐付け
EC2インスタンス作成直後のIPアドレスは固定されていないため、再起動するとIPアドレスが変わってしまいます。
AWSにはElastic IPという固定IPのサービスがあります。今回こちらを作成して、EC2インスタンスに紐付けます。

EC2の画面からメニューの中に「Elastic IP」があるので、こちらを選択して、「Elastic IPアドレスを割り当てる」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2520632/63c42aaa-334c-0fd3-0059-a09333986a66.png)

次の画面はデフォルトのまま「割り当て」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2520632/74fa61f6-246e-b502-edaa-02b2f37b72f1.png)

作成されたElastic IPを選択して、「Elastic IPアドレスの関連付け」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2520632/a6e37885-340b-6a68-57fd-eeb9474b6b61.png)

インスタンスの検索フォームをクリックすると、リストが出てくるので表示されたものを選択して、「関連付ける」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2520632/9d39a4a1-1caf-ae49-e333-a47ecd08e7f7.png)

これでEC2インスタンスに固定IPを割り当てることが出来ました。

## Elastic IPアドレスをCloudflareのAレコードに登録
作成したElastic IPアドレスをCloudflareのAレコードに追加して、名前解決の設定を行います。

Cloudflareの画面から左側のメニューの中の「DNS」をクリックすると、下記のような画面が表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2520632/a3695999-454d-f439-a4e3-b553c8f0f666.png)

Cloudflareは自動スキャンという機能があり、ドメインの情報から各種レコードを自動追加します。
今回は自動追加されたものを編集して、Elastic IPに変える必要があります。

まずは、検索欄に「www」と入力すると、リストの中に名前が「www」のものがあると思います。
こちらの編集ボタンをクリックして、IPv4アドレスをElastic IPに変更します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2520632/2df98e94-b020-6b35-ca27-e68e36441c09.png)

次の検索欄にドメイン名を入力すると、リストの中にドメイン名のものがあると思います。
こちらも同様に編集ボタンからIPv4アドレスをElastic IPに変更します。

以上で、独自ドメインとEC2インスタンスの紐付けは完了です。
ブラウザから今回紐付けたドメインからWordPressに接続できるか確認してみてください。

# WordPressのSSL化
SSL証明書の発行からhttp->httpsへのリダイレクト設定まで実施します。

## SSL証明書の発行
SSL証明書はAWS Certificate Maganer（ACM）を利用することで無料で発行できます。

ACMの画面から「証明書をリクエスト」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2520632/8975af0c-f6cd-2c5e-a76b-4617f8ac7df5.png)

「パブリック証明書をリクエスト」のまま「次へ」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2520632/4ca6ae49-7d0b-7c56-260b-ebaced979872.png)

ドメイン名を入力して、「この証明書に別の名前を追加」をクリックします。
追加された入力欄に「\*.ドメイン名」と入力して、「リクエスト」をクリックします。
（この\*のものも含めることで、前にwwwが付いても有効になります。）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2520632/fe35ba5a-273b-e54f-b38c-22dd9188b284.png)

下記のようにドメインが2つ追加されるので、いずれかのCNAME名とCNAME値をコピーします。
（値はどちらも同じです。）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2520632/585c78cc-5f5f-c30c-e44c-e0f89c38dd31.png)

コピーした名前と値をCloudflareのDNSに追加します。
この時、タイプはCNAME。プロキシのボタンをクリックして、「DNSのみ」となるようにしてください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2520632/66180cff-0b1b-1950-5d03-1be4e38383e5.png)

## ロードバランサーの設定
EC2インスタンスの前にロードバランサーを配置して、ロードバランサー側でSSL化を行うことで、
パフォーマンスが良くなります。そのため、今回はロードバランサーを利用します。

### ターゲットグループの作成
ロードバランサーでリクエストを受けた後の送り先であるターゲットの設定を行います。

EC2の画面から左側メニューの中の「ターゲットグループ」を選択して、「Create target group」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2520632/d920b5b1-176e-39ca-a866-a91202494d09.png)

インスタンスを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2520632/6c047e47-0ace-69ce-815c-4e11096b5331.png)

ターゲットグループ名は任意のものを入力して、あとはデフォルトのまま「Next」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2520632/9f578dad-9580-9c64-e762-9f935910a008.png)

表示されているインスタンスにチェックを入れて、「Include as pending below」をクリックします。
※この時インスタンスが起動していないと一覧に表示されません。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2520632/3cc2a3cc-f651-a289-f992-6ef6c50fa6cc.png)

Review targetsに追加されたら、「Create target group」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2520632/e243772e-b496-bfcc-e4d2-bfbebf667c12.png)

### セキュリティグループの作成
ロードバランサーに適用するセキュリティグループの設定を行います。

EC2の画面から左側のメニューから「セキュリティグループ」を選択して、「セキュリティグループの作成」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2520632/f025118c-58e3-082e-826d-33964adbc71e.png)

セキュリティグループ名と説明は任意の名前にして、ルールは以下のようにします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2520632/741467fa-fa19-34e1-e570-6e41065d5fe6.png)

### ロードバランサーの作成
※追記（2024/09/18）
パブリックIPが有料になってしまったため、ALBは使わないほうがいいです。
使用した場合、ALBはAZまたぐ構成になり2個パブリックIPが必要となります。
一方で無料利用枠で使えるパブリックIPは1個なので、追加で費用が発生します。
今現在はALBは使わず、SSLはEC2上で行うのがオススメです。
bitnamiの場合、bncert-toolというSSL化のツールがあるのでこちらを使用してください。


今までに用意したコンポーネントをもとにロードバランサーを作成します。

EC2の画面から左側のメニューから「ロードバランサー」を選択して、「ロードバランサーの作成」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2520632/74199cde-dbbe-26fa-1329-35bbf10e5aa3.png)

アプリケーションロードバランサーを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2520632/6a61aaac-79da-019b-252c-256489253e82.png)

ロードバランサー名を任意の名前で入力します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2520632/c2f76977-e34c-d9c5-e948-dc081059c709.png)

ネットワークマッピングにて、表示されている3つのうち、任意の2つのアベイラビリティゾーンを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2520632/2bb6946f-7686-6bd4-c915-09101e3657a8.png)

先程作成したセキュリティグループを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2520632/36f37312-dc79-0194-89c3-825bb4cc0803.png)

リスナーは下記のようにHTTPとHTTPSを追加して、ターゲットは先程作成したターゲットグループを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2520632/efb89ab5-88ff-e98e-f49b-ad38bfcbebea.png)

セキュアリスナーセッティングではポリシーはデフォルトのものを選択、SSL証明書はACMで作成したものを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2520632/21d8d385-bd24-fe0a-66df-a1e9906ad149.png)

「Create load balancer」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2520632/1f7e8c98-7314-058b-e9f6-7c04539fbe1b.png)

以上で、ロードバランサーの作成は完了です。
ロードバランサーのDNS名でWordPressに接続できるか確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2520632/395ebda9-e368-9913-177d-37747e688794.png)

### ドメインでロードバランサーにアクセスするように設定
現状ではまだドメインでアクセスした時にEC2に直接アクセスするようになっています。
ここでは、ドメインにアクセスした時にロードバランサーに向かうように設定します。

CloudflareのDNS設定からドメインとwwwのAレコードを削除します。
その代わり、CNAMEレコードでロードバランサーのDNS名のレコードを追加します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2520632/2a2463c0-660b-0a07-7fac-ce766fa770aa.png)

ドメインでWordPressに接続できるか確認します。

### http->httpsへのリダイレクト設定
httpでアクセスした時は、URLの隣に画像のようなビックリマークがついていると思います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2520632/80f225c7-b43c-a748-b580-a5e74c17e028.png)

これだとセキュアな状態にならないので、httpでアクセスした時はhttpsへリダイレクトするように設定します。

ロードバランサーの画面を開いて、HTTP:80のリスナーの「ルールの表示/編集」ボタンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2520632/ccdd01be-7666-0564-bf68-972ba7cbffc0.png)

プラスマークをクリックして、「ルールの挿入」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2520632/485d318b-f523-46bd-f3db-b920f0294f72.png)

以下のように設定して、「保存」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2520632/29c359e6-9840-851e-db25-7872a0e3552b.png)

httpでアクセスしてもhttpsへリダイレクトされることを確認します。
ビックリマークがつかなければ、httpsへリダイレクトされています。

# さいごに
次回は各種AWSサービスとの連携を行っていきます。
S3：画像ファイルの保存先として指定する。
SES：WordPressからの通知メールを送信するために利用する。

https://qiita.com/pike3/items/eeaffd9163bce56a4a31