内容
この記事はAWS初学者を導く体系的な動画学習サービス
「AWS CloudTech」の課題カリキュラムで作成しました。
https://aws-cloud-tech.com
「基本的なブログサービスを構築する(シングル構成)」のレッスンにて、WordPressのブログサイトを構築しました。
このレッスンのゴール
手元のPCからインターネットゲートウェイを経由してWordPressがインストールされたEC2にアクセスし、ブログサイトが閲覧できる状態。
実施の流れ
VPCの作成
- AWS マネジメントコンソールから「VPC」の画面を開く。
- 左のメニューから「VPC」を選択
- 「VPCを作成」を選択
- 「名前タグ」と「IPv4 CIDRブロック」を入力(10.0.0.0/21)
- 「VPCの作成」を選択
パブリックサブネットの作成
- 左のメニューから「サブネット」を選択
- 「サブネットの作成」を選択
- 「VPC」の項目は先ほど作成したVPCを選択
- 「サブネット名」を入力(PublicSubnet1)
- 「アベイラビリティーゾーン」を選択(ap-northeast-1a)
- 「IPv4 CIDR ブロック」を入力(10.0.0.0/24)
- 「サブネットを作成」を選択
プライベートサブネットの作成
- 左のメニューから「サブネット」を選択
- 「サブネットの作成」を選択
- 「VPC」の項目は先ほど作成したVPCを選択
- 「サブネット名」を入力(PrivateSubnet1)
- 「アベイラビリティーゾーン」を選択(ap-northeast-1a)
- 「IPv4 CIDR ブロック」を入力(10.0.2.0/24)
- 「サブネットを作成」を選択
パブリックサブネットにEC2を構築
- 検索窓に「EC2」と入力してEC2の画面に遷移
- 左のメニューから「インスタンス」を選択
- 「インスタンスを起動」を選択
- AMIの選択:「Amazon Linux 2 AMI (HVM), SSD Volume Type」を選択
- インスタンスタイプの選択:「t2.micro」を選択
- インスタンスの詳細の設定:「ネットワーク」を先ほど作成したVPC、「サブネット」は先ほど作成したパブリックサブネットをそれぞれ選択
- 「自動割り当てパブリックIP」は「有効」を選択
- ストレージの追加:デフォルトのままで「次のステップ:タグの追加」を選択
- タグの追加:「キー」に「Name」、「値」に「WebServer1」と入力
- セキュリティグループの設定:「セキュリティグループ名」と「説明」に任意の値を入力
- 「ルールの追加」を選択し、「タイプ」は「HTTP」を選択
- 「確認と作成」を選択
- これまで設定した項目を確認し、「起動」を選択
- キーペアについては既存のものを使用するか、新しいキーペアを作成する。
- 「インスタンスの作成」を選択
作成したVPCにインターネットゲートウェイを設置
インターネットゲートウェイとは
- VPC内のAWSリソースとインターネットを繋げる
- 自動でスケールし、可用性が高い
- サブネットのルートテーブルを設定して使用する
- VPCの画面左のメニューから「インターネットゲートウェイ」を選択
- 「インターネットゲートウェイの作成」を選択
- 「名前タグ」を入力
- 「インターネットゲートウェイの作成」を選択
- 「VPCにアタッチ」を選択
- 「使用可能なVPC」で作成したVPCを選択
- 「インターネットゲートウェイのアタッチ」を選択
- 作成したインターネットゲートウェイの状態が「Attached」になっていることを確認
ルートテーブルの設定
現在の状態だとVPC内でしかルートテーブルが設定されていないため、以下の手順を行う。
ルートテーブルとは
- サブネットに関連づけて使用するもの
- サブネットから外に出る通信をどこに向けて発信するか決めるルール・定義
- 「ルート」と呼ばれるルールで定義される
- 最も明確なルールが優先されて適用される(狭いIPアドレスにマッチしたルールほど優先)
- VPCの画面左のメニューから「サブネット」を選択
- 作成したパブリックサブネットを選択し、「ルートテーブル」のタブからルートテーブルIDを選択
- 「ルート」のタブを選択し、「ルートの編集」を選択
- 「ルートの追加(Add Route)」を選択、送信先は「0.0.0.0/0」、ターゲットは「Internet Gateway」を選択
- 「変更を保存」を選択
EC2インスタンスのセキュリティグループの状態を確認
SSH22番ポートで接続するため、セキュリティグループの設定で22番ポートが空いているかを確認する。
- 作成したインスタンスを選択
- 「セキュリティ」タブを選択
- インバウンドルール内にて、「ポート範囲」が「22」、「ソース」が「0.0.0.0/0」のルールがあることを確認する。
作成したEC2インスタンスにSSHでログインする
- ターミナルを開き、キーペアが格納されているディレクトリへ移動
-
ls -l キーペア名
で権限が400になっていることを確認 - なっていない場合は
chmod 400 キーペア名
で権限を400にする。 -
ssh -i キーペア名 ec2-user@パブリックIPアドレス
を実行
RDSを作成する前にサブネットグループを作成する
サブネットグループは2つ以上のサブネットをグルーピングする必要がある。
グルーピングされたサブネットは複数のAZにまたがっている必要がある。
パブリックサブネットをもう1つ作成
- 左のメニューから「サブネット」を選択
- 「サブネットの作成」を選択
- 「VPC」の項目は先ほど作成したVPCを選択
- 「サブネット名」を入力(PublicSubnet2)
- 「アベイラビリティーゾーン」を選択(ap-northeast-1c)←先ほど作成したサブネットとは別のAZを選択
- 「IPv4 CIDR ブロック」を入力(10.0.1.0/24)
- 「サブネットを作成」を選択
プライベートサブネットももう1つ作成
- 左のメニューから「サブネット」を選択
- 「サブネットの作成」を選択
- 「VPC」の項目は先ほど作成したVPCを選択
- 「サブネット名」を入力(PrivateSubnet2)
- 「アベイラビリティーゾーン」を選択(ap-northeast-1c)←先ほど作成したサブネットとは別のAZを選択
- 「IPv4 CIDR ブロック」を入力(10.0.3.0/24)
- 「サブネットを作成」を選択
サブネットグループを作成
- 検索窓に「RDS」と入力してRDSの画面に移動
- 左のメニューから「サブネットグループ」を選択
- 「DBサブネットグループを作成」を選択
- 「名前」「説明」を入力
- 「VPC」は作成したVPCを選択
- 「アベイラビリティーゾーン」は「ap-northeast-1a」と「ap-northeast-1c」を選択
- 「サブネット」はプライベートサブネットを2つ選択(10.0.2.0/24と10.0.3.0/24)
- 「作成」を選択
RDSを作成
- 左のメニューから「データベース」を選択
- 「データベースの作成」を選択
- データベース作成方法を選択:「標準作成」を選択
- エンジンのオプション:今回は「MySQL」を選択
- テンプレート:「開発/テスト」を選択(料金が気になる方は「無料利用枠」でも可
- DB インスタンス識別子:今回はデフォルトのまま
- マスターユーザー名:今回は「wordpress」と入力
- マスターパスワード:任意のものを入力
- DBインスタンスクラス:「標準クラス」は料金が非常に高くなるそうなので「バースト可能クラス」を選択
- ストレージタイプは「汎用SSD」、ストレージ割り当ては「20」を選択
- 可用性と耐久性:「スタンバイインスタンスを作成しないでください」を選択
- VPC:作成したVPCを選択
- サブネットグループ:作成したサブネットグループを選択
- パブリックアクセス可能:「なし」を選択
- VPC セキュリティグループ:「新規作成」を選択
- 「新しいVPCセキュリティグループ名」を入力
- アベイラビリティーゾーン:「ap-northeast-1a」を選択
- データベースポート:「3306」
- 下にスクロールし、「追加設定」タブを開く
- 最初のデータベース名:「wordpress」と入力
- 「データベースの作成」を選択
- 作成したデータベースのステータスが「利用可能」となっていることを確認(しばらく時間がかかります)
- 一番下までスクロールすると、「概算月間コスト」という項目があり、どの程度料金がかかるかを確認できる。
- RDSを停止しても7日後に復旧・起動してしまうため、ゴールした後に特に必要が無ければ削除した方が良いとのこと。
作成したRDSのセキュリティーグループの設定を編集
- VPCの画面の左メニューから「セキュリティーグループ」を選択
- 前の項目で作成したセキュリティーグループを選択
- 「インバウンドルール」タブを選択し、ソースを確認
- 「119.170.112.10/32」等となっているので、これをWebサーバーだけから許可をする設定に変更する。
- 「インバウンドルールを編集」を選択
- 元々あるIPアドレスを消去して、作成したインスタンスのセキュリティグループを入力(インスタンスの「セキュリティ」タブから確認)
- 「ルールを保存」を選択
WordPressをインストールする
- ターミナルに移動
-
sudo su -
コマンドで管理者権限にスイッチ(EC2ユーザー権限のままだと権限が足りない場合もあるため) -
yum -y update
でEC2のパッケージの状態を最新の状態にアップデート - 下記のコマンドでPHP、Apache、MySQLをインストール
amazon-linux-extras install php7.2 -y
yum -y install mysql httpd php-mbstring php-xml gd php-gd
-
systemctl enable httpd.service
コマンドでApacheのサービスを再起動後も自動で起動するように設定 -
systemctl start httpd.service
でApacheをスタート状態にする。 -
wget http://ja.wordpress.org/latest-ja.tar.gz ~/
でWordPressのパッケージをダウンロード -
tar zxvf ~/latest-ja.tar.gz
でダウンロードしたファイルを展開 -
cp -r ~/wordpress/* /var/www/html/
でWordPressとファイルを/var/www/html/にコピー -
chown apache:apache -R /var/www/html
でファイルの権限をApacheの所有者、ユーザーグループに設定に変更
ブラウザからWordPressを確認する
- EC2インスタンスからパブリックIPアドレスを確認し、アドレスバーに貼り付けてEnterを押す。
- WordPressの初期設定の画面が表示されるので、「さあ、始めましょう!」を選択
- データベース名:wordpress
- ユーザー名:RDS作成時に入力した「マスターユーザー名」を入力
- パスワード:上記と同様に「マスターパスワード」を入力
- データベースのホスト名:RDSの画面の左メニューから「データベース」を選択し、「接続とセキュリティ」タブの「エンドポイント」の値をコピーして入力
- 「送信」を選択
- 「インストール実行」を選択
- 「サイトのタイトル」「ユーザー名」「パスワード」「メールアドレス」は任意のものを入力
- 「WordPressをインストール」を選択
- 「ログイン」を選択
- ユーザー名とパスワードを入力してログイン
- 管理画面に遷移するので、左上の家マークを選択
最後に
今回の構成だとEC2に障害が発生した場合、サービス全体が停止してしまうため、次回はAZ 1cに新たにEC2とRDSを構築したいと思います。
次回の構成
上記の構成手順につきましては下記の記事に掲載しております。
https://qiita.com/zakinicof/items/a320268727f92d06a3b4
間違い等ございましたらご指摘いただけますと幸いです。