1
0

More than 1 year has passed since last update.

AWSで基本的なブログサービスを構築する(シングル構成)

Last updated at Posted at 2021-11-16

■はじめに

AWS無料利用枠を利用して EC2(wordpress)、RDS シングル構成の基本的なブログサービスを構築したので
その際の手順をまとめました

■対象者

本記事はAWS初学者向けの情報共有として構築手順をまとめています。
また、自分用の手順メモでもあります。

■構成図

image.png

userはブラウザからIPを入力しhttp通信でEC2にアクセスする。
EC2にはmysql、wordpressをインストールし、SQL発行でRDSにアクセス、データを取得し画面表示を行う。
ssh接続はteratermでEC2に接続する際に利用する。

EC2は外部のユーザからのアクセスを受けるが、RDSにはアクセスさせない。
そのためEC2はパブリックサブネットに配置し、RDSはプライベートサブネットに配置する。

■作業内容

大まかに以下。

  1. VPCを作成する
  2. EC2を配置するパブリックサブネットを作成する
  3. RDSを配置するプライベートサブネットを作成する
  4. パブリックサブネットにEC2を作成する
  5. VPCにインターネットゲートウェイを作成する
  6. パブリックサブネットとプライベートサブネットのルートテーブルを編集する
  7. RDSを作成する
  8. EC2にwordpressをインストールする
  9. wordpressにログインする

■作業手順詳細

1. VPCを作成する

【VPC作成手順】

1-1. マネジメントコンソールでVPCを検索 - 左ペイン 「VPC」を選択 - 右上の「VPCの作成」を押下
1-2. 「VPCの作成」画面で以下入力し、「VPCを作成」を押下

・VPCの設定

項目 入力値
名前タグ: test-VPC1
IPV4 CIDRブロック 10.0.0.0/21
IPv6 CIDRブロック IPv6 CIDRブロックなし
テナンシー デフォルト

【補足 テナンシーについて】
テナンシーとは該当VPCのインスタンスをどのハードウェアで実行するかを指定する。
デフォルトなら複数アカウント共有ハードウェア、専有(dedicated)なら専用物理サーバとなる(有料)。


・タグ

項目 入力値
キー: Name
値: test-VPC1

image.png

2. EC2を配置するパブリックサブネット作成をする

【パブリックサブネット作成手順】

2-1. VPC画面 - 左ペイン 「サブネット」を選択 - 「サブネットを作成」を押下

2-2. 「サブネットを作成」画面で以下を入力し、「サブネットを作成」を押下

・VPC

項目 入力値
VPC ID: test-VPC1を選択

・サブネットの設定

項目 入力値
サブネット名: test-pubsub1
アベイリビリティーゾーン: アジアパシフィック(東京)/ap-northeast-1a
IPv4CIDRブロック: 10.0.0.0/24

image.png

3. RDSを配置するプライベートサブネットを作成する

【プライベートサブネット作成手順】

3-1. VPC画面 - 左ペイン 「サブネット」を選択 - 「サブネットを作成」を押下

3-2. 「サブネットを作成」画面で以下を入力し、「サブネットを作成」を押下

・VPC

項目 入力値
VPC ID: test-VPC1を選択

・サブネットの設定

項目 入力値
サブネット名: test-prisub1
アベイリビリティーゾーン: アジアパシフィック(東京)/ap-northeast-1a
IPv4CIDRブロック: 10.0.1.0/24

image.png

4. パブリックサブネットにEC2を作成する

【EC2作成手順】

4-1. マネジメントコンソールでEC2を検索し、右上「インスタンスを起動」を押下

4-2. 「ステップ 1: Amazon マシンイメージ (AMI)」画面
Amazon Linux 2 AMI (HVM), SSD Volume Type(無料利用枠の対象)の64ビット(x86)にチェックを入れ、「選択」を押下

image.png

4-3. 「ステップ 2: インスタンスタイプの選択」画面
t2.micro(無料利用枠の対象)にチェックを入れ、「次のステップ:インスタンスの詳細の設定」を押下

image.png

4-4. 「ステップ 3: インスタンスの詳細の設定」画面

