はじめに
こんにちは。クラウド事業部の山田です。
AWS構築未経験である私が、下記サイトを参考にさせていただきWordPressをホストする環境の構築を例にAWSの操作を学びました。
参考) 【AWS】EC2とRDSを組み合わせてWordPressを構築する。
目次
前編
後編
はじめに
・目次
環境構築続き
・4.RDSインスタンス作成
・DB用セキュリティグループ作成
・サブネットグループ作成
・RDSインスタンスとDBの作成
・5.WordPress初期設定
・6.2つ目のEC2インスタンスの作成
・AMI作成
・インスタンス作成
・ターゲットグループへの登録
・7.RDSインスタンスのマルチAZ配置化
前提知識
- AWS Certified Solutions Architect – Associate につづき、先月 AWS Certified Solutions Architect - Professional に合格しました。
- AWSの実務経験は無く画面に触れたこともない状態でした。
- WindowsやLinuxのWebサーバを中心とするオンプレ環境の構築や運用に携わったことがあり、各AWSサービスの機能についてはイメージがつきます。
参考サイトに関する追加情報など
- 記載に沿って操作すればサイト表示までスムーズに行うことができますが、前提となる一部サービスの記載不足(ルートテーブル作成など)があるため追加しました。またそれに伴い設定順序を変更してあります。
- 2021年の公開日と画面構成にいくつか差異がありました。
- 構築案件に携わるイメージで、構築に先立って決めておくべき設定項目を冒頭に列挙しました。
- EC2インスタンスとRDSインスタンスの起動/停止手順は別途ご確認ください。
環境概要
参考サイトの手順を参考に同一の環境を構築しました。
VPC上の2つのアベイラビリティゾーンにてそれぞれパブリックサブネットとプライベートサブネットを用意し、パブリックサブネットにはWordPressが起動するEC2インスタンス、プライベートサブネットにはマルチAZ構成のRDSインスタンスを配置します。
EC2インスタンスはELBから負荷分散します。
事前確認事項
リソースに対する接続元IPを制限する場合
本手順ではEC2に対するSSH接続の接続元GIPを制限する例を記載しています。
操作端末のGIPを確認しておきEC2用セキュリティグループの設定時に指定します。
参考) アクセス情報【使用中のIPアドレス確認】
構築にあたり必要となる設定項目
※ リソース名は案件ごとのネーミングルールに基づいて指定してください。
今回は社内検証のため「syamada-<サービス略称>-<番号>」としました。
■配置先■
・リージョン
環境を構築するリージョン。
・アベイラビリティゾーン(×2)
冗長構成のため対象リージョン内のアベイラビリティゾーン2つを指定。
■作成のためにリソース名などを確定しておくサービス■
・VPC
IPv4 CIDR ブロックも指定します。(例:10.0.0.0/16)
・サブネット(×4)
各アベイラビリティゾーンにパブリックサブネット用途とプライベートサブネット用途のものを作成 。
IPv4 CIDR ブロックも指定します。(例:10.0.11.0/24、10.0.12.0/24)
・インターネットゲートウェイ
・ルートテーブル
サブネット内のインスタンスがインターネットゲートウェイに通信するための設定。
・ターゲットグループ
ELBの負荷分散対象となるEC2インスタンスを登録するグループ。
・ELB用セキュリティグループ
・ELB
・キーペア
EC2にSSH接続するためのキー。
・EC2用セキュリティグループ
・EC2インスタンス(×2)
・DB用セキュリティグループ
・サブネットグループ
DB配置先として指定するプライベートサブネットのグループ。
・RDSインスタンス
・AMI
2つ目のEC2インスタンスを作成するために1つ目のEC2インスタンスをもとにAMIを作成します。
環境構築
共通操作
各AWSサービス画面の表示とリソース作成
1.下記いずれかの操作で作成対象のAWSサービスのページを開くことで(例: EC2)AWSアカウント内の同種のリソースの一覧を確認できます。
・上部左の検索ボックスで検索し、表示されるサービス一覧から選択する。
・上部左[サービス]を選択し、[すべてのサービス]を開いて表示されるサービス一覧から選択する。
・ホーム画面の[最近アクセスしたサービス]に表示されていればそこから選択する。
または[最近アクセスしたサービス]下部の[すべてのサービスを表示]を開いて表示されるサービス一覧から選択する。
2.各AWSサービスのページにて、オレンジで表示される[インスタンスを起動]ボタンや[ x x x の作成]ボタンをクリックすることでリソース作成画面に進み、作成実行後にはリソース一覧に登録されます。
検証環境特有の操作:作成したリソースをリソースグループに登録
複数人で利用しているAWSアカウントにて自分が作成したリソースだけを一覧表示させる方法を記載します。
1.AWSサービス[Resource Groups & Tag Editor]画面を開きます。
2.左ペイン[リソースグループの作成]を選択し、下記設定でリソースグループを作成します。
・グループタイプ: タグベース
・グループ分けの条件:
タグ:
タグキー: 例)owner
オプションのタグ値: 例)syamada
・グループの詳細
グループ名: <任意の名前>
3.各リソース作成時または作成後の[タグ]画面にて、作成したリソースグループに適合するタグを付与します。
4.AWSサービス[Resource Groups & Tag Editor]画面 - 左ペイン[保存されたリソースグループ]を開き、右ペインに表示される作成済みのリソースグループを開きます。
5.右ペイン[グループリソース]にてタグを付与したリソースの一覧が表示されることを確認します。
1.仮想ネットワーク作成
VPC作成
1.[VPC]作成画面を開きます。
2.下記設定値でリソースを作成します。
・作成するリソース: VPC のみ
サブネット作成 ×4
1.[サブネット]作成画面を開きます。
2.指定したリソース名でリソースを作成します。
インターネットゲートウェイ
1.[インターネットゲートウェイ]作成画面を開きます。
2.指定したリソース名でリソースを作成します。
ルートテーブル
1.[ルートテーブル]作成画面を開きます。
2.指定したリソース名でリソースを作成します。
3.ルートテーブルの接続先にインターネットゲートウェイを登録します。
作成したルートテーブルの設定画面下部[ルート]右端の[ルートを編集]ボタンをクリックします。
4.[ルートを追加]ボタンをクリックし、下記設定を追加したのち画面下部右端[変更を保存]ボタンをクリックします。
・送信先: 0.0.0.0/0
・ターゲット:
インターネットゲートウェイ - <作成したインターネットゲートウェイを指定>
5.続いて、サブネットのうちパブリックサブネットとして使用する2つにおいて、作成したルートテーブルを使用するように設定します。
作成したVPCの設定画面下部[リソースマップ]にて対象のサブネット上に表示される矢印をクリックしてサブネットの設定画面を開きます。
6.サブネットの設定画面下部[ルートテーブル]の[ルートテーブルの関連付けを編集]ボタンをクリックします。
7.[サブネットルートテーブル設定] - [ルートテーブルID]プルダウンにて作成したルートテーブルを指定して下部右端の[保存]ボタンをクリックします。
8.上記操作をもうひとつのパブリックサブネットで実施します。
9.VPCの設定画面下部[リソースマップ]にて、パブリックサブネット×2 ⇒ 作成したルートテーブル ⇒ インターネットゲートウェイが接続されていることを確認します。
2.ELB作成
ターゲットグループ作成
1.[ターゲットグループ]作成画面を開きます。
2.下記設定値でリソースを作成します。
・基本的な設定値
・ターゲットタイプの選択: インスタンス
・ターゲットグループ名: <リソース名を指定>
・プロトコル:ポート: HTTP 80
・VPC: <作成したVPC名>
・ヘルスチェック
・ヘルスチェックプロトコル: HTTP
・ヘルスチェックパス: /wp-includes/images/blank.gif
・ヘルスチェックの詳細設定
・間隔: 6秒
ELB用セキュリティグループ作成
1.[セキュリティグループ]作成画面を開きます。
2.下記設定値でリソースを作成します。
・セキュリティグループ名: <リソース名を指定>
・説明: <任意の文字列(必須)>
・VPC: <作成したVPC名>
・インバウンドルール
・タイプ: HTTP
・ソース: <操作端末のGIP>
ELB作成
1.AWSサービス[EC2]設定画面左ペインの[ロードバランシング]項 - [ロードバランサー]を選択し、右ペインからリソース作成画面を開きます。
2.下記設定値でリソースを作成します。
・ロードバランサータイプ: Application Load Balancer
・ネットワークマッピング
・VPC: <作成したVPC名>
・マッピング: <パブリックサブネットを両方指定>
・セキュリティグループ
・セキュリティグループ: <作成したELB用セキュリティグループを指定>
・リスナーとルーティング
・プロトコル: HTTP
・ポート: 80
・デフォルトアクション: <作成したターゲットグループを指定>
3.EC2インスタンス作成
キーペア作成
1.AWSサービス[EC2]設定画面左ペインの[ネットワーク & セキュリティ]項 - [キーペア]を選択し、右ペインからリソース作成画面を開きます。
2.下記設定値でリソースを作成します。
設定後に[キーペアを作成]ボタンをクリックするとキーファイルのダウンロードが始まるので操作端末に保存します。
・キーペア名: <リソース名を指定>
・キーペアのタイプ: RSA
・プライベートキーファイル形式: .pem
EC2用セキュリティグループ作成
1.[セキュリティグループ]作成画面を開きます。
2.下記設定値でリソースを作成します。
・セキュリティグループ名: <リソース名を指定>
・説明: <任意の文字列(必須)>
・VPC: <作成したVPC名>
・インバウンドルール
・タイプ: SSH
・ソース: <操作端末のGIP>
・タイプ: HTTP
・ソース: <作成したELB用セキュリティグループを指定>
EC2インスタンス作成
※ 参考サイトでは設定項目ごと数ページに渡る設定画面となっていましたが本検証時は1ページに収まっています。
1.AWSサービス[EC2]設定画面左ペインの[インスタンス]項 - [インスタンス]を選択し、右ペインからリソース作成画面を開きます。
2.下記設定値でリソースを作成します。
・名前とタグ
名前: <リソース名を指定>
・アプリケーションおよび OS イメージ (Amazon マシンイメージ)
・クイックスタート - Amazon Linux
・Amazon マシンイメージ(AMI): Amazon Linux 2 AMI (HVM) - Kernel 5.10, SSD Volume Type
・インスタンスタイプ
・インスタンスタイプ: t2.micro
・キーペア(ログイン)
・キーペア名: <作成したキーペアを指定>
・ネットワーク設定
・VPC - 必須: <作成したVPC名>
・サブネット: <パブリックサブネットのうちの片方を指定>
・パブリック IP の自動割り当て: 有効化
・ファイアウォール(セキュリティグループ)
既存のセキュリティグループを選択する: <作成したEC2用セキュリティグループを指定>
・高度な詳細
・ユーザーデータ - オプション: <参考サイト記載の下記コードを入力します。>
#!/bin/bash yum -y update amazon-linux-extras install php7.4 -y yum -y install mysql httpd php-mbstring php-xml wget http://ja.wordpress.org/latest-ja.tar.gz -P /tmp/ tar zxvf /tmp/latest-ja.tar.gz -C /tmp cp -r /tmp/wordpress/* /var/www/html/ chown apache:apache -R /var/www/html systemctl enable httpd.service systemctl start httpd.service
SSH接続
※ 本検証ではEC2インスタンスのLinuxに直接ログインする操作はありませんが、EC2にアタッチしたセキュリティグループの動作検証を兼ねて接続します。
1.EC2インスタンスのグローバルIPアドレスを確認します。
作成したEC2インスタンスの画面を開きます。
2.[パブリック IPv4 アドレス]の値を確認します。
3.操作端末のターミナルソフトを起動し、下記設定でEC2インスタンスにログインできることを確認します。
・IPアドレス: <確認した[パブリック IPv4 アドレス]の値>
・ユーザー名: ec2-user
・秘密鍵: <キーペア作成時にダウンロードされた.pemファイルを指定>
ターゲットグループへの登録
1.作成したターゲットグループの設定画面を開きます。
2.画面下部[ターゲット]を選択して右[ターゲットを登録]ボタンをクリックします。
3.画面上部[使用可能なインスタンス]項に表示されるEC2インスタンスを選択し、画面中段[保留中として以下を含める]ボタンをクリックして画面下部[ターゲットを確認]項に登録します。
4.画面右下[保留中のターゲットの登録]ボタンをクリックします。
5.ターゲットグループの設定画面に戻り、画面下部の一覧に指定したEC2インスタンスが表示されることを確認します。
「WEB3層のシステムをAWSで構築してみた(WordPress):後編」へつづく