LoginSignup
27
29

More than 1 year has passed since last update.

【WordPress用】目指せAWS環境構築

Last updated at Posted at 2022-02-02

はじめに

自分用のメモ書きの側面もありますがせっかくなので記事にしました。
AWSの無料枠を用いてWordPressでサイトを作るための土台を作っていこうと思います。
せっかくなのでいつの日か冗長化しやすい構成を目指してみます。(Route53は無料じゃないので未使用)
色んなサイトをかいつまんで参考にしていますのでおかしなところがあるかもしれません。

筆者の経歴

経歴
2019年4月 未経験の新卒としてWEB企業に入社                    会社のサービス全般の基盤を扱う開発部に配属
2019年4月~2020年6月 サービス基盤を扱う部署にてポイント系事業の運用保守を担当
2020年6月 インフラエンジニアとしてDWHを扱う部署へ異動
2020年7月~ DWHチームとして日時月次のデータ連携業務などを主に担当
2021年12月 AWS ソリューションアーキテクトアソシエイトを取得
2022年2月 現在に至る

筆者のスキル

  • DWHチームではデータ抽出業務が主なためSQLをよく使用
  • AWSアソシエイト資格は取得したが業務で触っているリソース以外の使用経験は無し
  • 業務で使用しているリソースに関しても一から環境構築したわけではなく既存環境の運用
  • 結論:一度も最初から環境構築したことがない!!

今回やりたいこと

  • AWSにて環境を構築する
  • 冗長化に対応している構成にする
  • 後の工程でWordPress環境を構築しやすいようにする
  • とにかく環境構築を頑張る(最重要)

AWSアカウントを作る

この手順に関しては語ることもないですね。

AWSのアカウント作成ページ

お金の都合上できるだけ無料枠のみを使用します。

VPCの作成

マネージメントコンソールには入れたらAWS上にVPCを作成します。
(これから作成するEC2やRDSなどが含まれるAWS上のプライベートな領域)

1. 左上の検索ボックスからVPCと検索し、VPC設定画面へ移動。

2. サイドバーのVPC選択した後に、『VPCの作成』を押下。
image.png

3. 画像のような画面が出てくるので必要な情報を記載した後、ページ下部にある『VPCを作成』を押下。
image.png

名前タグ(Name Tag): 任意の文字列(今回はmff_vpcとします)
IPv4 CIDR: 10.0.0.0/16

4. 無事にVPCが作成されました。
image.png

現在の状態①

image.png

IGWの作成とアタッチ

VPCの作成が終わったらこの後に作成するEC2などがインターネットと通信するための入り口となるインターネットゲートウェイを作成します。
(これを作成しないとAWS内にただリソースがあるだけでWEBサイトなどをインターネットで公開できない)

1. VPCのコンソール画面のサイドバーのインターネットゲートウェイを選択した後に、『インターネットゲートウェイの作成』を押下。
image.png

2. 名前タグ(Name Tag)を設定し『インターネットゲートウェイの作成』を押下。
image.png

名前タグ(Name Tag): 任意の文字列(今回はmff_igwとします)

3. 無事にIGWが作成されました。
image.png

4. 作成したVPCを選択した状態で右上のアクションボタンを押下し『VPCにアタッチ』を押下。
image.png

5. 使用可能なVPCに先ほど作成したVPCが出てくるので選択し『インターネットゲートウェイのアタッチ』を押下。
image.png

6. 状態が『Attached』になっていればIGWがVPCにアタッチできています。
image.png

サブネットの作成

次にVPCの中にサブネットを作成します。
サブネットには2つ種類がありパブリックサブネットとプライベートサブネットがあります。
かなり簡潔な解説をすると下記になります。
パブリックサブネット:WEBサイト用EC2などのユーザーが接続してくるリソースを置く領域
プライベートサブネット:データベースなどのユーザーには接続してほしくないリソースを置く領域

今回はいざというときに冗長化できるようにパブリックサブネットとプライベートサブネットを
それぞれ異なるアベイラビリティゾーンに1つずつ作成します。

パブリックサブネットの作成

1. VPCのコンソール画面のサイドバーのサブネットを選択した後に、『サブネットの作成』を押下。
image.png