項目 入力値
ネットワーク: test-VPC1 を選択
サブネット: test-pubsub1 を選択
自動割り当てパブリック IP: 有効 を選択

その他項目はデフォルトのままで「次のステップ:ストレージの追加」を押下

image.png

4-5. 「ステップ 4: ストレージの追加」画面
デフォルトのままで「次のステップ:タグの追加」を押下
※「終了時の削除」にチェックを入れない場合、EC2インスタンスを終了・削除してもEBSのみ残る。(料金に影響する可能性がある)

image.png

4-6. 「ステップ 5: タグの追加」画面

「タグの追加」を押下

項目 入力値
キー: Name
値: test-EC2

「次のステップ:セキュリティグループの設定」を押下

image.png

【セキュリティグループ設定】

4-7. 「セキュリティグループの設定」画面

項目 入力値
セキュリティグループ名: test-EC2-SG-1
説明: test-EC2-SG-1

タイプ:SSHの設定はそのまま。すべて許可される設定となっている。
 
「ルールの追加」を選択

項目 入力値
タイプ: HTTP
プロトコル: TCP
ポート範囲: 80
ソース: カスタム、0.0.0.0/0, ::/0 (※ ::/0はIPv6の全てという設定)

「確認と作成」を押下
※ SSHはのちほどteratermを用いて ssh接続を行うために必要。HTTPはユーザがブラウザからの通信でブログを閲覧する際に必要。

image.png

4-8. 「インスタンス作成の確認」画面

既存のキーペアを選択するか、新しいキーペアを作成します(のちのちEC2接続の際に必要)
新しいキーペアの作成

項目 入力値
キーペアのタイプ: RSA
キーペア名: test-EC2-keypair

「キーペアのダウンロード」を押下
「インスタンスの作成」を選択

image.png

5. VPCにインターネットゲートウェイを作成する

【インターネットゲートウェイ作成手順】

5-1. VPC画面 - 左ペイン「インターネットゲートウェイ」 - 右上「インターネットゲートウェイの作成」を押下

5-2. 「インターネットゲートウェイの作成」画面で以下を入力し、「インターネットゲートウェイの作成」を押下

・インターネットゲートウェイの設定

項目 入力値
名前タグ: test-internet-GW

・タグ

項目 入力値
キー: test-internet-GW

image.png

まだVPCにアタッチされていないのでDetachedとなっている

image.png

【インターネットゲートウェイをVPCにアタッチする】

5-3. test-internet-GWにチェックを入れ、右上「アクション」 - VPCにアタッチを選択

image.png

5-4. 「VPCにアタッチ」画面で以下入力し、「インターネットゲートウェイのアタッチ」を押下

・VPC

項目 入力値
使用可能なVPC: test-VPC1を選択

image.png

状態がAttatchedになる
image.png

6. パブリックサブネットとプライベートサブネットのルートテーブルを編集する

【パブリックサブネットのルートテーブルにインターネットゲートウェイを追加】

現状、パブリックサブネット test-pubsub1 のルートテーブルでは 「10.0.0.0/21宛ての通信をlocal(VPC内)にルーティング」という設定があるのみで、外部(インターネット)へのルーティングが設定されていない。

image.png

これにインターネットゲートウェイへのルーティングを追加してEC2がインターネットゲートウェイ経由で外部(インターネット)へ通信できるようにする

6-1. VPC画面 - 左ペイン「サブネット」 - test-pubsub1 にチェックを入れ、ルートテーブルタブを選択

6-2. ルートテーブル:rtb-xxxxxxxxxxxx のリンク先を押下

image.png

6-3. ルートタブ - 「ルートの編集」を押下し、以下の設定を行う

・ルートの編集
「ルートを追加」を押下

項目 入力値
送信先: 0.0.0.0/0
ターゲット: 「インターネット」を選択すると検索候補に出てくる「test-internet-GW」 を選択

「変更を保存を選択」

こうすることで、10.0.0.0/24の通信はVPC内、それ以外の全て(0.0.0.0/0)はインターネットゲートウェイに向かう

image.png

【プライベートサブネットのルートテーブル新規作成】

現状、PublicSubnetとPrivateSubnetでルートテーブルIDが同じため、PrivateSunbetでもインターネットと通信できるルートテーブルが使われてしまう。

