ブログ作成メモ 記事はchatGPTで作成しているので一部間違ってるかも、方向性は間違っていない。

IT

【技術ブログ】AWS EC2でDocker+Nginx+WordPressのWebサーバ構築記録

はじめに

個人サイト「k-stone.click」を立ち上げるため、AWS EC2(Ubuntu)上にDocker環境を構築し、WordPressをNginxリバースプロキシ経由で動かす仕組みを作りました。
この記事では、その構築手順とポイントを整理して紹介します。


システム全体図

AWS EC2 Docker構成図

上図のように、EC2上で3つのDockerコンテナ(Nginx・WordPress・MySQL)が稼働しています。
Nginxがリバースプロキシとしてリクエストを受け、WordPressに転送。WordPressはMySQLに接続します。全体は docker-compose.yml で一括管理しています。


ディレクトリ構成

/home/ubuntu/mysite/
│
├── docker-compose.yml
├── nginx/
│   └── conf.d/
│       └── default.conf
│
├── wp_data/         ← WordPressデータ(テーマやプラグイン)
│   └── wp-content/
│
└── db_data/         ← MySQLデータ

構築ステップ

① EC2インスタンスの準備

  • AWSのEC2でUbuntu 22.04を選択
  • セキュリティグループでポート 22, 80, 443 を開放
  • .pemキーでSSH接続
chmod 400 mykey.pem
ssh -i mykey.pem ubuntu@

② Docker & Docker Composeのインストール

sudo apt update
sudo apt install docker.io docker-compose -y
sudo systemctl enable docker
sudo usermod -aG docker ubuntu

③ docker-compose.yml

version: '3.8'
services:
  db:
    image: mysql:5.7
    environment:
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wpuser
      MYSQL_PASSWORD: wppass
      MYSQL_ROOT_PASSWORD: rootpass
    volumes:
      - ./db_data:/var/lib/mysql

  wordpress:
    image: wordpress:latest
    depends_on:
      - db
    ports:
      - "8000:80"
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_USER: wpuser
      WORDPRESS_DB_PASSWORD: wppass
      WORDPRESS_DB_NAME: wordpress
    volumes:
      - ./wp_data:/var/www/html

  nginx:
    image: nginx:latest
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./nginx/conf.d:/etc/nginx/conf.d
      - ./wp_data:/var/www/html
    depends_on:
      - wordpress

④ Nginx設定ファイル

server {
    listen 80;
    server_name k-stone.click;

    location / {
        proxy_pass http://wordpress:80;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

⑤ ドメイン設定とDNS

  • お名前.comでドメイン取得
  • AレコードをElastic IPへ設定
  • nslookup k-stone.clickで反映確認

⑥ SSL対応

Let’s Encrypt使用。


構成まとめ

要素 コンテナ 役割 ホスト側ディレクトリ コンテナ内パス
Webサーバ nginx リバースプロキシ/SSL終端 ./nginx/conf.d/ /etc/nginx/conf.d/
アプリ wordpress PHP実行・CMS本体 ./wp_data/ /var/www/html/
DB mysql データ保存 ./db_data/ /var/lib/mysql/
設定 ホスト コンテナ構成 ./docker-compose.yml (N/A)

まとめ

AWS上でDockerを使ったWordPress構築は、環境の再現性と拡張性が高く、個人開発にも最適でした。
Nginxリバースプロキシ構成により、マルチサイト化やSSL対応も容易です。
今後は認証機能とAIアプリ連携を進めることを検討しています。