2. 画像のような画面が出てくるので必要な情報を記載した後、ページ下部にある『サブネットの作成』を押下。
image.png

VPC ID: 先ほど作成したVPCを選択 
名前タグ(Name Tag): 作成したAZがわかりやすい任意の文字列(今回はmff_pub_sub_aとします)
アベイラビリティゾーン:ap-northeast-1a
IPv4 CIDR ブロック: 10.0.10.0/24

3. 同様の手順で二つ目のサブネットを作成します。

VPC ID: 先ほど作成したVPCを選択 
名前タグ(Name Tag): mff_pub_sub_c
アベイラビリティゾーン:ap-northeast-1c
IPv4 CIDR ブロック: 10.0.20.0/24

image.png

4. 作成したサブネットを選択し右上のアクションボタンの『サブネットの設定を編集』を押下。
『パブリック IPv4 アドレスの自動割り当てを有効化』にチェックを入れた後、ページ下部の保存を押下。
image.png

5. 作成したサブネットのルーティングを変更するためにルートテーブルを更新します。
VPCのコンソール画面のサイドバーのルートテーブルを選択した後に、VPCと紐づいているルートテーブルを作成。
右上のアクションボタンの『ルートを編集』を押下。

6.下記のような画面が出てくるので必要な情報を記載した後、ページ下部にある『変更を保存』を押下。
image.png

送信先:0.0.0.0/0 (すべてのアクセスを許可する的な意味合いです)
ターゲット: インターネットゲートウェイからmff_igwを選択

7. 更新したルートテーブルを選択しサブネットの関連付けを押下した後『サブネットの関連付けを編集』を押下。
image.png

8. パブリックサブネット二つを選択した後『関連付けを保存』を押下。
image.png

9. 正常にサブネットが紐づけられていれば成功です。

プライベートサブネットの作成

1. サブネットの作成手順はパブリックサブネットの作成の手順1~3と同様です。内容は下記でよいかと思います。

VPC ID: 先ほど作成したVPCを選択 
名前タグ(Name Tag): mff_pte_sub_a
アベイラビリティゾーン:ap-northeast-1a
IPv4 CIDR ブロック: 10.0.30.0/24
VPC ID: 先ほど作成したVPCを選択 
名前タグ(Name Tag): mff_pte_sub_c
アベイラビリティゾーン:ap-northeast-1c
IPv4 CIDR ブロック: 10.0.40.0/24

2. プライベートサブネットはデフォルトのルートテーブルを用います。

現在の状態②

image.png

セキュリティグループの作成

EC2とELB用にセキュリティグループの作成をします。
セキュリティグループを設定しないとアクセスされ放題になってしまったりするので出来る限り必須の作業です。前提として今回はオートスケールに対応したEC2はパブリックサブネットに配置します。

EC2用のセキュリティグループの作成

1. EC2のコンソール画面のサイドバーのセキュリティグループを選択した後に、『セキュリティグループの作成』を押下。
image.png

2. 画像のような画面が出てくるので必要な情報を記載した後、ページ下部にある『セキュリティグループを作成』を押下。
image.png

・基本的な詳細
セキュリティグループ名: 任意の文字列(今回はmff_ec2_SGとします)
説明: 任意の説明文
VPC:先ほど作成したVPC
IPv4 CIDR ブロック: 10.0.40.0/24

・インバウンドルール
1、タイプ: SSH  プロトコル: TCP ポート範囲: 22 ソース: カスタム 0.0.0.0/0
2、タイプ: HTTP プロトコル: TCP ポート範囲: 80 ソース: カスタム ::/0
3、タイプ: HTTP プロトコル: TCP ポート範囲: 80 ソース: カスタム 0.0.0.0/0

ELB用のセキュリティグループの作成

1. EC2のコンソール画面のサイドバーのセキュリティグループを選択した後に、『セキュリティグループの作成』を押下。

2. ELBはHTTPアクセスのみを受け付ければいいので下記の内容で作成します。

・基本的な詳細
セキュリティグループ名: 任意の文字列(今回はmff_elb_SGとします)
説明: 任意の説明文
VPC:先ほど作成したVPC
IPv4 CIDR ブロック: 10.0.40.0/24

