【初心者】AWS WordPressサイト構築

AWS で WordPress サイトを構築したので忘れないように手順を作成。

コンテナを使用したかったので、ECS と Fargate を使用して構築していきます。

完成図
![AWS_WordPress.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3517045/f7f4ff1f-3140-6c53-02ef-9dffbbff1461.jpeg)

<h2>作業内容</h2>
    ①VPCの作成<br>
    ②セキュリティグループの作成<br>
    ③RDSの作成<br>
    ④EFSの作成<br>
    ⑤クラスターの作成<br>
    ⑥タスクの作成<br>
    ⑦サービスの作成<br>
    ⑧動作確認<br>
<h2>①: VPCの作成</h2>
    ・Public subnet × 2<br>
    ・Private subnet × 2<br><br>

VPC から VPCを作成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3517045/d3b3b05f-14c4-03af-4927-91f72a3e1aea.png)

作成するリソースを [VPCなど] にして ネットワークリソースもまとめて作成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3517045/7b91fd2c-9a2f-492e-1106-08ea148b38ed.png)
↓
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3517045/4f85282e-f373-2214-39d5-9360f432a6e1.png)

↓
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3517045/b7bc78b6-b257-35e5-0bc6-340d24aa6d4f.png)

まとめて作成される
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3517045/39f6b634-c273-c359-20cd-ce37f72e032b.png)

<h2>②セキュリティグループの作成</h2>
    ・ALB(Application Load Balancer用)<br>
    ・EFS(Elastic File System用)<br>
    ・RDS(Relational Database Service用)<br><br>

VPC-セキュリティ-セキュリティグループ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3517045/f7deec39-5424-aead-baa1-a7a040c146d8.png)
↓
[セキュリティグループを作成]
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3517045/8d316703-d627-6d7b-6f2e-2e534c102948.png)

ALB用(VPCは①で作成したものを選択)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3517045/ecb75011-96e4-d8b6-065d-7f995c085c0f.png)

EFS用(VPCは①で作成したものを選択, ソースは先に作成した alb セキュリティグループを選択)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3517045/6660234b-d5cb-f004-fbb0-e840f5856216.png)

EDS用(EFSと同じ, タイプ注意)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3517045/03e5a025-2dbe-e978-6593-8ae6f152af1f.png)

<h2>③RDSの作成</h2>
    ・サブネットグループ
    ・Aurora MySQL<br><br>

RDS-サブネットグループ-[DBサブネットグループを作成]
※アベイラビリティゾーン[1a, 1c], サブネットは Private subnet を選択(VPC サブネットで確認しておく)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3517045/b02fd1e8-227f-220a-685a-8226a95a02c9.png)



RDS-データベース-[データベースの作成]
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3517045/eca80582-2849-c539-d654-7829e516d350.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3517045/79cbcd83-2292-13d1-1c78-7aff925b7ce1.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3517045/afe7727c-b6f1-df2e-4ef9-7b95899f0a70.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3517045/38f164c4-89c8-332e-3970-3aa5e3e14293.png)
セキュリティグループには②で作成したRDSを設定
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3517045/ef29d1ed-1bb3-b640-5d6f-1434a7588064.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3517045/abf00ba7-d9b7-0e64-e2f5-aa5ccb76d2a4.png)

<※[最初のデータベース名]は後で必要となるためメモ

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3517045/f6e9b17c-83df-3898-ae2a-d75fc5632611.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3517045/7b363439-aa00-eb44-0ce3-0f30a904277d.png)


<h2>④EFSの作成</h2>
EFS-ファイルシステム-[ファイルシステムの作成]

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3517045/9ceeb11a-3ac1-e5f5-0502-d9e92470d702.png)

VPCは①で作成したVPCを選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3517045/a434d6d4-c80b-27ea-d3d8-48519d008f44.png)

作成したファイルシステムから[ネットワーク]タブ-[管理]
※マウントターゲット Private subnet → Public subnet へ変更
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3517045/dc69ef6f-98cd-48f4-9721-b87d44f80cbf.png)

Private subnet をいったん削除
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3517045/f90a4df1-3170-b21d-c564-0e70a4fc6b22.png)

