0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AWSでWordPressを構築

Last updated at Posted at 2024-02-06

内容
・目標
・公式サイト
・使用できるサービス
・実行環境
・目指す構成
・VPCの作成
・EC2起動設定
・RDS作成
・ELB作成
・WordPressの初期設定
・WordPressがインストールされたEC2のAMI(イメージ)を作成して2個目のEC2を作成
・2個目のEC2をELBに登録
・RDSのDBインスタンスをマルチAZ化
・EC2の可用性の確認
・RDSインスタンスのフェイルオーバーを行い、全体の可用性を確認
・撤収!!!
・結果

目標

AWSに関しての基礎技術の修得を目標に再びWordPressをデプロイしていきます!
ドメイン取得から期間が経っていないため、今回ドメインは使用できず、SSLの設定もしていません。ドメインなどの情報に関しては最下部にリンクがあります。

公式サイト:

今回はこちら↓↓↓

CLI中心で設定する場合↓↓↓

使用できるサービス

EC2,RDS,ELB,VPC,(´▽`)

実行環境

IAMユーザー(全権限付与済み。)

目指す構成

image.png

VPCの作成

image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
VPC作成完了!!

EC2起動設定

image.png
image.png
Amazon Linux2023ではなく、AmazonLinux2を選択する。
image.png
今回はSSH接続をしないため、キー作成なし。
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png

自動的にWordPressがインストールされ、立ち上がるスクリプトを設定
WordPress、PHP、mySQL、Apacheがインストールされますね。(*‘∀‘)綺麗なコードですね。
image.png

#!/bin/bash

yum -y update
yum -y install php httpd mysql

PHP_VERSION=`php -v | head -n 1 | awk '{print $2}' | awk -F "." '{print $1}'`
while [  ${PHP_VERSION} -ne 7 ]
do
amazon-linux-extras install php7.4 -y
PHP_VERSION=`php -v | head -n 1 | awk '{print $2}' | awk -F "." '{print $1}'`
done

yum -y install 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

image.png
image.png

パブリックIPアドレスをブラウザにコピペすることで。。。
でけた!
image.png

ここから参考として、EC2インスタンスに接続する方法
接続ボタンから
image.png
ブラウザ越しに接続完了
image.png

RDS作成

DB用のセキュリティグループの作成
image.png
image.png

セキュリティグループONセキュリティーグループに設定する。
つまり先程作成したEC2からの接続を許可する。
image.png
アウトバウンドはこのまま。
image.png

RDSの作成
image.png

最初にどこのサブネットに配置するか設定する。
image.png
image.png

構成図を確認し、AZは2つ。
RDSを置くサブネットは2.0と3.0を選択してグループを作成する。
image.png
image.png

データベースの作成
image.png
image.png
image.png
image.png
image.png
image.png

パスは忘れぬよう。
image.png
image.png

デフォルトでスケーリングが有効なのですね。
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png

エンドポイントをコピーしておく。
image.png

ELB作成

EC2の画面からELBを作成する。

最初にセキュリティグループを作成していく。
何かする時(リソース作成、ロール)はまずセキュリティグループを先に作成!φ(..)メモメモ
image.png
image.png
image.png

英語で注意書きがありますね(p_-)

ソースが0.0.0.0/0または::/0のルールは、すべてのIPアドレスがインスタンスにアクセスできるようにします。セキュリティグループのルールを、既知のIPアドレスからのアクセスのみを許可するように設定することを推奨します。」

・セキュリティグループ(無料)
https://docs.aws.amazon.com/ja_jp/vpc/latest/userguide/vpc-security-groups.html
プロトコルに応じた接続に限定できるもの。

・ネットワークACL(無料)
https://docs.aws.amazon.com/ja_jp/vpc/latest/userguide/vpc-network-acls.html
IPアドレスの範囲指定などで、特定のアドレスを除いては通信を拒否することができる。

・AWS Shield(一部有料)
https://aws.amazon.com/jp/shield/features/
特定のアドレスを含めてDDoS攻撃などを(L3,4,7)、ACLの技術を活用して緩和、モニタリングする。

・AWS WAF(ルールによって有料)
https://aws.amazon.com/jp/waf/features/
より高度なDB侵入や、セッションの乗っ取り、保護されていない通信の改ざんなどから保護

・AWS Firewall Manager(有料)
https://aws.amazon.com/jp/firewall-manager/features/
はい。ほぼ全部の機能を果たしていらっしゃいます。ACLだけ別に自分で設定できるみたいですね。

AWSの責任共有モデルであります通り、ここをしっかり押さえないとですね!
つまり追求したい場合は、用途やセキュリティレベルに応じて、ユーザーが決めないといけない所ですねφ(..)メモメモ
次いきやす

image.png
image.png

ターゲットグループ(接続先)の作成
ELBとEC2を紐づけるために作成するもの。
image.png
image.png
image.png
image.png

次の画像のターゲットグループを作成するなでの「ヘルスチェック」とは、単なる死活監視ではなく、オートスケーリングのトリガーとなるもの。
このヘルスチェックのパスは、手が込んでいるのか調べても出てこないw
通信が途絶えた場合に、ELBが働く設定にする。といったところは確保できているようなので、次へ進みます。

image.png
image.png
image.png

紐づけたいEC2にチェックを付けて、「保留中として以下を含める」をクリック。
image.png
image.png

次はELBを設定していく。
image.png
image.png

ALBを選択
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png

ここのDNS名をメモしておく。
image.png

デフォルトアクションの「keiji-tg」をクリックし、ロードバランサーから見てどのサーバーに流しているか確認できる。
image.png

Healthyとなっているので、問題なく流れている状態
image.png

今こんな感じ
image.png

WordPressの初期設定

ELBの画面からDNS名をコピーして、ブラウザにペースト。
image.png

RDSのインスタンスについて確認↓
image.png
エンドポイントをコピーします。
image.png

エンドポイントは、データベースのホスト名にペースト。
その他必要事項を確認しながら入力して送信する。
image.png
image.png

インストールの実行をしたら、次の画面に遷移する。
必要事項を入力し、他の媒体などにパスを記録します。WordPressの管理画面に入るためです!
image.png
image.png
image.png

いけましたね!|д゚)
image.png
※本記事の最後に、SSL証明書(HTTPS通信)の取得方法、Rout53でのドメイン取得方法についての記事を添付しています。

WordPressがインストールされたEC2のAMI(イメージ)を作成して2個目のEC2を作成

今こんな感じ(まだAMIは作成していない。)
image.png

image.png
image.png

※「再起動しない」とあるが、これをチェックすることで、イメージを作る側のインスタンスを再起動せずに、イメージを作成することができる。ハンズオンとして今回は実施しているため、今回は、チェックなしで設定する。
image.png
あとはデフォルト。
image.png
image.png

蛇足:私の場合だけかもしれませんが、イメージ作成完了のポップアップが出ませんでした(^^;なかなかイメージ作成されないなと待っていたのですが、AMIのコンソールを覗くと完成していましたw
image.png
AMIインスタンスを起動
image.png
image.png
AMIは作成済みなのでここでは作成しません。ブランクで進みます。
image.png

image.png
image.png
image.png
image.png

元々のEC2では、ユーザーデータに各インストールを行うよう入力したので、ここでは高度な設定は行わない。
image.png
image.png
image.png

2個目のEC2をELBに登録

image.png
image.png
image.png
「保留中として以下を含める」をクリック
image.png
image.png
image.png
image.png

RDSのDBインスタンスをマルチAZ化

下図を目指します。
image.png

RDSに移動
該当のDBを選択した後、赤枠の変更をクリックする。
(参考)アクションから「マルチAZ配置への変換」を選択することもできるみたいですね。
image.png

「スタンバイインスタンスを作成する。」にチェックを付け、スクロールして「続行」をクリックします。
image.png

「すぐに適用」を選択して「DBインスタンスを変更」をクリックする。
image.png
image.png

EC2の可用性の確認

はじめにEC2を停止させる。
image.png

稼働状況に異常がないことを確認
image.png
EC2の画面からELBの詳細を見ます。
image.png

ELBを選択し、DNS名をコピーしてブラウザからWordPressを開けるか確認します。
image.png
image.png
通常どおり見えますね。

ここでEC2(keiji-web1)を停止させます。
image.png
image.png

ELBは1つ正常、1つ未使用のカウントになっていますね。
image.png

image.png
見えていますね。
ここでEC2(keiji-web1)を開始して、元に戻します。

RDSインスタンスのフェイルオーバーを行い、全体の可用性を確認

image.png
※フェイルオーバーとは
https://repost.aws/ja/knowledge-center/rds-fail-over

マルチ AZ DB インスタンスで計画的または計画外の停止が発生した場合、Amazon RDS は、別のアベイラビリティーゾーンのスタンバイレプリカまたはセカンダリインスタンスに自動的に切り替わること。

⇒つまり、この検証は使っている側のRDSを停めて、可用性維持のために別に置いているDBが稼働し、異常が見られるか検証するということ。

早速、現状確認から進めます。1aで稼働しています。
image.png
RDSのコンソールからイベントをクリックし、これまでのイベントを確認します。
「作成」した系しかありませんね。
image.png
ばっちり稼働中ですね。
image.png
「再起動」をかけます。(35秒でフェイルオーバーされる仕様)
image.png
image.png
image.png

ほんとに復帰するのが早いです。1cでの稼働に代わっています。
image.png
image.png
image.png

撤収!!!

作成したリソースを消して次の学習に備えます(。-`ω-)
RDS削除
image.png
※スナップショットは作成しません。入力欄に「delete me」と入力しましょう。
image.png
image.png

サブネットグループを削除
image.png
image.png

EC2削除
image.png
image.png

AMI削除(EBS)
image.png
image.png
EBSのスナップショットをクリック。
image.png
image.png

ELB削除
image.png
image.png

ターゲットグループ削除
image.png
image.png

VPC削除
image.png
image.png

結果

勉強になりました。セキュリティに関すること、冗長構成、一番は手を動かして学習できたことでしょうか。継続します!

以下、ドメインなどの参考サイトです。
AWSでのドメイン取得とSSL証明書発行についての全般理解記事
https://qiita.com/nakanishi03/items/3a514026acc7abe25977
公式のCertificate Manager(SSL発行)に関する記事
https://aws.amazon.com/jp/certificate-manager/pricing/
公式のRoute 53(ドメイン管理)に関する記事
https://aws.amazon.com/jp/route53/

では!

0
1
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
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?