Content is user-generated and unverified.

AWS WordPress環境構築 完全ガイド(実体験ベース)

目次

  1. 前提条件・注意事項
  2. VPC構築
  3. セキュリティグループ作成
  4. RDS(データベース)構築
  5. EC2(Webサーバー)構築
  6. WordPress設定
  7. S3連携設定
  8. リソース削除手順

前提条件・注意事項

⚠️ 重要な初期設定

  • リージョン選択: 必ず東京(ap-northeast-1)を選択
    • シドニーなど他リージョンでは権限エラーが発生する可能性があります
  • 権限確認: IAMユーザーで作業する場合、必要な権限があることを確認
    • AmazonVPCFullAccess
    • AmazonEC2FullAccess
    • AmazonRDSFullAccess
    • AmazonS3FullAccess

🔑 用語の整理(重要)

用語意味家に例えると
VPC仮想プライベートクラウド敷地・土地
サブネットVPC内の区画敷地内の部屋・エリア
インターネットゲートウェイ外部接続の出入口玄関ドア
セキュリティグループファイアウォール玄関の警備員
EC2仮想サーバー家そのもの
RDSデータベースサービス倉庫(データ保管場所)

VPC構築

1. VPC作成

  1. AWSコンソール → VPC → 「VPCを作成」
  2. 重要: 「VPCのみ」を選択(「VPCなど」は権限エラーの原因)
  3. 設定値:
    • VPC名: yuto-nakahara-essential-1-vpc
    • IPv4 CIDR: 10.10.0.0/16

💡 つまずきポイント

  • 最初「VPCなど」を選択すると権限エラーが発生
  • 原因:追加リソース作成に必要な権限が不足
  • 解決:「VPCのみ」で作成後、個別にリソース作成

2. DNS設定の有効化

  1. 作成したVPCを選択
  2. 「アクション」→「VPCの設定を編集」
  3. ✅ DNS解決を有効化(通常は最初から有効)
  4. DNSホスト名を有効化(これを忘れがち)

⚠️ 注意点

「アクション」メニューで「DNSホスト名を編集」が表示されない場合:

  • VPC詳細画面ではなく、VPC一覧画面から操作する
  • 権限不足の可能性(ec2:ModifyVpcAttributeが必要)

3. サブネット作成

以下の4つのサブネットを作成:

サブネット名タイプCIDRAZ
pub-aパブリック10.10.1.0/24ap-northeast-1a
pub-cパブリック10.10.3.0/24ap-northeast-1c
pri-aプライベート10.10.2.0/24ap-northeast-1a
pri-cプライベート10.10.4.0/24ap-northeast-1c

💡 CIDR設定のポイント

  • VPC CIDR: 10.10.0.0/16(全体の範囲)
  • サブネット CIDR: /24(256個のIPアドレス)
  • 選択肢に/16が表示されても、サブネットには/24手入力

4. インターネットゲートウェイ作成

  1. VPC → インターネットゲートウェイ → 「作成」
  2. 作成後、「VPCにアタッチ」を忘れずに実行

5. ルートテーブル設定

  1. VPC → ルートテーブル → 「ルートテーブルを作成」
  2. 名前: yuto-nakahara-essential-1-rtb-pub
  3. ルート追加:
    • 送信先: 0.0.0.0/0
    • ターゲット: 作成したインターネットゲートウェイ
  4. サブネットの関連付け:pub-apub-cを選択

🔍 概念の理解

  • インターネットゲートウェイ: 物理的な出口
  • ルートテーブル: 「どの出口を使うか」の案内標識
  • 両方が必要で、片方だけでは外部通信できない

セキュリティグループ作成

1. Webサーバー用セキュリティグループ(websg)

インバウンドルール:

タイプポートソース説明
SSH22マイIP管理者のみSSH接続可能
HTTP800.0.0.0/0全世界からWebアクセス可能

2. データベース用セキュリティグループ(dbsg)

インバウンドルール:

タイプポートソース説明
MYSQL/Aurora3306websgのSG IDWebサーバーからのDB接続のみ許可

🧠 セキュリティの考え方

  • セキュリティグループ: ネットワークレベルの制御(IP・ポート)
  • WAF: アプリケーションレベルの制御(HTTPリクエスト内容)
  • 使い分け:セキュリティグループで大まかに制御、WAFで細かく制御

💡 ポート番号の理解

  • IPアドレス: 通信相手の住所
  • ポート番号: その住所内の部屋番号(サービス種別)
  • 例:203.0.113.1:80 → IPが住所、80番がHTTPサービスの部屋番号

RDS(データベース)構築

1. DBサブネットグループ作成

  1. RDS → サブネットグループ → 「作成」
  2. 名前: dbsubnetg
  3. VPC: 作成したVPC
  4. サブネット: pri-apri-cを選択

⚠️ つまずきポイント