削除されるまで待つ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3517045/6367bb4e-698b-5894-79cf-31735b830ab5.png)

VPC[①で作成したVPC], サブネットID[Public subnet], セキュリティグループ[②で作成した EFSを設定]
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3517045/ba5238ca-6d92-28a0-ac62-616e3c8c2922.png)

<h2>⑤クラスターの作成</h2>
ECS-クラスター-[クラスターの作成]

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3517045/e8cb5d32-ac6a-75ac-f23e-ea9e7369ac97.png)

VPC[①で作成したVPC], サブネット[Public subnet のみ]
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3517045/48b66f4b-44ce-a721-0cf5-89a6f6e90a9e.png)

AWS Fargate が選択されていればOK
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3517045/1ab5a295-36dc-2986-b31c-027d13e219c4.png)


<h2>⑥タスクの作成</h2>
ECS-タスク定義-[新しいタスク定義の作成]

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3517045/74e78293-ed99-d2b1-6f0f-10770e317063.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3517045/0d332e50-b692-6a6b-62f9-d7257c7cd111.png)

※イメージURI の [wordpress:latest] は 最新のWordPressアプリケーションを指定
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3517045/3533f6c2-39f0-a5d8-c1b9-5fa68042587d.png)

環境変数を設定(WordPress Key = https://api.wordpress.org/secret-key/1.1/salt/)
WORDPRESS_DB_HOST = ライターインスタンスのエンドポイント(下記に図)
WORDPRESS_DB_NAME = DB名(DBインスタンスID ではなく DB名の方 注意 下記に図)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3517045/80fe08be-2d2b-8dce-7513-36b387f7a0c6.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3517045/0c9c7770-543c-42cc-dcd5-be79d4292020.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3517045/4c39aa8b-718c-2394-f27e-9ea92f9c2498.png)
以上で作成

<h4>補足</h4>
※ライターインスタンスのエンドポイント

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3517045/300fb02a-2594-a610-22ae-eee06d043e3c.png)
※DBインスタンスID と DB名
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3517045/07172dcc-2a45-4a0a-e5c5-2608aac93bad.png)

<h2>⑦サービスの作成</h2>
ECS-クラスター-[サービス]タグ-[作成]

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3517045/b4e0f5c7-617c-ad40-5b8c-536f18eab8a1.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3517045/86cf3e13-fb76-273a-0561-0d98630765a0.png)
ファミリー = ⑥で作成したタスク(リビジョンは最新のものを選択)
タスク = 0 にして最初起動しないように設定
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3517045/f0531cd4-1ad4-3ca9-5ac6-70bdcb208387.png)

VPC = ①で作成したVPC
サブネット = Public subnet のみ
セキュリティグループ名 = ②で作成した alb を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3517045/3804f09f-f229-a5c0-2b4e-8a74170426af.png)
ロードバランサーで [Application Load Balancer] を設定
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3517045/bd18990d-7148-1a9f-92ed-549a3b7bae29.png)
以上で作成
※デプロイが完了するまで時間がかかるため待つ

<h2>⑧動作確認</h2>
    ・実際に WordPress に接続できるかチェック
ECS-クラスター-作成したクラスター-作成したサービス-[サービスを更新]

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3517045/adc2e59c-3e69-86fa-875e-f26ab2b42ba7.png)

必要なタスクを[1] に変更して更新
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3517045/ad182124-c203-b7b5-a014-a3924d5c73a7.png)

タスクが起動したのを確認
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3517045/076eb81b-bb37-25fe-df16-42b353cb78bb.png)

EC2-ロードバランシング-ロードバランサー-作成したロードバランサーを選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3517045/edcb3f38-a514-d76d-1d6f-ef11f83f83ca.png)

DNS 名 のアドレスにアクセス
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3517045/5fa56b35-7704-4f10-c1ad-4a1dd694417c.png)
言語選択が表示されれば!!


<h2>まとめ</h2>
Wordpress と DB の設定を環境変数に入れないといけないところが間違えやすいポイント。
特にRDBのDB名を勘違いしやすいため注意(2敗)。