LoginSignup
1
0

More than 1 year has passed since last update.

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

Last updated at Posted at 2021-06-19

内容

この記事はAWS初学者を導く体系的な動画学習サービス
「AWS CloudTech」の課題カリキュラムで作成しました。
https://aws-cloud-tech.com
「基本的なブログサービスを構築する(シングル構成)」のレッスンにて、WordPressのブログサイトを構築しました。

このレッスンのゴール

スクリーンショット 2021-06-21 13.48.22.png

手元のPCからインターネットゲートウェイを経由してWordPressがインストールされたEC2にアクセスし、ブログサイトが閲覧できる状態。

実施の流れ

VPCの作成

  1. AWS マネジメントコンソールから「VPC」の画面を開く。
  2. 左のメニューから「VPC」を選択
  3. 「VPCを作成」を選択
  4. 「名前タグ」と「IPv4 CIDRブロック」を入力(10.0.0.0/21)
  5. 「VPCの作成」を選択

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

  1. 左のメニューから「サブネット」を選択
  2. 「サブネットの作成」を選択
  3. 「VPC」の項目は先ほど作成したVPCを選択
  4. 「サブネット名」を入力(PublicSubnet1)
  5. 「アベイラビリティーゾーン」を選択(ap-northeast-1a)
  6. 「IPv4 CIDR ブロック」を入力(10.0.0.0/24)
  7. 「サブネットを作成」を選択

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

  1. 左のメニューから「サブネット」を選択
  2. 「サブネットの作成」を選択
  3. 「VPC」の項目は先ほど作成したVPCを選択
  4. 「サブネット名」を入力(PrivateSubnet1)
  5. 「アベイラビリティーゾーン」を選択(ap-northeast-1a)
  6. 「IPv4 CIDR ブロック」を入力(10.0.2.0/24)
  7. 「サブネットを作成」を選択

パブリックサブネットにEC2を構築

  1. 検索窓に「EC2」と入力してEC2の画面に遷移
  2. 左のメニューから「インスタンス」を選択
  3. 「インスタンスを起動」を選択
  4. AMIの選択:「Amazon Linux 2 AMI (HVM), SSD Volume Type」を選択
  5. インスタンスタイプの選択:「t2.micro」を選択
  6. インスタンスの詳細の設定:「ネットワーク」を先ほど作成したVPC、「サブネット」は先ほど作成したパブリックサブネットをそれぞれ選択
  7. 「自動割り当てパブリックIP」は「有効」を選択
  8. ストレージの追加:デフォルトのままで「次のステップ:タグの追加」を選択
  9. タグの追加:「キー」に「Name」、「値」に「WebServer1」と入力
  10. セキュリティグループの設定:「セキュリティグループ名」と「説明」に任意の値を入力
  11. 「ルールの追加」を選択し、「タイプ」は「HTTP」を選択
  12. 「確認と作成」を選択
  13. これまで設定した項目を確認し、「起動」を選択
  14. キーペアについては既存のものを使用するか、新しいキーペアを作成する。
  15. 「インスタンスの作成」を選択

作成したVPCにインターネットゲートウェイを設置

インターネットゲートウェイとは
  • VPC内のAWSリソースとインターネットを繋げる
  • 自動でスケールし、可用性が高い
  • サブネットのルートテーブルを設定して使用する
  1. VPCの画面左のメニューから「インターネットゲートウェイ」を選択
  2. 「インターネットゲートウェイの作成」を選択
  3. 「名前タグ」を入力
  4. 「インターネットゲートウェイの作成」を選択
  5. 「VPCにアタッチ」を選択
  6. 「使用可能なVPC」で作成したVPCを選択
  7. 「インターネットゲートウェイのアタッチ」を選択
  8. 作成したインターネットゲートウェイの状態が「Attached」になっていることを確認

ルートテーブルの設定