・インバウンドルール
1、タイプ: HTTP プロトコル: TCP ポート範囲: 80 ソース: カスタム ::/0
2、タイプ: HTTP プロトコル: TCP ポート範囲: 80 ソース: カスタム 0.0.0.0/0

ターゲットグループの作成

ターゲットグループとは、ELBが受け付けたリクエストの振り分け先の事です。

1. EC2のコンソール画面のサイドバーのターゲットグループを選択した後に、『Create target group』を押下。
image.png

2. 画像のような画面が出てくるので必要な情報を記載した後、ページ下部にある『Next』を押下。
image.png
image.png

3.遷移したページ下部の『Create target group』を押下するとターゲットグループが作成される。
image.png

ELBの作成

作成したターゲットグループをELBを作成し紐づけます。

1. EC2のコンソール画面のサイドバーのロードバランサ―を選択した後に、『ロードバランサ―』を押下。

2. 一番左のALBを選択
image.png

3.画像のような画面が出てくるので必要な情報を記載していきます。

  • 基本的な設定
Load balancer name: 任意の文字列(今回はmff-albとしています)

image.png

  • ネットワークマッピング
VPC: 先ほど作成したVPCを選択
Mappings: 先ほど作成したパブリックサブネットをそれぞれのAZで選択

image.png

  • セキュリティグループ
Security groups: 先ほど作成したelb用のセキュリティグループを選択

image.png

  • ルーティング
Select a target group: 先ほど作成したターゲットグループを選択

image.png

4.Summaryに手順3で選択したものが表示されるので確認し問題がなければ『Create load balancer』を押下。
image.png

現在の状態③

image.png

Auto Scalingに対応したEC2の作成

ようやく箱組が作り終わったのでここからはAuto Scalingグループを作成していきます。
Auto ScalingではEC2の負荷が高まった際などに自動的にインスタンスを増やしたりすることができます。

Auto Scalingの起動テンプレートの作成

この手順ではEC2がどのような状況になったらAuto Scalingするかどうかの設定を行います。

1. EC2のコンソール画面のサイドバーのテンプレートの起動を選択した後に、『起動テンプレートを作成』を押下。

2. 画像のような画面が出てくるので必要な情報を設定していきます。

  • AMIの選択

今回は『Amazon Linux 2』を使用します。
image.png

  • インスタンスタイプ
    無料枠で使える『t2.micro』を使用します。
    image.png

  • キーペア
    新しいキーペアの作成を押下しpemキーを作成します
    image.png

  • ネットワーク設定
    先ほど作成したEC2用のセキュリティグループを選択
    image.png

  • 高度な詳細
    ユーザーデータに下記を記載しインスタンスが立ち上がった際に自動で実行するように設定

#!/bin/bash
sudo yum update -y 
# apacheをインストール
sudo yum install httpd -y
# apacheの起動
sudo service httpd start
# PHPのインストール
sudo amazon-linux-extras install php7.3 -y
sudo yum install php php-mbstring -y
#MariaDBを削除
sudo yum remove mariadb-libs -y
#MYSQLをインストール
sudo yum install mysql -y
# /var/www/html/ ディレクトリ以下にI'm healthyと記入されたindex.htmlを作成
sudo echo "I'm healthy" > /var/www/html/index.html

3. ページ右部の『起動テンプレートを作成』を押下。

Auto Scalingグループの作成

1. 作成した起動テンプレートを選択した状態で右上のアクションボタンを押下し『Auto Scaling グループを作成』を押下

2. 起動テンプレートが選択されていることを確認し次へを押下

3. 画像のような画面が出てくるので必要な情報を設定し次へを押下。

VPC: 先ほど作成したVPCを選択
アベイラビリティゾーンとサブネット: 作成した二つのパブリックサブネットを選択

image.png

4. 画像のような画面が出てくるので必要な情報を設定し次へを押下。

ロードバランシング: 既存のロードバランサ―にアタッチ
ロードバランサ―のターゲットグループから選択: 先ほど作成したターゲットグループを選択
ヘルスチェック: ELBを選択

image.png

5. 画像のような画面が出てくるので必要な情報を設定し次へを押下。
今回は無料枠でのお試しなので下記の設定にします。
image.png

6. 通知の設定は今回は省略します。

7. タグの設定は今回は下記のように設定しました。
image.png

8. 内容を確認し問題がなければページ下部の『Auto Scalingグループを作成』を押下。

