在香港VPS上用Docker一键部署WordPress:Nginx + SSL全配置教程

Docker让WordPress的部署变得标准化、可复制,彻底告别"在这台服务器能跑,换一台就出问题"的困境。本文基于香港VPS,带你完成Docker + Nginx + SSL的完整WordPress部署。

一、环境准备

服务器要求

  • 操作系统:Ubuntu 22.04 LTS(推荐)
  • 配置:最低1核2G,建议2核2G以上
  • 已完成域名解析,域名A记录指向服务器IP

安装Docker与Docker Compose

# 更新包管理器
apt update && apt upgrade -y

# 安装Docker
curl -fsSL https://get.docker.com | sh

# 安装Docker Compose插件
apt install docker-compose-plugin -y

# 验证安装
docker --version
docker compose version

二、创建项目目录结构

mkdir -p /srv/wordpress/{nginx,certbot/conf,certbot/www}
cd /srv/wordpress

三、编写 docker-compose.yml

version: '3.8'

services:
  db:
    image: mysql:8.0
    restart: always
    environment:
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wpuser
      MYSQL_PASSWORD: 你的数据库密码
      MYSQL_ROOT_PASSWORD: 你的Root密码
    volumes:
      - db_data:/var/lib/mysql

  wordpress:
    image: wordpress:php8.1-fpm
    restart: always
    depends_on:
      - db
    environment:
      WORDPRESS_DB_HOST: db
      WORDPRESS_DB_USER: wpuser
      WORDPRESS_DB_PASSWORD: 你的数据库密码
      WORDPRESS_DB_NAME: wordpress
    volumes:
      - wp_data:/var/www/html

  nginx:
    image: nginx:alpine
    restart: always
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - wp_data:/var/www/html
      - ./nginx:/etc/nginx/conf.d
      - ./certbot/conf:/etc/letsencrypt
      - ./certbot/www:/var/www/certbot
    depends_on:
      - wordpress

  certbot:
    image: certbot/certbot
    volumes:
      - ./certbot/conf:/etc/letsencrypt
      - ./certbot/www:/var/www/certbot

volumes:
  db_data:
  wp_data:

四、配置Nginx

创建文件 /srv/wordpress/nginx/wordpress.conf

server {
    listen 80;
    server_name 你的域名 www.你的域名;

    location /.well-known/acme-challenge/ {
        root /var/www/certbot;
    }

    location / {
        return 301 https://$host$request_uri;
    }
}

server {
    listen 443 ssl;
    server_name 你的域名 www.你的域名;

    ssl_certificate /etc/letsencrypt/live/你的域名/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/你的域名/privkey.pem;

    root /var/www/html;
    index index.php;

    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    location ~ \.php$ {
        fastcgi_pass wordpress:9000;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }

    location ~* \.(jpg|jpeg|png|gif|ico|css|js|webp)$ {
        expires 30d;
        add_header Cache-Control "public, no-transform";
    }

    client_max_body_size 64M;
}

五、申请SSL证书

# 先启动Nginx(仅HTTP模式)
docker compose up -d nginx

# 申请Let's Encrypt证书
docker compose run --rm certbot certonly \
  --webroot \
  --webroot-path=/var/www/certbot \
  -d 你的域名 \
  -d www.你的域名 \
  --email 你的邮箱 \
  --agree-tos \
  --no-eff-email

六、启动全部服务

docker compose up -d

# 查看运行状态
docker compose ps

# 查看日志
docker compose logs -f

访问 https://你的域名,即可看到WordPress安装向导。

七、自动续签SSL证书

Let's Encrypt证书有效期90天,添加定时任务自动续签:

# 编辑crontab
crontab -e

# 添加以下行(每天凌晨3点检查并续签)
0 3 * * * cd /srv/wordpress && docker compose run --rm certbot renew && docker compose exec nginx nginx -s reload

八、数据备份策略

# 备份数据库
docker compose exec db mysqldump -u root -p你的Root密码 wordpress > backup_$(date +%Y%m%d).sql

# 备份WordPress文件
docker run --rm -v wordpress_wp_data:/data -v $(pwd):/backup \
  alpine tar czf /backup/wp_files_$(date +%Y%m%d).tar.gz /data

九、总结

Docker部署WordPress的最大优势是:环境一致、迁移方便、版本可控。整个部署过程约30分钟,后续维护成本极低。IDC.Net的香港VPS默认安装Ubuntu 22.04,完美支持Docker,开箱即用。

THE END