0
1

EC2でブログシステムを構築してみる

Last updated at Posted at 2024-09-03

はじめに

本投稿は、ハンズオン学習をした内容のアウトプットになります。
Amazon Linux2023にwordpressを導入してブログシステムを構築します。

使用した教材

Amazon Web Services基礎からのネットワーク&サーバー構築改訂4版

作成する環境の構成

いたってシンプルな構成です。
パブリックサブネット :WEBサーバ、NATゲートウェイ
プライベートサブネット:DBサーバ

スクリーンショット 2024-09-02 195822.png

実際に構築してみる

①VPCの作成

まずはVPCを作成します。
CIDRブロックはプライベートサブネットとパブリックサブネットが分けられれば適当でOKです。
今回は、教材に従い、「10.0.0.0/16」としておきます。

image.png

②サブネットの作成

サブネットの作成を行います。
サブネットとは、VPC内の独立したネットワークグループのようなイメージです。
セグメントという言葉で聞いたことがある人もいるかもしれませんね。

AWSではインターネットゲートウェイがアタッチされるサブネットをパブリックサブネット、
アタッチされていないサブネットをプライベートサブネットと呼びます。

今回は、パブリックサブネットと、プライベートサブネットの2つを作成します。
パブリックサブネットのCIDRブロックは「10.0.1.0/24」
プライベートサブネットのCIDRブロックは「10.0.2.0/24」としておきます。

image.png
image.png

③インターネットゲートウェイをアタッチする

次にインターネットゲートウェイを作成します。
作成したインターネットゲートウェイを今回作成したVPCにアタッチします。

image.png
image.png
image.png

④ルートテーブルを作成する

先ほどはVPCに対し、インターネットゲートウェイをアタッチしました。
アタッチしただけではインターネットに通信できませんので、
インターネットと通信するための通り道(ルートテーブル)を作成します。

image.png

ルートテーブルが作成できたら、作成したルートテーブルを編集して、
インターネットとの通信を行うルーティングを追加します。
image.png

ルーティング追加後、サブネットを関連付けることで、関連付けされたサブネットに配置されたリソースからインターネットへ通信が行えるようになります。
ここではインターネット通信を行いたいサブネットだけを関連付けます。
image.png

⑤EC2インスタンスを起動する

細かい設定は割愛しますが、インスタンス起動設定の中で、セキュリティグループを作成します。
WEBサーバで利用するインスタンスはインターネットゲートウェイを経由した通信が行えるので、SSHを自分のIPから許可するように設定しておきます。
後程インスタンスにApacheをインストールするので、ここでポート80を0.0.0.0/0から許可しておいてもOKです。
image.png

また、高度なネットワーク設定からプライマリIPアドレスを設定することで、
ローカルで利用する際のIPアドレスを固定化することができます。
image.png

続いて、DBサーバ用のインスタンスを作成します。
DBサーバについても同じタイミングでセキュリティグループを作成します。

先ほどのWEBサーバはSSHを自分のIPからできるように設定しましたが、
それはインターネットゲートウェイを経由した通信の場合です。
DBサーバはプライベートサブネットに配置するため、インターネットゲートウェイを経由した通信は行えません。
なので今回は、WEBサーバを踏み台としてDBサーバにSSHする設定を行います。
ここでは先ほど高度なネットワーク設定で設定したプライマリIPアドレスを指定してみました。
DB接続に利用する通信も同じように設定しておきましょう。(ここでは0.0.0.0/0にしていますが・・・)

複数のサーバが今回利用するサブネットへ通信できる場合は通信できるサーバのIPアドレスを指定して最小のアクセス権を設定するようにしましょう。

※取り忘れたので編集画面です。
image.png

⑥DBサーバで利用するNATゲートウェイを作成する

DBサーバは現時点ではプライベートサブネットに配置されており、パブリックIPアドレスを持っていないため、インターネットに接続できず、dnfコマンドを利用したパッケージのインストールができません。

ここで使用するのがNATゲートウェイです。
NATゲートウェイを経由することで、インターネットゲートウェイへの経路がないサーバから安全にインターネットへの片道通信を行うことができます。
NATゲートウェイは サーバ→NATゲートウェイ→インターネットゲートウェイ という通信を行い、逆方向の通信は許可しません。(戻りの通信は行えます)
なので、外部へ通信を行う必要があるが、外部から内部への通信は許可しないという要件がある場合に利用します。

image.png

作成できたらプライベートサブネットのルートテーブルにインターネット向け通信を追加します。
ターゲットは先ほど作成したNATゲートウェイを指定します。
image.png

NATゲートウェイは無料利用枠ではないため、起動している時間だけ課金されます。
用事が済んだら早々に削除しましょう。
NATゲートウェイを削除したらルートテーブルに設定した内容も削除しておきましょう。

⑦必要なパッケージをダウンロードして起動する

細かいコマンドは省きますが、dnfコマンドを利用して以下の通りパッケージをインストールします。
■WEBサーバ
・Apache
・php
・MariaDB

■DBサーバ
・MariaDB

ダウンロードが完了したら、WEBサーバでApache、DBサーバでMariaDBを起動して設定を行います。
wordpressはdnfコマンドではインストールできないので、wgetコマンドを利用してwordpressのホームページからダウンロードします。

wordpressの初期設定をする際に
「お使いのサーバーの PHP では WordPress に必要な MySQL 拡張を利用できないようです。」
というエラーが表示されました。
調べてみるとインストールするパッケージが足りないことがわかりました。
追加で、php-mysqlndをインストールしました。

すべてのパッケージのインストール、設定、起動が完了したら、
WEBブラウザで、構築した以下のURLに接続します。
http://WEBサーバのグローバルIPアドレス:80/wp-admin

グローバルIPアドレスは、EC2の画面で確認できます。
勉強などで利用する場合は、グローバルIPが流出しないように心がけましょう!
グローバルIPはインスタンスを再起動したりすると変わります。
もし固定化したい場合は、Elastic IPを利用することでグローバルIPアドレスを固定化することができます。
Elastic IPはアタッチしていない場合、料金が発生するので、アタッチしたリソースを停止したり削除する場合などは気を付けましょう。

無事wordpressにアクセスすることができました!
image.png

wordpress用に作成したデータベースの接続情報を入力しセットアップを進めていきます。
wordpressへのログインもOKでした。
image.png

おわりに

AWSでブログシステムを構築することができました。
シンプルな構成なので、短時間で作成できました。
(不要な課金を避けるために学習が終わったらリソースはすべて削除しました)

次はIaCでインフラ構築ができればいいなと思います。

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