9. Auto Scalingグループが作成されたのを確認。
image.png

10. EC2のコンソール画面のサイドバーのインスタンスを押下しインスタンスが作成されているか確認。
image.png

11. ロードバランサ―のDNS名をブラウザに打ち込み正常に接続できるか確認。

現在の状態④

image.png

データベースの作成

プライベートサブネットにRDSを利用しデータベースを作成します。

DBサブネットグループの作成

1. RDSのコンソール画面のサイドバーのサブネットグループを選択した後に、『DB サブネットグループを作成』を押下。

2. 画像のような画面が出てくるので必要な情報を下記のように設定し『作成』を押下。

名前: 任意の文字列(今回はmff-db-subnet-groupとします)
VPC: 先ほど作成したVPCを選択
アベイラビリティゾーン: ap-northeast-1aとap-northeast-1c
サブネット: 先ほど作成した二つのプライベートサブネット

image.png
image.png

DBの構築

1. RDSのコンソール画面のサイドバーのデータベースを選択した後に、『データベースを作成』を押下。

2. 画像のような画面が出てくるので必要な情報を下記のように設定し設定し次へを押下。

  • エンジンのオプション
    MariaDBを選択
    image.png

  • テンプレート
    今回は無料利用枠を選択
    image.png

  • 設定

DB インスタンス識別子: 任意の文字列(今回はmff-sitedbとしています)
マスターユーザー名: root

image.png

  • 接続
VPC: 先ほど作成したVPCを選択
サブネットグループ: 先ほど作成したサブネットグループを選択
パブリックアクセス: なし
VPCセキュリティグループ: 新規作成
新しい VPC セキュリティグループ名: 任意の文字列(今回はmff-db-SGとしています)

image.png

3. データベース認証はパスワード認証を選択しページ下部のデータベースを作成を押下。

4. 右上の認証情報の詳細を表示を押下しマスターパスワードを確認。

EC2とDBの接続

データベースを作成したのでEC2と紐づけてEC2からDBへ接続できるようにします。

1. EC2のコンソール画面のサイドバーのセキュリティグループを選択した後に、DB作成時に作成したセキュリティグループがあることを確認。
image.png

2. インバウンドルールを編集、この際デフォルトで設定されていたルールは削除。

・インバウンドルール
タイプ: すべてのトラフィック  プロトコル: すべて ポート範囲: すべて ソース: カスタム 先程ec2用に作成したセキュリティグループ

EC2およびDBの接続確認

1. 稼働しているEC2のパブリック IPv4 アドレスを用いてSSH接続できるか確認。

・EC2接続時
ユーザー名: ec2-user
使用するキー: 先ほど作成したpemキー

2. 接続できることが確認出来たら今度はEC2上からDBへ接続できるか確認。

・DB接続時
mysql -h DBのエンドポイント -u root -p
pass: DBを作成した時のマスターパスワード

最終的な構成図

少々おかしな点はあるかもしれませんが最終的な構成は下記となります。
ap-northeast-1cのAZには今回は無料枠で作成という趣旨なので何も配置できていませんがいざというときはEC2をAuto ScalingしたりDBのリードレプリカを作成したりします。
image.png

まとめ

これまで実務で経験してきた環境はあくまで既存で構築済みの環境でした。
既存の環境ではどうしても『何故この部分はこのように構築しているのか?』といったような疑問が出てくることが多かったです。

今回、完全に1から環境を作成する為に色々な方の技術記事を拝見して、結果として多くの知見を得ることが出来ました。
ほかの方から知見を得るだけでなくその情報を元に、実際に手を動かし構成図なども作成しながら作業を行えたので私がAWS SAAを取得した際に得た知識も活かせた気がしています。

しかし今回作成した環境には私が思いつくだけでもまだまだ改善点があります。

ドメイン名、SEO対策、セキュリティ対策、EC2やDBのバックアップ、監視、AMI更新、etc…

少なくとも上記の点は今後改良していきたいところです。
まだまだ未熟な私が自分の為の備忘録も兼ねて作成した記事ですが
よろしければ LGTM などで応援のほどよろしくお願いします!

(続)Wordpressのインストール及び設定

Wordpressのインストール及び設定

27
29
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
27
29