ブログ作成メモ 記事はchatGPTで作成しているので一部間違ってるかも、方向性は間違っていない。
【技術ブログ】AWS EC2でDocker+Nginx+WordPressのWebサーバ構築記録
はじめに
個人サイト「k-stone.click」を立ち上げるため、AWS EC2(Ubuntu)上にDocker環境を構築し、WordPressをNginxリバースプロキシ経由で動かす仕組みを作りました。
この記事では、その構築手順とポイントを整理して紹介します。
システム全体図
上図のように、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アプリ連携を進めることを検討しています。