【初心者向け】EC2とRDSで構築する安全・高性能なWordPress環境

AWS

はじめに

本記事では、EC2でWebサーバーを構築し、データベースはRDSに分離する方法を解説します。
前回の記事では、EC2インスタンス内にWebサーバー(Apache + PHP)とデータベース(MariaDB)を同居させてWordPressを構築しました。

【初心者向け】EC2でWordPressを構築してみよう!
AWS EC2でWordPressを構築する手順を丁寧に解説。VPC・サブネット・IGW・ルート・SG・IAM・EC2、Apache+PHP+MariaDB、WP配置とDB作成、wp-config設定、HTTPでの確認まで。

前回の記事実施後を前提に記載します。


今回は構成を一歩進め、データベースをAmazon RDSへ移行し、セキュアかつ拡張性の高い構成を実現します。

最終的なゴールは、EC2上のWordPressからRDSに接続し、動作する環境を構築することです。

構成概要

今回の構成では、以下のように役割を明確に分離します。

  • EC2(Webサーバー)
    WordPressアプリケーションを稼働させる役割。インターネットからHTTPでアクセス可能。
  • RDS(データベースサーバー)
    WordPressのデータベースを保存する役割。インターネットには公開せず、VPC内のEC2からのみ接続可能。

この分離構成により、アプリケーションとデータベースを別々に管理でき、セキュリティや運用の柔軟性が向上します。

分離構成のメリット

  1. セキュリティ向上
    データベースをインターネット非公開にし、特定のEC2インスタンスからのみ接続を許可できます。
  2. 運用負荷軽減
    RDSは自動バックアップやスナップショット、フェイルオーバーなどの機能を備えており、DB運用の手間を削減できます。
  3. スケーラビリティ確保
    アクセス増加時にEC2とRDSを個別にスケールアップ/スケールアウトできるため、効率的なリソース管理が可能です。

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

何をするか

AWSでは セキュリティグループ(SG) を使って、インスタンス単位で通信を制御します。
今回は EC2用RDS用 の2つを作成し、必要な通信だけを許可します。

前回EC2ようを作成したので、RDS用の設定飲み行っていきます。

設計方針

  • EC2(WordPress)用SG(作成済)
    • HTTP(80)とHTTPS(443)をインターネットから許可
    • データベース(3306)へのアクセスは不要なので許可しない
  • RDS用SG(新規作成)
    • MySQL(3306)を EC2のSGからのみ許可
    • インターネットからの直接アクセスは禁止

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

  1. 「セキュリティグループを作成」
  2. 以下を入力:
    • 名前:wordpress-db-sg
    • VPC:wordpress-vpc
  3. インバウンドルールを追加: 種類プロトコルポート範囲ソース(下記表を参考)
  4. アウトバウンドルールはデフォルト(すべて許可)のまま
  5. 「作成」をクリック
タイププロトコルポートソース
MYSQL/AuroraTCP3306EC2のSG指定

設定値の意味

項目設定例説明
MYSQL/Aurora 3306EC2のSG指定外部からの直接アクセスを遮断し、EC2からのみ許可

これでどうなるか

  • EC2(Webサーバー) はインターネットからWebアクセス可能
  • RDS(データベース) はEC2からのみ接続可能で、外部からの不正アクセスを防止

RDSインスタンス&サブネット作成

何をするか

AWS RDS を利用して、データベースを EC2 とは別のサーバーに分離します。
今回は MariaDB を利用し、WordPress 専用のデータベースを作成します。
併せて、DB 用のサブネットも作成します。

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

  1. AWS マネジメントコンソールで 「RDS」サービス を開く
  2. 「データベース作成」 をクリック
  3. 以下の項目を設定

基本設定

項目設定例説明
データベース作成方法標準作成高度な設定を行うため
エンジンの種類MariaDBMySQL互換でWordPress対応
エンジンバージョンMariaDB 11.4.5最新安定版を使用
DB インスタンス識別子wordpress-db任意の名前
認証情報ユーザー:Admin
マスターパスワード:******
記録・管理必須
インスタンスクラスdb.t3.micro無料枠または学習用に最適
ストレージタイプ汎用SSD(gp2)コストと性能のバランスが良い
ストレージサイズ20GB学習用途として十分

ユーザー名とパスワードは覚えておきましょう

接続設定

項目設定例説明
コンピューティングリソースEC2 コンピューティングリソースに接続アプリサーバーと分離
DB サブネットグループ自動セットアップ必要なプライベートサブネットとルートテーブルを自動生成
EC2 インスタンス作成したインスタンスを指定対象インスタンスと紐付け
パブリックアクセス無効セキュリティ強化
セキュリティグループwordpress-db-sgEC2 からの 3306 のみ許可

補足

  • DBサブネットグループを自動セットアップにすると、必要なプライベートサブネットとルートテーブルが自動で作成されます。
  • パブリックアクセスは無効化し、EC2側セキュリティグループからのアクセスのみに制限してください。

RDS初期設定

  1. インスタンス作成後、RDS のエンドポイント を控える
  2. EC2 に MySQL クライアントをインストールし、接続確認
mysql -h <RDSのエンドポイン> -u <ユーザー> -p
  1. WordPress 用のデータベースとユーザーを作成
CREATE DATABASE wp_db DEFAULT CHARACTER SET utf8mb4;
CREATE USER 'wp_user'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON wp_db.* TO 'wp_user'@'%';
FLUSH PRIVILEGES;

これでどうなるか

セキュリティ強化
DBをプライベートサブネットに配置し、パブリックアクセス無効+EC2からの3306のみ許可で外部から直接アクセス不可。

運用性向上
バックアップやメンテナンスをRDSが自動で実施。必要に応じてインスタンスやストレージを容易に拡張可能。

wp-config.php 設定

何をするか

WordPress の設定ファイル wp-config.php を編集し、
データベース接続先を RDS に変更します。

編集手順(EC2内で作業)

  1. wp-config.php を開く
cd /var/www/html
sudo cp wp-config-sample.php wp-config.php
sudo vi wp-config.php
  1. データベース接続情報を修正
/** WordPress のためのデータベース名 */
define( 'DB_NAME', 'wp_db' );

/** MySQL データベースのユーザー名 */
define( 'DB_USER', 'wp_user' );

/** MySQL データベースのパスワード */
define( 'DB_PASSWORD', 'password' );

/** MySQL のホスト名(RDS のエンドポイント) */
define( 'DB_HOST', 'xxxxxx.ap-northeast-1.rds.amazonaws.com' );

アクセス確認

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

  • アクセス方法
    ブラウザで以下を入力
http://<EC2のパブリックIPv4アドレス>
  • 表示される画面
    WordPressのインストール画面(初期セットアップ画面)が表示されれば成功です。
    • サイトタイトル、ユーザー名、パスワードなどを設定すると管理画面にログインできます。

まとめ

今回の手順では、WordPress環境をEC2とRDSに分離し、以下のようなメリットを得られました。

  • セキュリティ向上:RDSをプライベートサブネットに配置し、EC2からの接続のみ許可
  • 運用性改善:RDSの自動バックアップやスナップショットで管理負荷を軽減
  • スケーラビリティ確保:WebサーバーとDBを個別にスケール可能
  • 健全な構成:アプリとデータベースを分離し、最小権限のユーザーで運用

コメント

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