WordPress 部署教程(Ubuntu + Nginx + Docker Compose,支持 HTTPS)
本教程介绍如何在 Ubuntu 22.04/24.04 上使用 Docker Compose 快速部署 WordPress,并通过 Nginx + HTTPS 提供安全访问。
🧰 第一步:准备工作
- 服务器:Ubuntu 22.04 / 24.04
- 域名:
zxc.abc.xyz(已解析到服务器 IP)
🔐 第二步:申请证书
1. 安装 Certbot 和 Cloudflare 插件
1 2 3
| sudo apt update sudo apt upgrade -y sudo apt install -y certbot python3-certbot-dns-cloudflare
|
2. 创建并配置 Cloudflare API 令牌文件
1 2
| sudo mkdir -p /etc/cloudflare sudo micro /etc/cloudflare/cloudflare.ini
|
在 Cloudflare 上创建一个 API 令牌(使用权限受限的 API Token,而非全局 API Key)。
权限 (Permissions):
- 区域 (Zone) → DNS → 编辑 (Edit)
区域资源 (Zone Resources):
- 选择 包括 (Include) → 特定区域 (Specific zone) → abc.xyz
写入如下内容:
1 2
| dns_cloudflare_api_token = "YOUR_CLOUDFLARE_API_TOKEN"
|
设置文件权限:
1
| sudo chmod 600 /etc/cloudflare/cloudflare.ini
|
3. 为域名申请证书
1
| sudo certbot certonly --dns-cloudflare --dns-cloudflare-credentials /etc/cloudflare/cloudflare.ini -d zxc.abc.xyz --agree-tos --email [email protected] -n
|
证书位置:
1 2
| Certificate is saved at: /etc/letsencrypt/live/zxc.abc.xyz/fullchain.pem Key is saved at: /etc/letsencrypt/live/zxc.abc.xyz/privkey.pem
|
🐳 第三步:安装配置 Docker 与 Docker Compose
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| sudo apt update sudo apt install -y ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
docker --version docker compose version
|
⚙️ 第四步:配置 WordPress
1 2 3
| cd ~ mkdir -p ~/wordpress && cd ~/wordpress touch docker-compose.yml
|
编辑 docker-compose.yml 内容如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| version: '3.8' services: db: image: mysql:8.0 container_name: wordpress_db restart: always environment: MYSQL_ROOT_PASSWORD: Yourpasswd MYSQL_DATABASE: wordpress MYSQL_USER: wpuser MYSQL_PASSWORD: Yourpasswd volumes: - db_data:/var/lib/mysql
wordpress: image: wordpress:latest container_name: wordpress_app restart: always depends_on: - db ports: - "8000:80" environment: WORDPRESS_DB_HOST: db:3306 WORDPRESS_DB_USER: wpuser WORDPRESS_DB_PASSWORD: Yourpasswd WORDPRESS_DB_NAME: wordpress volumes: - wp_data:/var/www/html
volumes: db_data: wp_data:
|
启动容器:
1 2
| docker compose up -d docker ps
|
此时访问 http://<服务器IP>:8000 即可看到 WordPress 安装界面。
🌐 第五步:配置主机 Nginx(非 Docker)
先确保使用系统自带的干净 Nginx 环境:
1 2 3 4 5 6 7 8 9
| sudo rm /etc/apt/sources.list.d/nginx.list 2>/dev/null sudo rm /etc/apt/sources.list.d/nginx*.list 2>/dev/null sudo apt update sudo systemctl stop nginx sudo apt remove --purge -y nginx nginx-common nginx-full nginx-core sudo rm -rf /etc/nginx sudo apt autoremove -y sudo apt install -y nginx nginx -v
|
备份默认配置:
1 2
| sudo cp /etc/nginx/sites-enabled/default /etc/nginx/sites-enabled/default.bak sudo micro /etc/nginx/sites-enabled/default
|
编辑内容如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| server { listen 80; server_name zxc.abc.xyz; return 301 https://$host$request_uri; }
server { listen 443 ssl; server_name zxc.abc.xyz;
ssl_certificate /etc/letsencrypt/live/zxc.abc.xyz/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/zxc.abc.xyz/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on;
location / { proxy_pass http://127.0.0.1:8000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto https; } }
|
验证并启动:
1 2 3
| sudo nginx -t sudo systemctl restart nginx sudo systemctl status nginx
|
✅ 最终访问
至此,WordPress + Docker + Nginx + HTTPS 部署完成! 🎉