既存のdbsubnetgが残っている場合:

  • 削除してから再作成
  • または別名(例:dbsubnetg-v2)で作成

2. RDSインスタンス作成

  1. RDS → データベース → 「データベースの作成」
  2. エンジン選択での注意点:
    • MySQL 5.7.23は非推奨のため選択不可
    • MySQL 8.4.5など最新版を選択(延長サポート料金を回避)
  3. 主要設定値:
    • DB名: chapter1
    • マスターユーザー名: wpuser
    • マスターパスワード: wppassword
    • DBインスタンスクラス: db.t3.micro(バースト可能クラスに変更が必要)

💡 設定画面のポイント

  • 認証情報管理: 「セルフマネージド」を選択
    • AWS Secrets Managerだとパスワード入力欄が表示されない
  • DBインスタンスクラス: 「バースト可能クラス(tクラス)」に変更
    • デフォルトは「標準クラス(mクラス)」で高額

3. 設定確認

  • サブネットグループ: dbsubnetg
  • セキュリティグループ: dbsg
  • 状態: 「利用可能」になるまで待機

EC2(Webサーバー)構築

1. キーペア作成

  1. EC2 → キーペア → 「キーペアを作成」
  2. 名前: mykey
  3. ファイル形式: .pem
  4. 重要: ダウンロードしたファイルを保存

2. EC2インスタンス起動

  1. EC2 → インスタンス → 「インスタンスを起動」
  2. AMI選択: Amazon Linux 2023 kernel-6.1 AMI
    • 手順書のAmazon Linux 2は古いため、2023版を使用
  3. 主要設定:
    • インスタンスタイプ: t2.micro
    • キーペア: mykey
    • VPC: 作成したVPC
    • サブネット: pub-a
    • パブリックIP: 有効化
    • セキュリティグループ: websg

3. SSH接続設定

Tera Term使用の場合

  1. Tera Termをダウンロード・インストール
  2. 接続設定:
    • ホスト: EC2のパブリックIPアドレス
    • ポート: 22
    • ユーザー名: ec2-user
    • 認証方式: RSA/DSA/ECDSA/ED25519鍵を使う
    • 秘密鍵: ダウンロードした.pemファイル

EC2 Instance Connect使用の場合

  1. EC2コンソールでインスタンスを選択
  2. 「接続」→「EC2 Instance Connect」
  3. ユーザー名: ec2-user

4. WordPress環境構築

Amazon Linux 2023対応コマンド

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

# PHP と関連モジュールのインストール(2023版では dnf を使用)
sudo dnf install -y php php-mysqlnd php-fpm php-mbstring php-xml php-gd php-opcache php-pdo php-json

# Apache のインストール
sudo dnf install -y httpd

# Apacheを有効化&起動
sudo systemctl enable httpd
sudo systemctl start httpd