現在の状態だとVPC内でしかルートテーブルが設定されていないため、以下の手順を行う。
ルートテーブルとは
  • サブネットに関連づけて使用するもの
  • サブネットから外に出る通信をどこに向けて発信するか決めるルール・定義
  • 「ルート」と呼ばれるルールで定義される
  • 最も明確なルールが優先されて適用される(狭いIPアドレスにマッチしたルールほど優先)
  1. VPCの画面左のメニューから「サブネット」を選択
  2. 作成したパブリックサブネットを選択し、「ルートテーブル」のタブからルートテーブルIDを選択
  3. 「ルート」のタブを選択し、「ルートの編集」を選択
  4. 「ルートの追加(Add Route)」を選択、送信先は「0.0.0.0/0」、ターゲットは「Internet Gateway」を選択
  5. 「変更を保存」を選択

EC2インスタンスのセキュリティグループの状態を確認

SSH22番ポートで接続するため、セキュリティグループの設定で22番ポートが空いているかを確認する。
  1. 作成したインスタンスを選択
  2. 「セキュリティ」タブを選択
  3. インバウンドルール内にて、「ポート範囲」が「22」、「ソース」が「0.0.0.0/0」のルールがあることを確認する。

作成したEC2インスタンスにSSHでログインする

  1. ターミナルを開き、キーペアが格納されているディレクトリへ移動
  2. ls -l キーペア名で権限が400になっていることを確認
  3. なっていない場合はchmod 400 キーペア名で権限を400にする。
  4. ssh -i キーペア名 ec2-user@パブリックIPアドレスを実行

RDSを作成する前にサブネットグループを作成する

サブネットグループは2つ以上のサブネットをグルーピングする必要がある。
グルーピングされたサブネットは複数のAZにまたがっている必要がある。

パブリックサブネットをもう1つ作成

  1. 左のメニューから「サブネット」を選択
  2. 「サブネットの作成」を選択
  3. 「VPC」の項目は先ほど作成したVPCを選択
  4. 「サブネット名」を入力(PublicSubnet2)
  5. 「アベイラビリティーゾーン」を選択(ap-northeast-1c)←先ほど作成したサブネットとは別のAZを選択
  6. 「IPv4 CIDR ブロック」を入力(10.0.1.0/24)
  7. 「サブネットを作成」を選択

プライベートサブネットももう1つ作成

  1. 左のメニューから「サブネット」を選択
  2. 「サブネットの作成」を選択
  3. 「VPC」の項目は先ほど作成したVPCを選択
  4. 「サブネット名」を入力(PrivateSubnet2)
  5. 「アベイラビリティーゾーン」を選択(ap-northeast-1c)←先ほど作成したサブネットとは別のAZを選択
  6. 「IPv4 CIDR ブロック」を入力(10.0.3.0/24)
  7. 「サブネットを作成」を選択

サブネットグループを作成

  1. 検索窓に「RDS」と入力してRDSの画面に移動
  2. 左のメニューから「サブネットグループ」を選択
  3. 「DBサブネットグループを作成」を選択
  4. 「名前」「説明」を入力
  5. 「VPC」は作成したVPCを選択
  6. 「アベイラビリティーゾーン」は「ap-northeast-1a」と「ap-northeast-1c」を選択
  7. 「サブネット」はプライベートサブネットを2つ選択(10.0.2.0/24と10.0.3.0/24)
  8. 「作成」を選択

