【初心者向け】だんだん強くなるWordPressサイト構築 Lv1
はじめに
初めまして! 川名(政)です。
最近は仕事を通じて様々なAWSサービスに触れる機会は増えました。
初心にかえり一からAWSのクラウド環境を構築をしていきたいと思います。
まずは小規模な構成から始め、いずれ他のAWSサービスと連携させて「だんだん強くなるWordPressサイト」にしていきます!
今回はVPCの作成からEC2インスタンスの起動まで進めますので、お付き合いよろしくお願いいたします。
概要
- 構成の確認
- VPCの作成
- サブネット(パブリック/プライベート)の作成
- インターネットゲートウェイの作成
- NATゲートウェイの作成
- 各サブネットのルートテーブルを作成/設定
- EC2インスタンスの作成(Webサーバ)
- EC2インスタンス作成(踏み台サーバ用)
- EC2インスタンスの作成(データベース用)
事前準備
- AWSアカウント作成
- AdministratorAccessを付与したIAMユーザーの作成
1. 構成の確認
まずは以下の構成で進めたいと思います。
構成図 - WordPressサイト Lv1
構築は大阪リージョン(ap-northeast-3)で行います。
2. VPCの作成
VPCのページへ移動。
[VPC を作成]をクリック。
今回は以下の情報でVPCを設定します。
- 名前タグ: ※任意の文字列を入力
- IPv4 CIDR ブロック: 「IPv4 CIDR の手動入力」を選択
- IPv4 CIDR: 10.0.0.0/16
- IPv6 CIDR ブロック: IPv6 CIDR ブロックなし
- テナンシー: デフォルト
上記を設定後に[VPCの作成]をクリックします。
VPCの作成完了です!
3. サブネット(パブリック/プライベート)の作成
次にVPC内へサブネットを作成します。下記のサブネットを1つずつ作成します。
- インターネットからアクセス可能なパブリックサブネット
- インターネットからアクセスをさせないプライベートサブネット
ナビゲーションペインの[サブネット]を選択し、[サブネットを作成]をクリック。
VPCの項目は先ほど作成したVPCを選択。デフォルト VPCと間違えないよう注意します。
今回は以下の情報でパブリックサブネットを設定します。
- サブネット名: ※任意の文字列を入力
- アベイラビリティーゾーン: ap-northeast-3a
- IPv4 CIDR ブロック: 10.0.0.0/24
- タグ: ※任意の文字列を入力(自動でサブネット名と同じNameタグが入力されます)
上記を設定後、[新しいサブネットを追加]をクリック。
続けてプライベートサブネットの設定を行います。
今回は以下の情報でプライベートサブネットを設定します。
- サブネット名: ※任意の文字列を入力
- アベイラビリティーゾーン: ap-northeast-3a
- IPv4 CIDR ブロック: 10.0.10.0/24
- タグ: ※任意の文字列を入力(自動でサブネット名と同じNameタグが入力されます)
上記を設定後、[サブネットを作成]をクリック。
パブリックサブネットとプライベートサブネットが作成されました。
[フィルターをクリア]をクリックして、すべてのサブネットを表示してみます。
デフォルトのサブネットも表示されますが、今回作成したサブネットと容易に見分けがつきます。Nameタグを設定しておくと便利ですね!
4. インターネットゲートウェイの作成
VPCとインターネット間の通信ができるよう、インターネットゲートウェイを作成してVPCにアタッチします。
ナビゲーションペインの[インターネットゲートウェイ]を選択し、[インターネットゲートウェイの作成]をクリック。
名前タグを設定し、[インターネットゲートウェイの作成]をクリック。
インターネットゲートウェイが作成されました。
作成したインターネットゲートウェイをVPCにアタッチします。
ナビゲーションペインの[インターネットゲートウェイ]を選択し、作成したインターネットゲートウェイを選択します。
※インターネットゲートウェイの作成直後なら上部に表示される[VPCにアタッチ]からもアタッチできます
[アクション]→[VPCにアタッチ]を選択します。
[使用可能なVPC]の入力フォームをクリックして、作成したVPCを選択します。
その後[インターネットゲートウェイのアタッチ]をクリックします。
インターネットゲートウェイのアタッチが完了しました。
これでインターネットゲートウェイを通じて、「VPCとインターネット間の通信」ができる準備が整いました。
ただしVPC内のリソースがインターネットと通信を行うには、後述のルートテーブルの設定でインターネットゲートウェイへのルートを設定する必要があります。
5. NATゲートウェイの作成
次はパブリックサブネットにNATゲートウェイを作成します。
プライベートサブネットはインターネットと直接通信できないサブネットです。しかしプライベートサブネット内のリソースも例えば以下のようなケースで、インターネットへの通信が必要になることがあります。
- ソフトウェアのダウンロードやアップデート
- ソフトウェアのライセンス認証
パブリックサブネットにNATゲートウェイを配置することで、プライベートサブネットからNATゲートウェイを介してインターネットへ通信を行うことができるようになります。
ナビゲーションペインの[NATゲートウェイ]を選択し、[NATゲートウェイの作成]をクリック。
今回は以下の情報でNATゲートウェイを作成します。
- 名前: ※任意の文字列を入力
- サブネット: 作成したパブリックサブネットを選択
- 接続タイプ: パブリックを選択
- Elastic IP 割り当て ID: 割り当てられたElastic IP を選択(※後述)
- タグ: ※任意(自動で[名前]と同じNameタグが入力されます)
[Elastic IP を割り当て]をクリックするとElastic IPが自動で割り当てされます。
注意点としてNATゲートウェイはパブリックサブネットに作成することですね!
プライベートサブネットはインターネットへ接続できないため、パブリックサブネットに配置する必要があります。
上記を設定後、[NAT ゲートウェイを作成]をクリック。
NATゲートウェイが作成されました。
ついでにNATゲートウェイに関連付けたElastic IPも確認してみます。
ナビゲーションペインの[Elastic IP]を選択し確認してみると名前が無いようです。
[Name]がハイフン(-)になっているのでクリックして名前を入力して[保存]をクリック。
名前が変更されました。Nameタグも自動で設定されます。
後々Elastic IPが増えても管理が楽になりますね!
これでプライベートサブネット内のリソースでも、NATゲートウェイ経由でインターネットとの通信ができる準備が整いました。
ただし実際に通信を行うには、後述のルートテーブルの設定でNATゲートウェイへのルートを設定する必要があります。
6. 各サブネットのルートテーブルを作成/設定
次はルートテーブルの作成です。
パブリックサブネットはインターネットゲートウェイへ、プライベートサブネットはNATゲートウェイへ通信できるようルート(経路)を設定します。
ルートテーブルを作成する前に現状のルートテーブルを確認してみます。
■メインルートテーブルについて
VPC作成すると自動でメインルートテーブルが割り当てられています。
他のルートテーブルに関連付けられていないサブネットにはメインルートテーブルが関連付けられています。
今回作成したパブリックサブネットのルートテーブルを確認すると、メインルートテーブルに関連付けられていることが確認できます。
同様にプライベートサブネットのルートテーブルもメインルートテーブルに関連付けられています。
サブネットごとに用途が違うため、それぞれのサブネット用のルートテーブルを作成し関連付けを変更していきます。
■ルートテーブルの作成(パブリックサブネット用)
パブリックサブネットはインターネットと通信するため、インターネットゲートウェイへのルートを追加しておきます。
VPCのページでナビゲーションペインの[ルートテーブル]を選択し、[ルートテーブルを作成]をクリック。
今回は以下の情報でパブリックサブネット用のルートテーブルを設定します。
- 名前: ※任意の文字列を入力
- VPC: 作成したVPCを選択
- タグ: ※任意(自動で[名前]と同じNameタグが入力されます)
上記を設定後、[ルートテーブルを作成]をクリック。
ルートテーブルが作成されました。
続けて[ルート]タブを選択し、[ルートを編集]をクリックします。
[ルートを追加]をクリックして以下の情報でルートを追加します。
- 送信先: 0.0.0.0/0
- ターゲット: 作成したインターネットゲートウェイを選択
ターゲットは[インターネットゲートウェイ]を選択すると候補が表示されます。
候補にはNameタグの名前も表示されます。
上記を設定後、[変更を保存]をクリック。
パブリックサブネット用のルートテーブルに、インターネットゲートウェイへのルートが追加されました。
■ルートテーブルの作成(プライベートサブネット用)
次はプライベートサブネット用のルートテーブルを作成します。
プライベートサブネットはNATゲートウェイへのルートを追加します。
今回は以下の情報でプライベートサブネット用のルートテーブルを設定します。
- 名前: ※任意の文字列を入力
- VPC: 作成したVPCを選択
- タグ: ※任意(自動で[名前]と同じNameタグが入力されます)
上記を設定後、[ルートテーブルを作成]をクリック。
ルートテーブルが作成されました。
続けて[ルート]タブを選択し、[ルートを編集]をクリックします。
プライベートサブネット用のルートテーブルにはNATゲートウェイへのルートを追加します。
- 送信先: 0.0.0.0/0
- ターゲット: 作成したNATゲートウェイを選択
上記を設定後、[変更を保存]をクリック。
以上でパブリックサブネット用とプライベートサブネット用のルートテーブル作成は完了です。
ただし現時点ではそれぞれのサブネットにメインルートテーブルが関連付けられているため、
作成したルートテーブルを関連付けるように変更します。
■ルートテーブルをサブネットに関連付ける
作成したルートテーブルに各サブネットを関連付けるよう変更します。
ナビゲーションペインの[ルートテーブル]を選択し、パブリックサブネット用のルートテーブル IDをクリック。
[サブネットの関連付け]タブを選択し、[サブネットの関連付けを編集]をクリックします。
利用可能なサブネット項目で[パブリックサブネット]を選択します。
選択されたサブネット項目にパブリックサブネットが表示されることを確認し[関連付けを保存]をクリック。
パブリックサブネット用のルートテーブルがパブリックサブネットに関連付けられました。
同様にプライベートサブネット用のルートテーブルもサブネットの関連付けを編集します。
プライベートサブネット用のルートテーブルがプライベートサブネットに関連付けられました。
念のためサブネットの詳細からルートテーブルを確認してみます。
ナビゲーションペインの[サブネット]を選択し、それぞれのサブネットの[詳細]を確認。
-
パブリックサブネットの詳細
-
プライベートサブネットの詳細
メインルートテーブルから作成したルートテーブルに変更されていることが確認できました!
これでパブリックサブネットからインターネットゲートウェイへ、プライベートサブネットからNATゲートウェイへ通信できるようになります。
7. EC2インスタンスの作成(Webサーバ)
おまちかねのEC2インスタンス作成です。まずはWebサーバから作成します。
WordPressサイトはインターネットからアクセスできる必要があるため、パブリックサブネットへ作成します。
EC2(Elastic Compute Cloud)のページへアクセスします。
ナビゲーションペインの[インスタンス]を選択し、[インスタンスを起動]をクリック。
今回は以下の情報でEC2インスタンスを作成します。
※設定項目が多いため分けて記載しています
-
名前(Nameタグ): ※任意の文字列を入力
-
Amazon マシンイメージ(AMI): Amazon Linux 2を選択
-
インスタンスタイプ: t3.microを選択
-
キーペア: 新しいキーペアの作成をクリック
キーペアは次回以降サーバ接続で利用します。大切に保管しておきましょう。
-
VPC: 作成したVPCを選択
-
サブネット: 作成したパブリックサブネットを選択
-
パブリック IP の自動割り当て: 無効化を選択
-
セキュリティグループ: セキュリティグループを作成するを選択
- セキュリティグループ名: ※任意の文字列を入力
- セキュリティグループの説明: ※任意の文字列を入力
-
セキュリティグループルール1
- タイプ: SSHを選択
- プロトコル: TCP
- ポート範囲: 22
- ソースタイプ: 「任意の場所」を選択
- ソース: 0.0.0.0/0
- 説明: ※任意の文字列を入力
-
セキュリティグループルール2
- タイプ: HTTPを選択
- プロトコル: TCP
- ポート範囲: 80
- ソースタイプ: 「任意の場所」を選択
- ソース: 0.0.0.0/0
- 説明: ※任意の文字列を入力
Webサーバ用のEC2インスタンスには、次回以降Elastic IPを割り当てるので「パブリック IP の自動割り当て」は無効にしています。
- ストレージ
*ボリュームタイプ: gp3
*ボリュームサイズ: 20GiB
上記を設定後、設定画面横の[概要]を確認して[インスタンスを起動]をクリック。
「インスタンスの起動を正常に開始しました」と表示されるので、[インスタンスID]をクリック。
作成したEC2インスタンスが表示されます。※画像はインスタンスIDでフィルタされています
数分でEC2インスタンスの起動が完了します。ステータスチェックが合格になればOKです。
■EC2インスタンスのクレジット仕様の変更
t3.microはクレジット仕様がデフォルトでunlimited(無制限)になっているため、standard(スタンダード)に変更します。
作成したインスタンスを選択し、詳細情報の[クレジット仕様]を確認。
[アクション]→[インスタンスの設定]→[クレジット仕様の変更]を選択。
[無制限モード]のチェックを外して[保存]をクリック。
再度インスタンスの詳細を表示して、[クレジット仕様]がstandardになっていることを確認。
以上でWebサーバ用のEC2インスタンス作成が完了です。
8. EC2インスタンス作成(踏み台サーバ用)
次は踏み台サーバ(bastion host)用のインスタンスを作成します。
踏み台サーバは接続したいサーバの手前に配置し、踏み台サーバからのみ接続を許可することでよりセキュリティを強化できます。EC2インスタンスの設定は基本的にWebサーバと同じです。
※差異がある項目は星印を付けています
-
名前(Nameタグ): ※任意の文字列を入力
-
Amazon マシンイメージ(AMI): Amazon Linux 2を選択
-
インスタンスタイプ: t3.microを選択
-
キーペア名: Webサーバ用インスタンスで作成したキーペアを選択
-
VPC: 作成したVPCを選択
-
サブネット: 作成したパブリックサブネットを選択
-
パブリック IP の自動割り当て: 無効化を選択
-
セキュリティグループ: セキュリティグループを作成するを選択
- セキュリティグループ名: ※任意の文字列を入力
- セキュリティグループの説明: ※任意の文字列を入力
-
セキュリティグループルール
- タイプ: SSHを選択
- プロトコル: TCP
- ポート範囲: 22
- ソースタイプ: 「任意の場所」を選択
- ソース: 0.0.0.0/0
- 説明: ※任意の文字列を入力
-
ストレージ
*ボリュームタイプ: gp3
*ボリュームサイズ: 8GiB ★
踏み台にするだけなのでEBSボリュームは最低限にしています。
踏み台サーバには、後ほどElastic IPを割り当てるので「パブリック IP の自動割り当て」は無効にしています。
EC2インスタンス作成後は[クレジット仕様]をstandardに変更します。
以上で踏み台サーバ用のEC2インスタンス作成が完了です。
WebサーバへSSH接続は踏み台サーバからのみ行えるようWebサーバのセキュリティグループの設定を変更します。
セキュリティグループの設定変更は以下のドキュメントをご参考下さい。
- タイプ: SSHを選択
- プロトコル: TCP
- ポート範囲: 22
- ソースタイプ: 任意の場所を選択
- ソース: 踏み台サーバのセキュリティグループ
- 説明: ※任意の文字列を入力
9. EC2インスタンスの作成(データベース用)
こちらは重要なデータベース用のサーバのため、インターネットから直接アクセスさせないようプライベートサブネットに作成します。
※Webサーバと差異がある項目は星印を付けています
-
名前(Nameタグ): ※任意の文字列を入力
-
Amazon マシンイメージ(AMI): Amazon Linux 2を選択
-
インスタンスタイプ: t3.microを選択
-
キーペア: 新しいキーペアの作成をクリック
キーペアはデータベースサーバ用に新しく作成しておきます。
-
VPC: 作成したVPCを選択
-
サブネット: 作成したプライベートサブネットを選択
-
パブリック IP の自動割り当て: 無効化を選択
-
セキュリティグループ: セキュリティグループを作成するを選択
- セキュリティグループ名: ※任意の文字列を入力
- セキュリティグループの説明: ※任意の文字列を入力
-
セキュリティグループルール1
- タイプ: SSHを選択
- プロトコル: TCP
- ポート範囲: 22
- ソースタイプ: 「カスタム」 を選択 ★
- ソース: 踏み台サーバのセキュリティグループを選択 ★
- 説明: ※任意の文字列を入力
-
セキュリティグループルール2
- タイプ: MYSQL/Aurora を選択
- プロトコル: TCP
- ポート範囲: 3306
- ソースタイプ: 「カスタム」を選択 ★
- ソース: Webサーバのセキュリティグループを選択 ★
- 説明: ※任意の文字列を入力
サブネットはプライベートサブネットを選択します。
セキュリティグループルールは2つ設定します。
1つ目は踏み台サーバからのみSSH接続を許可するルール。
2つ目はWebサーバからMySQLへリクエストを許可するルールです。
インスタンス作成後は[クレジット仕様]をstandardに変更します。
以上でデータベース用のEC2インスタンス作成が完了です。
さいごに
次回はWordPressのセットアップまで進めたいと思います。
Lv99になる頃にはどんな構成になっているのか楽しみですね。
頑張ってレベル上げしていきます!
Discussion