# WordPressをダウンロード&配置
wget http://ja.wordpress.org/latest-ja.tar.gz
tar zxvf latest-ja.tar.gz
sudo cp -r ./wordpress/* /var/www/html/
sudo chown apache:apache -R /var/www/html

⚠️ Amazon Linux 2023での変更点

  • amazon-linux-extrasコマンドは廃止
  • yumの代わりにdnfを使用
  • 手順書通りのコマンドは動作しないため、上記コマンドを使用

WordPress設定

1. WordPress初期設定

  1. ブラウザでhttp://<EC2のパブリックDNS>/wp-admin/setup-config.phpにアクセス
  2. データベース接続設定:
    • データベース名: wordpress
    • ユーザー名: wpuser
    • パスワード: wppassword
    • ホスト名: RDSのエンドポイント(例:chapter1.xxxxx.ap-northeast-1.rds.amazonaws.com

💡 エンドポイント確認方法

RDSコンソール → データベース → インスタンス詳細 → 「接続とセキュリティ」タブ

2. サイト情報設定

  • サイトタイトル: 任意
  • ユーザー名: admin
  • パスワード: 強力なもの
  • メールアドレス: 任意

3. 動作確認

  1. 投稿を作成
  2. 画像をアップロード
  3. 画像URLがhttp://<EC2のパブリックDNS>/wp-content/uploads/...形式であることを確認

S3連携設定

1. S3バケット作成

  1. S3コンソール → 「バケットを作成」
  2. 設定:
    • バケット名: ielove-nakahara(グローバルで一意)
    • リージョン: アジアパシフィック(東京)
    • 「すべてのパブリックアクセスをブロック」のチェックを外す

2. IAMロール作成(rootユーザーで実行)

⚠️ 権限の問題

IAMユーザーではiam:CreateRole権限がないためエラーが発生する場合があります。 rootユーザーでログインして実行してください。

  1. IAM → ロール → 「ロールを作成」
  2. 設定:
    • 信頼されたエンティティ: AWS サービス → EC2
    • ポリシー: AmazonS3FullAccess
    • ロール名: WP-Role

3. EC2にIAMロールをアタッチ

  1. EC2コンソール → インスタンス選択
  2. アクション → セキュリティ → IAMロールを変更
  3. WP-Roleを選択して保存

4. WP Offload Media Liteプラグイン設定

  1. WordPress管理画面 → プラグイン → 新規追加
  2. 「WP Offload Media Lite」を検索・インストール・有効化
  3. 設定 → WP Offload Media
  4. Connection Method:
    • ❌ 最初は「My server is on Amazon Web Services...」が表示されない
    • ✅ EC2にIAMロールをアタッチした後、ページを再読み込みすると表示される
  5. Amazon S3を選択
  6. 「My server is on Amazon Web Services and I'd like to use IAM Roles」を選択
  7. バケット名を入力: ielove-nakahara

5. S3パブリックアクセス設定

403エラーが発生する場合

S3バケット → アクセス許可 → バケットポリシーに以下を追加:

json
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "PublicReadGetObject",
      "Effect": "Allow",
      "Principal": "*",
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::ielove-nakahara/*"
    }
  ]
}

6. 動作確認

  1. WordPress管理画面で新しい投稿を作成
  2. 画像をアップロード
  3. 画像URLがhttps://ielove-nakahara.s3.ap-northeast-1.amazonaws.com/...形式になることを確認

🎯 S3連携のメリット

項目EC2内保存S3保存
保存場所EC2インスタンス内S3バケット
可用性EC2停止時にアクセス不可EC2停止時もアクセス可能
拡張性ストレージ容量に制限無制限
信頼性EC2に依存99.999999999%の耐久性
CDN連携困難CloudFrontと簡単連携

リソース削除手順

⚠️ 削除順序が重要

間違った順序で削除すると「依存関係エラー」が発生します。

1. EC2インスタンス削除

  1. EC2コンソール → インスタンス選択
  2. インスタンスの状態 → 終了
  3. 「終了済み」ステータスを確認(一覧からは24時間後に自動削除)

2. RDSインスタンス削除

  1. RDSコンソール → データベース → インスタンス選択
  2. アクション → 削除
  3. スナップショット名の重複エラーが発生する場合:
    • スナップショット名を変更(例:chapter1-snapshot2
    • または「最終スナップショットを作成しない」を選択

3. S3バケット削除

  1. バケット内のオブジェクトを先に削除
  2. S3コンソール → バケット選択 → 「バケットを空にする」
  3. 空になった後、バケット自体を削除

4. IAMロール削除

  1. IAMコンソール → ロール → WP-Role選択
  2. 削除実行

5. VPC関連リソース削除

⚠️ 依存関係に注意

VPCを削除する前に、以下を順番に削除:

  1. ネットワークインターフェース(ENI)
    • EC2 → ネットワークインターフェース
    • RDS削除後も残っている場合があります
  2. サブネット
    • VPC → サブネット → 各サブネット削除
  3. ルートテーブル
    • VPC → ルートテーブル(メインルートテーブル以外)
  4. インターネットゲートウェイ
    • VPC → インターネットゲートウェイ → VPCからデタッチ → 削除
  5. セキュリティグループ
    • EC2 → セキュリティグループ(defaultセキュリティグループ以外)
  6. VPC本体
    • 最後にVPC自体を削除

💡 削除時のトラブルシューティング

  • 「使用中のため削除できません」: 依存関係をすべて確認
  • ネットワークインターフェースが削除できない: RDSが完全削除されるまで待機
  • VPC削除時の一括削除: 関連リソースがある場合、確認画面で一括削除可能

6. 課金確認

最終確認として、AWSコンソール → 請求ダッシュボードで不要な課金が発生していないことを確認してください。


まとめ

この構築プロセスにより、以下が実現されます:

  1. スケーラブルなWordPress環境: EC2でWebサーバー、RDSでデータベース
  2. 高可用性のメディア配信: S3による画像ストレージとCDN対応
  3. セキュアなネットワーク: VPCとセキュリティグループによる適切な分離
  4. 自動化された運用: IAMロールによる安全なサービス間連携

🎯 主要なつまずきポイントまとめ

  1. リージョン設定: 必ず東京リージョンを使用
  2. VPC作成: 「VPCのみ」を選択(権限エラー回避)
  3. AMI選択: Amazon Linux 2023を使用(手順書の2は古い)
  4. コマンド実行: dnfを使用(amazon-linux-extrasは廃止)
  5. IAMロール: rootユーザーで作成が必要な場合あり
  6. S3バケットポリシー: パブリック読み取り許可が必要
  7. 削除順序: 依存関係を考慮した正しい順序で実行

このガイドに従うことで、同様の問題を回避し、スムーズにWordPress環境を構築できるはずです。

Content is user-generated and unverified.
    AWS WordPress環境構築 完全ガイド(実体験ベース) | Claude