【初心者向け】EC2でWordPressを構築してみよう!

EC2

はじめに

今回は、AWSのEC2について学びたい方向けに、実際に WordPressのデプロイ を通して基礎を体験できる構成を紹介します。
クラウド上にブログやホームページを構築する第一歩として、実践的な内容になっています。インフラ構築の勉強にも最適です。

本記事はAWS EC2上にWordPressを構築し、ブラウザからアクセスできる状態を目指します。

構成図

以下のようなシンプルな構成を想定しています

手順一覧

以下のステップで構築を進めていきます。

  1. VPCの作成
  2. サブネットの作成(パブリック)
  3. インターネットゲートウェイの作成とアタッチ
  4. ルートテーブルの作成と関連付け
  5. セキュリティグループの作成
  6. EC2インスタンスの作成
  7. Apache + PHP + MariaDB のインストール
  8. WordPressファイルの配置
  9. データベースの作成
  10. wp-config.php の編集と設定

VPC作成

何をするか

まずはEC2インスタンスを配置するための仮想ネットワーク「VPC(Virtual Private Cloud)」を作成します。
VPCはクラウド上に構築する自分専用のネットワーク空間で、IPアドレスの範囲や通信ルールを自由に設計できます。

これがインフラ構築の第一ステップです。

作成手順(マネジメントコンソール)

  1. AWSマネジメントコンソールにログイン
  2. 「VPC」サービスに移動
  3. 左メニューの「VPC」→「VPCを作成」をクリック
  4. 以下を入力して作成
    • 名前タグ:wordpress-vpc
    • IPv4 CIDR ブロック:10.0.0.0/16
    • その他の設定はデフォルトのままでOK
  5. 「VPCを作成」ボタンをクリックして完了

設定値の意味

項目設定例説明
名前タグwordpress-vpcVPCの識別用の名前。わかりやすい名前をつけましょう。
IPv4 CIDR ブロック10.0.0.0/16VPC内で利用するプライベートIPアドレスの範囲を指定します。/16だと最大65,536個のIPが使えます。
IPv6 CIDR ブロック無効または割り当てなし今回は使用しません(必要に応じて後から追加可能です)。
テナンシーデフォルト「専有」ではなく「共有」ハードウェア上にインスタンスを配置する設定です(コスト面で一般的)。

これでどうなるか

このVPCは、今後作成するサブネットやインターネットゲートウェイ、ルートテーブルなどの土台になります。
この時点ではまだ通信はできませんが、次のステップでそれを可能にしていきます。

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

何をするか

VPC内にサブネット(Subnet) を作成します。
サブネットとは、VPC内でIPアドレスの範囲を区切るネットワークの一部であり、EC2インスタンスを実際に配置する場所です。

今回は、インターネットに接続できる パブリックサブネット を作成します。