RDSを作成

  1. 左のメニューから「データベース」を選択
  2. 「データベースの作成」を選択
  3. データベース作成方法を選択:「標準作成」を選択
  4. エンジンのオプション:今回は「MySQL」を選択
  5. テンプレート:「開発/テスト」を選択(料金が気になる方は「無料利用枠」でも可
  6. DB インスタンス識別子:今回はデフォルトのまま
  7. マスターユーザー名:今回は「wordpress」と入力
  8. マスターパスワード:任意のものを入力
  9. DBインスタンスクラス:「標準クラス」は料金が非常に高くなるそうなので「バースト可能クラス」を選択
  10. ストレージタイプは「汎用SSD」、ストレージ割り当ては「20」を選択
  11. 可用性と耐久性:「スタンバイインスタンスを作成しないでください」を選択
  12. VPC:作成したVPCを選択
  13. サブネットグループ:作成したサブネットグループを選択
  14. パブリックアクセス可能:「なし」を選択
  15. VPC セキュリティグループ:「新規作成」を選択
  16. 「新しいVPCセキュリティグループ名」を入力
  17. アベイラビリティーゾーン:「ap-northeast-1a」を選択
  18. データベースポート:「3306」
  19. 下にスクロールし、「追加設定」タブを開く
  20. 最初のデータベース名:「wordpress」と入力
  21. 「データベースの作成」を選択
  22. 作成したデータベースのステータスが「利用可能」となっていることを確認(しばらく時間がかかります)
  • 一番下までスクロールすると、「概算月間コスト」という項目があり、どの程度料金がかかるかを確認できる。
  • RDSを停止しても7日後に復旧・起動してしまうため、ゴールした後に特に必要が無ければ削除した方が良いとのこと。

作成したRDSのセキュリティーグループの設定を編集

  1. VPCの画面の左メニューから「セキュリティーグループ」を選択
  2. 前の項目で作成したセキュリティーグループを選択
  3. 「インバウンドルール」タブを選択し、ソースを確認
  4. 「119.170.112.10/32」等となっているので、これをWebサーバーだけから許可をする設定に変更する。
  5. 「インバウンドルールを編集」を選択
  6. 元々あるIPアドレスを消去して、作成したインスタンスのセキュリティグループを入力(インスタンスの「セキュリティ」タブから確認)
  7. 「ルールを保存」を選択

WordPressをインストールする

  1. ターミナルに移動
  2. sudo su -コマンドで管理者権限にスイッチ(EC2ユーザー権限のままだと権限が足りない場合もあるため)
  3. yum -y updateでEC2のパッケージの状態を最新の状態にアップデート
  4. 下記のコマンドでPHP、Apache、MySQLをインストール
  5. amazon-linux-extras install php7.2 -y
  6. yum -y install mysql httpd php-mbstring php-xml gd php-gd
  7. systemctl enable httpd.serviceコマンドでApacheのサービスを再起動後も自動で起動するように設定
  8. systemctl start httpd.serviceでApacheをスタート状態にする。
  9. wget http://ja.wordpress.org/latest-ja.tar.gz ~/でWordPressのパッケージをダウンロード
  10. tar zxvf ~/latest-ja.tar.gzでダウンロードしたファイルを展開
  11. cp -r ~/wordpress/* /var/www/html/でWordPressとファイルを/var/www/html/にコピー
  12. chown apache:apache -R /var/www/htmlでファイルの権限をApacheの所有者、ユーザーグループに設定に変更

ブラウザからWordPressを確認する

  1. EC2インスタンスからパブリックIPアドレスを確認し、アドレスバーに貼り付けてEnterを押す。
  2. WordPressの初期設定の画面が表示されるので、「さあ、始めましょう!」を選択
  3. データベース名:wordpress
  4. ユーザー名:RDS作成時に入力した「マスターユーザー名」を入力
  5. パスワード:上記と同様に「マスターパスワード」を入力
  6. データベースのホスト名:RDSの画面の左メニューから「データベース」を選択し、「接続とセキュリティ」タブの「エンドポイント」の値をコピーして入力
  7. 「送信」を選択
  8. 「インストール実行」を選択
  9. 「サイトのタイトル」「ユーザー名」「パスワード」「メールアドレス」は任意のものを入力
  10. 「WordPressをインストール」を選択
  11. 「ログイン」を選択
  12. ユーザー名とパスワードを入力してログイン
  13. 管理画面に遷移するので、左上の家マークを選択

最後に

今回の構成だとEC2に障害が発生した場合、サービス全体が停止してしまうため、次回はAZ 1cに新たにEC2とRDSを構築したいと思います。
次回の構成
スクリーンショット 2021-06-21 9.54.31.png
上記の構成手順につきましては下記の記事に掲載しております。
https://qiita.com/zakinicof/items/a320268727f92d06a3b4
間違い等ございましたらご指摘いただけますと幸いです。

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