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

前回の記事実施後を前提に記載します。
今回は構成を一歩進め、データベースをAmazon RDSへ移行し、セキュアかつ拡張性の高い構成を実現します。
最終的なゴールは、EC2上のWordPressからRDSに接続し、動作する環境を構築することです。
構成概要
今回の構成では、以下のように役割を明確に分離します。
- EC2(Webサーバー)
WordPressアプリケーションを稼働させる役割。インターネットからHTTPでアクセス可能。 - RDS(データベースサーバー)
WordPressのデータベースを保存する役割。インターネットには公開せず、VPC内のEC2からのみ接続可能。
この分離構成により、アプリケーションとデータベースを別々に管理でき、セキュリティや運用の柔軟性が向上します。

分離構成のメリット
- セキュリティ向上
データベースをインターネット非公開にし、特定のEC2インスタンスからのみ接続を許可できます。 - 運用負荷軽減
RDSは自動バックアップやスナップショット、フェイルオーバーなどの機能を備えており、DB運用の手間を削減できます。 - スケーラビリティ確保
アクセス増加時にEC2とRDSを個別にスケールアップ/スケールアウトできるため、効率的なリソース管理が可能です。
セキュリティグループ設計
何をするか
AWSでは セキュリティグループ(SG) を使って、インスタンス単位で通信を制御します。
今回は EC2用 と RDS用 の2つを作成し、必要な通信だけを許可します。
前回EC2ようを作成したので、RDS用の設定飲み行っていきます。
設計方針
- EC2(WordPress)用SG(作成済)
- HTTP(80)とHTTPS(443)をインターネットから許可
- データベース(3306)へのアクセスは不要なので許可しない
- RDS用SG(新規作成)
- MySQL(3306)を EC2のSGからのみ許可
- インターネットからの直接アクセスは禁止
作成手順(マネジメントコンソール)
- 「セキュリティグループを作成」
- 以下を入力:
- 名前:
wordpress-db-sg
- VPC:
wordpress-vpc
- 名前:
- インバウンドルールを追加: 種類プロトコルポート範囲ソース(下記表を参考)
- アウトバウンドルールはデフォルト(すべて許可)のまま
- 「作成」をクリック
タイプ | プロトコル | ポート | ソース |
---|---|---|---|
MYSQL/Aurora | TCP | 3306 | EC2のSG指定 |

設定値の意味
項目 | 設定例 | 説明 |
---|---|---|
MYSQL/Aurora 3306 | EC2のSG指定 | 外部からの直接アクセスを遮断し、EC2からのみ許可 |
これでどうなるか
- EC2(Webサーバー) はインターネットからWebアクセス可能
- RDS(データベース) はEC2からのみ接続可能で、外部からの不正アクセスを防止
RDSインスタンス&サブネット作成
何をするか
AWS RDS を利用して、データベースを EC2 とは別のサーバーに分離します。
今回は MariaDB を利用し、WordPress 専用のデータベースを作成します。
併せて、DB 用のサブネットも作成します。
作成手順(マネジメントコンソール)
- AWS マネジメントコンソールで 「RDS」サービス を開く
- 「データベース作成」 をクリック
- 以下の項目を設定
基本設定
項目 | 設定例 | 説明 |
---|---|---|
データベース作成方法 | 標準作成 | 高度な設定を行うため |
エンジンの種類 | MariaDB | MySQL互換でWordPress対応 |
エンジンバージョン | MariaDB 11.4.5 | 最新安定版を使用 |
DB インスタンス識別子 | wordpress-db | 任意の名前 |
認証情報 | ユーザー:Admin マスターパスワード:****** | 記録・管理必須 |
インスタンスクラス | db.t3.micro | 無料枠または学習用に最適 |
ストレージタイプ | 汎用SSD(gp2) | コストと性能のバランスが良い |
ストレージサイズ | 20GB | 学習用途として十分 |
ユーザー名とパスワードは覚えておきましょう
接続設定
項目 | 設定例 | 説明 |
---|---|---|
コンピューティングリソース | EC2 コンピューティングリソースに接続 | アプリサーバーと分離 |
DB サブネットグループ | 自動セットアップ | 必要なプライベートサブネットとルートテーブルを自動生成 |
EC2 インスタンス | 作成したインスタンスを指定 | 対象インスタンスと紐付け |
パブリックアクセス | 無効 | セキュリティ強化 |
セキュリティグループ | wordpress-db-sg | EC2 からの 3306 のみ許可 |
補足
- DBサブネットグループを自動セットアップにすると、必要なプライベートサブネットとルートテーブルが自動で作成されます。
- パブリックアクセスは無効化し、EC2側セキュリティグループからのアクセスのみに制限してください。
RDS初期設定
- インスタンス作成後、RDS のエンドポイント を控える
- EC2 に MySQL クライアントをインストールし、接続確認
mysql -h <RDSのエンドポイント> -u <ユーザー名> -p
- 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内で作業)
- wp-config.php を開く
cd /var/www/html
sudo cp wp-config-sample.php wp-config.php
sudo vi wp-config.php
- データベース接続情報を修正
/** 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を個別にスケール可能
- 健全な構成:アプリとデータベースを分離し、最小権限のユーザーで運用
コメント