image.png

そのため、PrivateSubnet用の「インターネットにルーティングしない」新しいルートテーブルを作成する

6-4. VPC画面 - 左ペイン「ルートテーブル」 - 「ルートテーブルの作成」を押下

6-5. 「ルートテーブルを作成」画面で以下を入力し、「ルートテーブルを作成」を押下

・ルートテーブル設定

項目 入力値
名前: test-private-routetable1
VPC: test-VPC1を選択

・タグ

項目 入力値
キー: Name
値: test-private-routetable1

image.png

6-6. サブネット画面からtest-prisub1にチェックを入れ、ルートテーブルタブを選択、「ルートテーブルの関連付けを編集」を押下

6-7. 「ルートテーブルの関連付けを編集」で以下を入力し、「保存」を押下

・サブネットルートテーブル設定

項目 入力値
ルートテーブル ID: test-private-routetable1 に変更

※送信先、ターゲットはlocalのものだけとなり、インターネットに向いていない

image.png

これで publicsubnetとprivatesubnetとで異なるルートテーブルが設定された。
image.png

7. RDSを作成する

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

RDSには2つ以上のサブネットをまとめたサブネットグループが必要
そのサブネットグループは2つのAZにまたがっている必要がある
※MultiAZ構成で必要な設定だが、シングルAZ構成からMulti-AZに変更できるようになっているためシングルAZ構成でも設定しておく必要がある。

7-1. VPC画面 - 左ペイン サブネット - 「サブネットを作成」を押下
※DBサブネットグループ用に ap-northeast-1cにプライベートサブネットを作成する

7-2. 「サブネットを作成」画面で以下を入力し、「サブネットを作成」を押下

・VPC

項目 入力値
VPC ID: test-VPC1を選択

・サブネットの設定

項目 入力値
サブネット名: test-prisub2
アベイリビリティーゾーン: アジアパシフィック(東京)/ap-northeast-1c
IPv4CIDRブロック: 10.0.2.0/24

image.png

7-3. マネジメントコンソールでRDS検索 - 左ペイン「サブネットグループ」を選択 - 「DBサブネットグループを作成」を押下

7-4. 「DBサブネットグループを作成」で以下を入力

・サブネットグループの詳細

項目 入力値
名前: test-DB-subnetgroup
説明: test-DB-subnetgroup
VPC: test-VPC1 を選択

・サブネットを追加
アベイラビリティーゾーン:ap-northeast-1a と ap-northeast-1c にチェックする

image.png

サブネット:ap-northeast-1a の 10.0.1.0/24 と ap-northeast-1c の 10.0.2.0/24 にチェック

image.png

【RDSの作成】

7-5. 左ペインデータベースを選択 - 右上「データベースの作成」を選択

7-6. 「データベースの作成」画面で以下を入力し「データベースの作成」を押下

データベース作成方法を選択で、「標準作成」を選択

image.png

・エンジンのオプション

項目 入力値
エンジンのタイプ: MySQL

image.png

・テンプレート

項目 入力値
テンプレート: 「無料利用枠」

image.png

・設定

項目 入力値
DBインスタンス識別子: デフォルトのまま(database-1)
マスターユーザ名(DBインスタンスのマスターユーザーログインID): wordpress
マスターパスワード: 任意
パスワードの確認: 任意

image.png

・DB インスタンスクラス

「以前の世代のクラスを含める」を選択し、バースト可能クラス(tクラス含む)、db.t2micro(標準クラスでは料金が高くなるため)
※無料利用枠では選択できず、デフォルトdb.t2microになる

image.png

・ストレージ

項目 入力値
ストレージ: デフォルトのまま(汎用SSD,20GiB)

image.png

・可用性と耐久性

可用性と耐久性でスタンバイインスタンスを作成しないでくださいを選択(今回はサブネットグループを作ったがシングル構成で作成するため)
※無料利用枠では選択できず、デフォルトでスタンバイインスタンスを作成しないになる

image.png

・接続

項目 入力値
接続: test-VPC1を選択
サブネットグループ: tesb-db-subnetgroup
パブリックアクセス可能: なし
VPCセキュリティグループ: 新規作成
新しいVPCセキュリティグループ名: test-DB-SG
アベイラビリティゾーン: ap-northeast-1a
追加設定: 3306(MySQLデフォルトポート)

