香港服务器访问速度慢?5 个常见原因与解决方案
- 前置条件与环境说明
- 第一步:安装 Docker 和 Docker Compose
- 第二步:创建项目目录结构
- 第三步:编写 docker-compose.yml
- 第四步:配置 Nginx 反向代理
- 第五步:启动容器并验证
- 第六步:申请 SSL 证书(Let's Encrypt)
- 第七步:完成 WordPress 初始化设置
- 日常维护命令速查
- 常见问题解答(FAQ)
前置条件与环境说明
开始前请确认以下条件已满足:
| 条件 | 要求 | 说明 |
|---|---|---|
| 服务器系统 | Ubuntu 20.04 / 22.04(推荐) | 本文所有命令基于 Ubuntu,CentOS 安装命令略有不同 |
| 服务器配置 | 最低 1核2G,推荐 2核2G+ | WordPress + MySQL + Nginx 最低内存需求约 512MB |
| 域名 | 已解析到服务器 IP | 申请 SSL 证书必须先完成域名解析,TTL 生效需等待几分钟 |
| 端口 | 80 和 443 已在安全组放行 | 云平台控制面板中确认入方向规则 |
| root 权限 | 使用 root 或 sudo 用户操作 | 安装 Docker 需要管理员权限 |
1 安装 Docker 和 Docker Compose
# 更新系统包 apt update && apt upgrade -y # 安装依赖 apt install -y ca-certificates curl gnupg lsb-release # 添加 Docker 官方 GPG 密钥 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg # 添加 Docker 软件源 echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] \ https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" \ | tee /etc/apt/sources.list.d/docker.list > /dev/null # 安装 Docker Engine apt update && apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin # 验证安装成功 docker --version docker compose version
2 创建项目目录结构
# 创建项目根目录 mkdir -p /opt/wordpress && cd /opt/wordpress # 创建子目录 mkdir -p nginx/conf.d mkdir -p certbot/conf mkdir -p certbot/www mkdir -p mysql/data mkdir -p wordpress/data # 查看目录结构 tree /opt/wordpress
目录结构说明:
| 目录 | 用途 |
|---|---|
nginx/conf.d/ | Nginx 虚拟主机配置文件 |
certbot/conf/ | SSL 证书存储目录 |
certbot/www/ | Let's Encrypt 验证文件临时目录 |
mysql/data/ | MySQL 数据持久化目录 |
wordpress/data/ | WordPress 文件持久化目录(主题/插件/上传) |
3 编写 docker-compose.yml
# 创建并编辑 docker-compose.yml nano /opt/wordpress/docker-compose.yml
粘贴以下内容(将 your_db_password 替换为强密码):
version: '3.8'
services:
mysql:
image: mysql:8.0
container_name: wp_mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: your_root_password
MYSQL_DATABASE: wordpress
MYSQL_USER: wpuser
MYSQL_PASSWORD: your_db_password
volumes:
- ./mysql/data:/var/lib/mysql
networks:
- wp_network
wordpress:
image: wordpress:php8.1-fpm
container_name: wp_app
restart: always
depends_on:
- mysql
environment:
WORDPRESS_DB_HOST: mysql:3306
WORDPRESS_DB_NAME: wordpress
WORDPRESS_DB_USER: wpuser
WORDPRESS_DB_PASSWORD: your_db_password
WORDPRESS_TABLE_PREFIX: wp_
volumes:
- ./wordpress/data:/var/www/html
networks:
- wp_network
networks:
wp_network:
driver: bridgeyour_root_password 和 your_db_password 替换为至少 16 位包含大小写字母、数字和特殊字符的强密码,不要使用示例中的默认值。4 配置 Nginx 反向代理
首先安装宿主机上的 Nginx:
apt install -y nginx systemctl enable --now nginx
创建 WordPress 站点配置文件(将 yourdomain.com 替换为你的真实域名):
nano /etc/nginx/sites-available/wordpress
粘贴以下配置:
server {
listen 80;
server_name yourdomain.com www.yourdomain.com;
# Let's Encrypt 验证路径
location /.well-known/acme-challenge/ {
root /opt/wordpress/certbot/www;
}
# 其他请求暂时直接代理(SSL 配置完成后改为 301 跳转)
location / {
root /opt/wordpress/wordpress/data;
index index.php;
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
}
# 启用站点配置 ln -s /etc/nginx/sites-available/wordpress /etc/nginx/sites-enabled/ # 测试配置语法 nginx -t # 重载 Nginx systemctl reload nginx
5 启动容器并验证
# 进入项目目录 cd /opt/wordpress # 后台启动所有容器 docker compose up -d # 查看容器运行状态 docker compose ps # 查看启动日志(如有报错) docker compose logs
正常输出应类似:
NAME STATUS PORTS wp_mysql Up 30 seconds 3306/tcp wp_app Up 28 seconds 9000/tcp
# 验证 MySQL 连接正常 docker exec -it wp_mysql mysql -u wpuser -p wordpress # 输入密码后看到 mysql> 提示符即表示正常,输入 exit 退出 # 验证 WordPress 文件已生成 ls /opt/wordpress/wordpress/data/ # 应看到 wp-admin、wp-content、wp-config.php 等文件
6 申请 SSL 证书(Let's Encrypt)
# 安装 Certbot apt install -y certbot python3-certbot-nginx # 申请证书(替换为你的真实域名和邮箱) certbot --nginx -d yourdomain.com -d www.yourdomain.com \ --email admin@yourdomain.com \ --agree-tos --non-interactive
申请成功后,更新 Nginx 配置为完整的 HTTPS 版本:
nano /etc/nginx/sites-available/wordpress
替换为以下完整配置:
server {
listen 80;
server_name yourdomain.com www.yourdomain.com;
# HTTP 强制跳转 HTTPS
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
server_name yourdomain.com www.yourdomain.com;
ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
root /opt/wordpress/wordpress/data;
index index.php index.html;
client_max_body_size 64M;
# Gzip 压缩
gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml;
# 静态文件缓存
location ~* \.(jpg|jpeg|png|gif|ico|webp|css|js|woff2)$ {
expires 30d;
add_header Cache-Control "public, no-transform";
}
# WordPress 固定链接支持
location / {
try_files $uri $uri/ /index.php?$args;
}
# PHP 请求转发到 WordPress 容器
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param HTTPS on;
fastcgi_read_timeout 300;
}
# 禁止访问隐藏文件
location ~ /\. {
deny all;
}
}
# 让 WordPress 容器监听宿主机 9000 端口 # 修改 docker-compose.yml,在 wordpress 服务下添加 ports 映射 nano /opt/wordpress/docker-compose.yml
在 wordpress 服务中添加端口映射:
wordpress:
...
ports:
- "127.0.0.1:9000:9000" # 只监听本地,不对外暴露
...# 重启容器使端口配置生效 cd /opt/wordpress docker compose down && docker compose up -d # 测试 Nginx 配置并重载 nginx -t && systemctl reload nginx # 设置证书自动续期(Certbot 已自动添加 cron,手动验证一次) certbot renew --dry-run
7 完成 WordPress 初始化设置
在浏览器访问 https://yourdomain.com,你会看到 WordPress 安装向导。按照以下步骤操作:
- 选择语言(选择「简体中文」)
- 填写站点标题、管理员用户名、密码和邮箱
- 点击「安装 WordPress」
- 安装完成后登录后台:
https://yourdomain.com/wp-admin
安装后建议立即完成以下配置:
| 配置项 | 操作路径 | 推荐设置 |
|---|---|---|
| 固定链接格式 | 设置 → 固定链接 | 选择「文章名」(对 SEO 友好) |
| 时区 | 设置 → 常规 | 设置为 UTC+8(上海) |
| 关闭文件编辑 | wp-config.php | 添加 define('DISALLOW_FILE_EDIT', true); |
| 安装缓存插件 | 插件 → 安装插件 | 推荐 W3 Total Cache 或 WP Super Cache |
| 安全插件 | 插件 → 安装插件 | 推荐 Wordfence Security |
日常维护命令速查
| 操作 | 命令 |
|---|---|
| 查看容器状态 | docker compose ps |
| 查看容器日志 | docker compose logs -f wordpress |
| 重启所有容器 | docker compose restart |
| 停止所有容器 | docker compose down |
| 更新 WordPress 镜像 | docker compose pull && docker compose up -d |
| 备份数据库 | docker exec wp_mysql mysqldump -u wpuser -p wordpress > backup.sql |
| 还原数据库 | docker exec -i wp_mysql mysql -u wpuser -p wordpress < backup.sql |
| 进入 WordPress 容器 | docker exec -it wp_app bash |
| 进入 MySQL 容器 | docker exec -it wp_mysql mysql -u wpuser -p |
| 查看磁盘占用 | docker system df |
| 清理无用镜像 | docker system prune -f |
常见问题解答(FAQ)
Q1:香港服务器拉取 Docker 镜像太慢,怎么配置加速?
香港服务器可以直接访问 Docker Hub,速度通常正常。如遇到慢的情况,可配置国内镜像源:编辑或创建 /etc/docker/daemon.json,添加 {"registry-mirrors": ["https://mirror.ccs.tencentyun.com"]},然后执行 systemctl restart docker。
Q2:容器启动后访问域名提示 502 Bad Gateway,怎么排查?
502 表示 Nginx 无法连接到 WordPress 容器的 PHP-FPM。排查步骤:首先确认 WordPress 容器正在运行(docker compose ps);检查端口映射是否正确(docker compose port wordpress 9000);查看 Nginx 错误日志(tail -f /var/log/nginx/error.log);确认 Nginx 配置中的 fastcgi_pass 地址与容器端口一致。
Q3:WordPress 上传文件提示超过大小限制,怎么修改?
需要同时修改两处:Nginx 配置中的 client_max_body_size(已设为 64M),以及 PHP 配置中的 upload_max_filesize 和 post_max_size。在 WordPress 容器内执行:docker exec -it wp_app bash,编辑 /usr/local/etc/php/php.ini,修改后重启容器。
Q4:如何迁移这套 Docker WordPress 到新服务器?
迁移步骤:在旧服务器备份数据库(mysqldump)和 WordPress 文件目录(tar -czf wp_backup.tar.gz /opt/wordpress/wordpress/data);将备份文件传到新服务器(scp);在新服务器按本教程重新部署,启动容器后还原数据库和文件;更新域名解析到新 IP,重新申请 SSL 证书。整个过程停机时间通常在 15 分钟以内。
Q5:后浪云哪款服务器适合运行这套 WordPress Docker 环境?
个人博客或小型网站选择香港云服务器 2核2G(约 80 元/月)完全够用;中型电商或流量较高的内容站建议 4核4G;如需多个 WordPress 站点并行运行,建议 4核8G 或以上配置。所有套餐均接入 CN2 GIA 优质线路,3 天无理由退款。
