#■はじめに
AWS無料利用枠を利用して EC2(wordpress)、RDS シングル構成の基本的なブログサービスを構築したので
その際の手順をまとめました
#■対象者
本記事はAWS初学者向けの情報共有として構築手順をまとめています。
また、自分用の手順メモでもあります。
#■構成図
userはブラウザからIPを入力しhttp通信でEC2にアクセスする。
EC2にはmysql、wordpressをインストールし、SQL発行でRDSにアクセス、データを取得し画面表示を行う。
ssh接続はteratermでEC2に接続する際に利用する。
EC2は外部のユーザからのアクセスを受けるが、RDSにはアクセスさせない。
そのためEC2はパブリックサブネットに配置し、RDSはプライベートサブネットに配置する。
#■作業内容
大まかに以下。
- VPCを作成する
- EC2を配置するパブリックサブネットを作成する
- RDSを配置するプライベートサブネットを作成する
- パブリックサブネットにEC2を作成する
- VPCにインターネットゲートウェイを作成する
- パブリックサブネットとプライベートサブネットのルートテーブルを編集する
- RDSを作成する
- EC2にwordpressをインストールする
- 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 |
##2. EC2を配置するパブリックサブネット作成をする
【パブリックサブネット作成手順】
##3. RDSを配置するプライベートサブネットを作成する
【プライベートサブネット作成手順】
##4. パブリックサブネットにEC2を作成する
【EC2作成手順】
4-1. マネジメントコンソールでEC2を検索し、右上「インスタンスを起動」を押下
4-2. 「ステップ 1: Amazon マシンイメージ (AMI)」画面
Amazon Linux 2 AMI (HVM), SSD Volume Type(無料利用枠の対象)の64ビット(x86)にチェックを入れ、「選択」を押下
4-3. 「ステップ 2: インスタンスタイプの選択」画面
t2.micro(無料利用枠の対象)にチェックを入れ、「次のステップ:インスタンスの詳細の設定」を押下
4-4. 「ステップ 3: インスタンスの詳細の設定」画面
項目 | 入力値 |
---|---|
ネットワーク: | test-VPC1 を選択 |
サブネット: | test-pubsub1 を選択 |
自動割り当てパブリック IP: | 有効 を選択 |
その他項目はデフォルトのままで「次のステップ:ストレージの追加」を押下
4-5. 「ステップ 4: ストレージの追加」画面
デフォルトのままで「次のステップ:タグの追加」を押下
※「終了時の削除」にチェックを入れない場合、EC2インスタンスを終了・削除してもEBSのみ残る。(料金に影響する可能性がある)
4-6. 「ステップ 5: タグの追加」画面
「タグの追加」を押下
項目 | 入力値 |
---|---|
キー: | Name |
値: | test-EC2 |
「次のステップ:セキュリティグループの設定」を押下
【セキュリティグループ設定】
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はユーザがブラウザからの通信でブログを閲覧する際に必要。
4-8. 「インスタンス作成の確認」画面
既存のキーペアを選択するか、新しいキーペアを作成します(のちのちEC2接続の際に必要)
新しいキーペアの作成
項目 | 入力値 |
---|---|
キーペアのタイプ: | RSA |
キーペア名: | test-EC2-keypair |
「キーペアのダウンロード」を押下
「インスタンスの作成」を選択
##5. VPCにインターネットゲートウェイを作成する
【インターネットゲートウェイ作成手順】
【インターネットゲートウェイをVPCにアタッチする】
##6. パブリックサブネットとプライベートサブネットのルートテーブルを編集する
【パブリックサブネットのルートテーブルにインターネットゲートウェイを追加】
現状、パブリックサブネット test-pubsub1 のルートテーブルでは 「10.0.0.0/21宛ての通信をlocal(VPC内)にルーティング」という設定があるのみで、外部(インターネット)へのルーティングが設定されていない。
これにインターネットゲートウェイへのルーティングを追加してEC2がインターネットゲートウェイ経由で外部(インターネット)へ通信できるようにする
6-1. VPC画面 - 左ペイン「サブネット」 - test-pubsub1 にチェックを入れ、ルートテーブルタブを選択
6-2. ルートテーブル:rtb-xxxxxxxxxxxx のリンク先を押下
6-3. ルートタブ - 「ルートの編集」を押下し、以下の設定を行う
・ルートの編集
「ルートを追加」を押下
項目 | 入力値 |
---|---|
送信先: | 0.0.0.0/0 |
ターゲット: | 「インターネット」を選択すると検索候補に出てくる「test-internet-GW」 を選択 |
「変更を保存を選択」
こうすることで、10.0.0.0/24の通信はVPC内、それ以外の全て(0.0.0.0/0)はインターネットゲートウェイに向かう
【プライベートサブネットのルートテーブル新規作成】
現状、PublicSubnetとPrivateSubnetでルートテーブルIDが同じため、PrivateSunbetでもインターネットと通信できるルートテーブルが使われてしまう。
そのため、PrivateSubnet用の「インターネットにルーティングしない」新しいルートテーブルを作成する
6-4. VPC画面 - 左ペイン「ルートテーブル」 - 「ルートテーブルの作成」を押下
6-5. 「ルートテーブルを作成」画面で以下を入力し、「ルートテーブルを作成」を押下
・ルートテーブル設定
項目 | 入力値 |
---|---|
名前: | test-private-routetable1 |
VPC: | test-VPC1を選択 |
・タグ
項目 | 入力値 |
---|---|
キー: | Name |
値: | test-private-routetable1 |
6-6. サブネット画面からtest-prisub1にチェックを入れ、ルートテーブルタブを選択、「ルートテーブルの関連付けを編集」を押下
6-7. 「ルートテーブルの関連付けを編集」で以下を入力し、「保存」を押下
・サブネットルートテーブル設定
項目 | 入力値 |
---|---|
ルートテーブル ID: | test-private-routetable1 に変更 |
※送信先、ターゲットはlocalのものだけとなり、インターネットに向いていない
##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 |
7-3. マネジメントコンソールでRDS検索 - 左ペイン「サブネットグループ」を選択 - 「DBサブネットグループを作成」を押下
7-4. 「DBサブネットグループを作成」で以下を入力
・サブネットグループの詳細
項目 | 入力値 |
---|---|
名前: | test-DB-subnetgroup |
説明: | test-DB-subnetgroup |
VPC: | test-VPC1 を選択 |
・サブネットを追加
アベイラビリティーゾーン:ap-northeast-1a と ap-northeast-1c にチェックする
サブネット:ap-northeast-1a の 10.0.1.0/24 と ap-northeast-1c の 10.0.2.0/24 にチェック
【RDSの作成】
7-5. 左ペインデータベースを選択 - 右上「データベースの作成」を選択
7-6. 「データベースの作成」画面で以下を入力し「データベースの作成」を押下
データベース作成方法を選択で、「標準作成」を選択
・エンジンのオプション
項目 | 入力値 |
---|---|
エンジンのタイプ: | MySQL |
・テンプレート
項目 | 入力値 |
---|---|
テンプレート: | 「無料利用枠」 |
・設定
項目 | 入力値 |
---|---|
DBインスタンス識別子: | デフォルトのまま(database-1) |
マスターユーザ名(DBインスタンスのマスターユーザーログインID): | wordpress |
マスターパスワード: | 任意 |
パスワードの確認: | 任意 |
・DB インスタンスクラス
「以前の世代のクラスを含める」を選択し、バースト可能クラス(tクラス含む)、db.t2micro(標準クラスでは料金が高くなるため)
※無料利用枠では選択できず、デフォルトdb.t2microになる
・ストレージ
項目 | 入力値 |
---|---|
ストレージ: | デフォルトのまま(汎用SSD,20GiB) |
・可用性と耐久性
可用性と耐久性でスタンバイインスタンスを作成しないでくださいを選択(今回はサブネットグループを作ったがシングル構成で作成するため)
※無料利用枠では選択できず、デフォルトでスタンバイインスタンスを作成しないになる
・接続
項目 | 入力値 |
---|---|
接続: | test-VPC1を選択 |
サブネットグループ: | tesb-db-subnetgroup |
パブリックアクセス可能: | なし |
VPCセキュリティグループ: | 新規作成 |
新しいVPCセキュリティグループ名: | test-DB-SG |
アベイラビリティゾーン: | ap-northeast-1a |
追加設定: | 3306(MySQLデフォルトポート) |
データベース認証はデフォルトのまま
・追加設定
項目 | 入力値 |
---|---|
最初のデータベース名: | wordpress ★wordpressの仕様 |
バックアップ | 「自動バックアップを有効にします」のチェックを外す ※削除後も復旧させるのであれば外さない |
その他項目はデフォルト
【RDSのセキュリティグループ編集】
RDSのセキュリティグループtest-DB-SGが作成されているのでEC2だけからアクセス許可するように編集する
7-5. VPC画面 - セキュリティグループ - test-DB-SGにチェック - インバウンドルールタブ - 「インバウンドのルールを編集」を押下
7-6. インバウンドルールのソースを、ソースにセキュリティグループ「test-EC2-SG-1」を設定する。※ソースIPに別のIPが設定されている場合は削除する
補足 【"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に変更しようとした際に発生する。
対処はいったん該当のレコードを「削除」押下で削除し、「ルールを追加」で作り直せば良い。
##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 - 「接続とセキュリティ」タブに「エンドポイント」がある。 |
テーブル接続詞:デフォルトのまま
「送信」を選択
「インストールの実行」を選択
項目 | 入力値 |
---|---|
サイトのタイトル | 任意 |
ユーザ名: | wordpress |
パスワード: | 任意 |
メールアドレス: | 任意 |
「wordpressをインストール」を押下
「ログイン」押下
項目 | 入力値 |
---|---|
ユーザ名: | wordpress |
パスワード: | 上記で設定したパスワード |
以上
#■おわりに
この記事はAWS初学者を導く体系的な動画学習サービス
「AWS CloudTech」の課題カリキュラムで作成しました。
https://aws-cloud-tech.com