image.png

データベース認証はデフォルトのまま

image.png

・追加設定

項目 入力値
最初のデータベース名: wordpress ★wordpressの仕様
バックアップ 「自動バックアップを有効にします」のチェックを外す ※削除後も復旧させるのであれば外さない

image.png

その他項目はデフォルト

【RDSのセキュリティグループ編集】

RDSのセキュリティグループtest-DB-SGが作成されているのでEC2だけからアクセス許可するように編集する

7-5. VPC画面 - セキュリティグループ - test-DB-SGにチェック - インバウンドルールタブ - 「インバウンドのルールを編集」を押下

7-6. インバウンドルールのソースを、ソースにセキュリティグループ「test-EC2-SG-1」を設定する。※ソースIPに別のIPが設定されている場合は削除する

image.png


補足 【"You may not specify a referenced group id for an existing IPv4 CIDR rule."について】

You may not specify a referenced group id for an existing IPv4 CIDR rule.
既存のIPv 4 CIDRルールに1つの参照先のグループIDを指定することはできません。

と表示されることがある。
ソースの設定にIPアドレスを指定しており、それをセキュリティグループIDに変更しようとした際に発生する。
対処はいったん該当のレコードを「削除」押下で削除し、「ルールを追加」で作り直せば良い。

image.png


8. EC2にwordpressをインストールする

【パッケージインストール】

8-1. teratermなどでEC2にログインする


補足 teratermでのログイン方法
1.teratermの「ホスト」にEC2のパブリックIPを入力してOKを押下
2.「ユーザ名」:ec2-user,「パスフレーズ」:未入力, 「RSA/DSA/ECDSA/ED25519鍵を使う」:作成したキーペアファイル
を指定しOK押下


8-2. ルートユーザにスイッチ

$ sudo su -

8-3. パッケージを最新にアップデート

# yum -y update

8-4. phpをインストール

# amazon-linux-extras install php7.2 -y

8-5. mysql, httpd, phpの必要なもののインストール

# yum -y install mysql httpd php-mbstring php-xml gd php-gd

8-6. 再起動後も自動起動する設定

# systemctl enable httpd.service

8-7. httpd起動

# systemctl start httpd.service
# systemctl status httpd.service ★RUNNINGとなっていることを確認

8-8. wordpressパッケージをダウンロード

# cd /var/tmp
# wget http://ja.wordpress.org/latest-ja.tar.gz ./
# ll ★カレントディレクトリにダウンロードされていることを確認

8-9. 圧縮ファイルを展開

# tar zxvf ./latest-ja.tar.gz
# ll ★wordpressディレクトリが存在することを確認

8-10. ダウンロード、解凍したファイルをhtmlディレクトリ配下にコピー

# cp -r ./wordpress/* /var/www/html/

8-11. html配下ファイルをすべてapache所有者権限に変更

# chown apache:apache -R /var/www/html

9. wordpressにログインする

【wordpress初期設定】

9-1. EC2のパブリックIPアドレスをブラウザにコピぺして「さぁ始めましょう」押下

・初期設定

項目 入力値
データベース名 wordpress ★RDS作成時に設定した最初のデータベース名を入力
ユーザー名 wordpress ★RDS作成時に設定したマスターユーザ名を入力
パスワード ★RDS作成時に設定したパスワードを入力
データベースのホスト名 RDSのエンドポイントを指定。※RDS画面 - database-1 - 「接続とセキュリティ」タブに「エンドポイント」がある。

image.png

テーブル接続詞:デフォルトのまま
「送信」を選択
「インストールの実行」を選択

項目 入力値
サイトのタイトル 任意
ユーザ名: wordpress
パスワード: 任意
メールアドレス: 任意

「wordpressをインストール」を押下
「ログイン」押下

項目 入力値
ユーザ名: wordpress
パスワード: 上記で設定したパスワード

以上

■おわりに


この記事はAWS初学者を導く体系的な動画学習サービス
「AWS CloudTech」の課題カリキュラムで作成しました。
https://aws-cloud-tech.com


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