作成手順(マネジメントコンソール)

  1. 「VPC」サービスにアクセス
  2. 左メニューから「サブネット」→「サブネットを作成」をクリック
  3. 以下を入力:
    • 名前タグ:wordpress-subnet-01
    • VPC:wordpress-vpc
    • アベイラビリティゾーン:任意(例:ap-northeast-1a
    • IPv4 CIDRブロック:10.0.1.0/24
  4. 下部オプションの「パブリック IPv4 アドレスの自動割り当て」に✔を入れる
  5. 「サブネットを作成」をクリック
Screenshot

設定値の意味

項目設定例説明
名前タグwordpress-subnet-01わかりやすい名称を付けましょう。
VPCwordpress-vpc作成済みのVPCを指定します。
アベイラビリティゾーン(AZ)ap-northeast-1a など任意のAZを選びます。同じリージョン内であればどれでも可。
IPv4 CIDR ブロック10.0.1.0/24このサブネットに割り当てるIPアドレス範囲。VPCのCIDRブロック内で重複しない範囲を指定します。
パブリック IPv4 アドレスの自動割り当て有効(✔ チェック)インスタンス起動時に自動的にパブリックIPを割り当てる設定。パブリックサブネットに必須です。

これでどうなるか

インターネットに出られる準備が整ったサブネットが完成します。

  • このサブネットに配置されるEC2インスタンスには、起動時に自動でパブリックIPアドレスが割り当てられます。
  • ただし、まだ ルートテーブルでインターネットへの経路(IGW)を設定していないため、通信はできません。

インターネットゲートウェイの作成とアタッチ

何をするか

作成したVPCからインターネットにアクセスできるようにするために、インターネットゲートウェイ(IGW: Internet Gateway) を作成し、VPCに接続(アタッチ)します。
これにより、EC2インスタンスが外部と通信できるようになります(例:Webアクセスやパッケージのインストールなど)。

IGWの作成手順

  1. AWSマネジメントコンソールで「VPC」サービスにアクセス
  2. 左メニューから「インターネットゲートウェイ」を選択
  3. 「インターネットゲートウェイを作成」をクリック
  4. 名前タグに wordpress-igwと入力
  5. 「インターネットゲートウェイを作成」をクリック
Screenshot

アタッチ手順

  1. 作成したIGWを選択
  2. 「アクション」→「VPCにアタッチ」をクリック
  3. 接続先VPCとして wordpress-vpc を選択
  4. 「アタッチ」をクリック

これでどうなるか

  • VPCにインターネットの出入口が接続されました。
  • ただしこの時点ではまだルートテーブルの設定がされていないため、実際の通信はできません。
  • 次のステップ(ルートテーブル作成)で、インターネット経路を明示的に指定します。

ルートテーブル設定

何をするか

ルートテーブル(Route Table) は、VPC内の通信ルート(経路)を定義するものです。
ここでは、パブリックサブネットからインターネットにアクセスできるようにするためのルートを設定します。

具体的には下記を行います。

  • 0.0.0.0/0(すべての外部アドレス)宛のトラフィックを インターネットゲートウェイ(IGW) に転送するルートを追加
  • そのルートテーブルをパブリックサブネットに関連付ける

作成手順(ルートテーブル)

  1. 「VPC」サービスにアクセス
  2. 左メニューから「ルートテーブル」→「ルートテーブルを作成」をクリック
  3. 以下を入力:
    • 名前タグ:wordpress-rt
    • VPC:wordpress-vpc
  4. 「ルートテーブルを作成」をクリックして完了
Screenshot

ルートの追加手順

  1. 作成したルートテーブルを選択
  2. 「ルート」タブ → 「ルートを編集」をクリック
  3. 「ルートの追加」を押し、以下を入力:
    • 送信先:0.0.0.0/0
    • ターゲット:作成済みの インターネットゲートウェイ(igw-xxxxxxx)
  4. 「変更を保存」をクリック

サブネットとの関連付け手順

  1. 同じルートテーブル画面の「サブネットの関連付け」タブを開く
  2. 「サブネットの関連付けを編集」をクリック
  3. wordpress-subnet-01を選択して「保存」

役割と設定内容

項目設定例・内容説明
名前タグwordpress-rtわかりやすい名前を設定
VPCwordpress-vpc作成済みのVPCを指定
ルートの送信先0.0.0.0/0すべてのIPv4トラフィックを意味します
ターゲットigw-xxxxxxx(作成済みのIGW)インターネットゲートウェイを指定します
サブネットの関連付けwordpress-subnet-01作成済みのサブネットと紐付けることで、このルートテーブルが適用されます

これでどうなるか

対象のサブネット(=パブリックサブネット)からインターネットへ通信できる経路が確立されます。

  • 0.0.0.0/0 のルートは、「すべての外部宛の通信」を意味し、
  • それを インターネットゲートウェイ(IGW)に向けることで、EC2インスタンスから外部ネットワーク(インターネット)への送信が可能になります。

ただし、この時点ではまだEC2インスタンスへの外部からのアクセスはできません。

  • なぜなら、セキュリティグループ(ファイアウォール)の設定がまだ行われていないためです。
  • セキュリティグループで必要なポート(SSH:22、HTTP:80など)を開放しない限り、外部からの通信は遮断されたままとなります。

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

何をするか

セキュリティグループ(Security Group) は、EC2インスタンスへの 仮想ファイアウォール です。
ここでは、外部からWebブラウザでWordPressにアクセスしたりするために必要な通信ポートを開放します。

作成手順

  1. 「EC2」サービスにアクセス
  2. 左メニューから「セキュリティグループ」→「セキュリティグループを作成」
  3. 以下を入力:
  4. 名前wordpress-sg
    • 説明:WordPress用セキュリティグループ
    • VPCwordperss-vpc(作成済みのVPCを選択)
  5. 「インバウンドルールを追加」をクリックし、以下を追加
タイププロトコルポートソース
HTTPTCP800.0.0.0/0
HTTPSTCP4430.0.0.0/0

これでどうなるか

このセキュリティグループをEC2インスタンスに適用することで、次のような通信が許可されます

  • WebブラウザからWordPressページへアクセス

IAM

何をするか

EC2インスタンスから AWS Systems Manager(SSM) を利用し、Session Manager経由で安全に接続できるようにするためのIAMロールを作成します。
これにより、SSH鍵を使わずブラウザやAWS CLIからEC2にログイン可能になります。
アクセスキーや秘密鍵を直接インスタンスに配置する必要がなく、セキュリティ面で優れています。

作成手順

  1. 「IAM」サービスにアクセス
  2. 左メニューから「ロール」→「ロールを作成」をクリック
  3. 信頼されたエンティティの種類AWSサービス を選択
  4. ユースケースEC2 を選択し「次へ」
  5. ポリシー検索欄に SSM と入力し、以下を選択:
  • AmazonSSMManagedInstanceCore(必須)
    → EC2がSSMと通信するための基本ポリシー

6. 「次へ」→ ロール名を入力(例:wordpress-ec2-role
7, 「ロールを作成」をクリック

これでどうなるか

  • 作成したIAMロールは、EC2起動時または後からアタッチできます。
  • このIAMロールをEC2にアタッチすると、SSHポートを開けなくてもSSM経由で接続可能になります。

EC2作成

何をするか

これまで準備してきた VPC・パブリックサブネット・インターネットゲートウェイ・ルートテーブル・セキュリティグループ を使い、実際にWordPressを動かすためのEC2インスタンスを起動します。

作成手順

  1. 「EC2」サービスにアクセス
  2. 「インスタンスを起動」をクリック
  3. 以下を順に設定
項目設定例意味
名前とタグwordpressインスタンスを識別するための名前。AWSコンソールや請求明細にも表示されるのでわかりやすい名称にします。
マシンイメージ(AMI)Amazon Linux 2023EC2で動かすOSのテンプレート。Amazon公式AMIは軽量でAWSサービスとの互換性が高く、学習・実践どちらにも適しています。
インスタンスタイプt2.micro(無料枠を利用)仮想マシンのスペック(CPU・メモリ)を決定。
キーペア新規作成または既存を選択SSH接続用の鍵ファイル。セキュリティ上、秘密鍵はローカルに安全に保管します。
ネットワーク設定VPC:wordpress-vpc / サブネット:wordpress-subnet-01どの仮想ネットワークに配置するかを指定。ここで指定したサブネットの通信経路やIP割り当て設定が適用されます。
自動割り当てIP有効(サブネット設定でONの場合は自動)インターネットと通信するためのパブリックIPを自動で付与。学習用のパブリックサーバには必須。
セキュリティグループwordpress-sgインバウンド/アウトバウンド通信の許可ルールを持つ仮想ファイアウォール。ここでHTTPやSSHなど必要なポートを開放します。
IAMロールwordpress-ec2-roleEC2からS3やCloudWatchなどAWSサービスに安全にアクセスするための権限セット。アクセスキー不要で安全。
ストレージ8GB GP3(デフォルト)EC2のディスク容量と種類。GP3は汎用SSDで、学習や小規模サイトに十分な性能。
インスタンス数1起動する仮想マシンの台数。検証や学習目的では1台でOK。
  1. 「インスタンスを起動」をクリック
Screenshot
Screenshot

これでどうなるか

  • EC2インスタンスが起動し、パブリックIPを持つサーバが完成します。
  • 現時点ではまだApacheやPHPなどの環境は入っていないため、次のステップでインストール作業を行います。
  • 作成したIAMロールを持つため、インスタンスから直接AWSサービスにアクセスできます。

Apache + PHP + MariaDB のインストール

何をするか

EC2インスタンスにWebサーバー(Apache)、スクリプト実行環境(PHP)、データベース(MariaDB)をインストールします。
これらが揃うことでWordPressを動かせる環境になります。

接続方法(SSM経由)

IAMロールに AmazonSSMManagedInstanceCore ポリシーを付与していれば、SSHポートを開けなくても接続できます。

  1. AWSマネジメントコンソール → 「Systems Manager」
  2. 左メニューから「セッションマネージャー」→「セッションの開始」
  3. 対象のEC2インスタンスを選択 → 「セッション開始」

この状態でコマンドが実行可能です。

インストールコマンド

# パッケージ更新
sudo yum update -y

# Apache, PHP, MariaDBをインストール
sudo yum install -y httpd php php-mysqlnd mariadb105-server

# サービス有効化&起動
sudo systemctl enable httpd
sudo systemctl start httpd
sudo systemctl enable mariadb
sudo systemctl start mariadb

これでどうなるか

  • Apacheが稼働し、HTTP通信の応答が可能になります。
  • PHPが動作し、WordPressの動的処理が可能になります。
  • MariaDBが起動し、WordPress用データベースを利用できる状態になります。

WordPressファイルの配置

何をするか

公式サイトからWordPressをダウンロードし、Apacheの公開ディレクトリに配置します。

手順

cd /var/www/html
sudo wget https://wordpress.org/latest.tar.gz
sudo tar -xzf latest.tar.gz
sudo mv wordpress/* .
sudo rm -rf wordpress latest.tar.gz
sudo chown -R apache:apache /var/www/html

これでどうなるか

  • /var/www/html にWordPress本体が展開され、ブラウザアクセス時に初期セットアップ画面が表示される準備が整います。
  • まだデータベース接続設定をしていないため、次の工程で設定します。

データベースの作成

何をするか

MariaDB上にWordPress用データベースと接続ユーザーを作成します。

手順

# MariaDBにログイン
sudo mysql -u root

MariaDB内で以下を実行

CREATE DATABASE wordpress;
CREATE USER 'wpuser'@'localhost' IDENTIFIED BY 'strongpassword';
GRANT ALL PRIVILEGES ON wordpress.* TO 'wpuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;

これでどうなるか

  • WordPressが利用するデータベースと接続用ユーザーが作成されました。
  • この情報をwp-config.phpに設定することで、WordPressがDBと通信できるようになります。

wp-config.php の編集と設定

何をする

WordPressの設定ファイル wp-config.php に、作成したデータベース情報を記載します。

手順

cd /var/www/html
sudo cp wp-config-sample.php wp-config.php
sudo vi wp-config.php

該当箇所を以下のように編集

define('DB_NAME', 'wordpress');
define('DB_USER', 'wpuser');
define('DB_PASSWORD', 'strongpassword');
define('DB_HOST', 'localhost');

これでどうなるか

  • WordPress本体とMariaDBが接続されます。
  • ブラウザでEC2のパブリックIP(またはドメイン)にアクセスすると、WordPressの初期セットアップ画面が表示されます。
  • 管理者アカウントやサイト情報を設定すれば、WordPressサイトの構築が完了です。

アクセス確認

構築が完了したら、ブラウザからEC2のパブリックIPv4アドレスにアクセスして動作を確認します。

  • アクセス方法
    ブラウザで以下を入力
http://<EC2のパブリックIPv4アドレス>
  • 表示される画面
    WordPressのインストール画面(初期セットアップ画面)が表示されれば成功です。
    • サイトタイトル、ユーザー名、パスワードなどを設定すると管理画面にログインできます。
  • 注意点(HTTPSアクセス)
    • 現状はSSL証明書を設定していないため、
      https://<EC2のパブリックIPv4アドレス> にアクセスすると失敗します。
    • HTTPS対応を行うには、自己署名証明書やLet’s Encrypt、AWS ACMなどで証明書を発行し、Apacheに設定する必要があります。

まとめ

これで以下の手順を経て、AWS EC2上でWordPressを動かす環境が構築できました。

  1. VPC・サブネット・IGW・ルートテーブルの設定
    • インターネット接続可能なパブリックサブネットを構築
  2. セキュリティグループの作成
    • HTTP(80)ポートを開放
  3. IAMロールの作成(SSM接続用)
    • SSH鍵なしで安全にログイン可能
  4. EC2インスタンス作成
    • Apache + PHP + MariaDB 環境をセットアップ
  5. WordPress配置・DB作成・設定
    • wp-config.php に接続情報を設定
  6. アクセス確認
    • HTTPアクセスでインストール画面が表示されればOK

コメント

タイトルとURLをコピーしました