
文章目录
WordPress 换服务器迁移要做到不停机,核心是在新服务器先完整跑通再切 DNS。判断做对的标准是:切换前用 hosts 预演全站正常,切换后表单、支付、定时任务均无异常,且旧服务器保留可秒级回退。
准备:打包文件与数据库
迁移起点是把旧站的文件与数据库完整打包。2026 年主流环境多运行在 PHP 8.2 及以上,打包时不要遗漏 wp-content 之外的隐藏文件。
打包网站文件
进入 WordPress 根目录,排除缓存目录以减小体积。常见路径为 /var/www/html 或 /home/user/public_html。
tar -czpf /backup/wp-files-$(date +%F).tar.gz
--exclude='wp-content/cache/*'
--exclude='wp-content/uploads/cache/*'
-C /var/www/html .若使用 WP-CLI,可先确认核心版本与路径:
wp core version --path='/var/www/html'
wp option get home --path='/var/www/html'导出数据库
用 mysqldump 导出并压缩,避免大表锁表过久:
mysqldump -u root -p --single-transaction --quick
--routines --triggers wordpress_db
| gzip > /backup/wp-db-$(date +%F).sql.gz踩坑:若站点使用 utf8mb4 且含 emoji,确认导出未指定旧字符集;若用 WP-CLI,可用 wp db export 替代,但大库建议仍走 mysqldump。
把文件与数据库传到新服务器后,先本地解压校验。相关命令习惯可参考 WP-CLI 常用命令:把重复的运维动作变成一行命令。
获取报价
邮箱 + 需求 + 预算区间,24 小时内回复报价。
实施步骤:新环境先跑通再切解析
- 在新服务器还原文件到目标目录,并修正属主:chown -R www-data:www-data。
- 创建空库并导入 SQL:gunzip 后 mysql 导入,或用 wp db import。
- 修改 wp-config.php 中的 DB_NAME、DB_USER、DB_PASSWORD、DB_HOST 指向新库。
- 用 WP-CLI 做域名替换(暂用旧域名),确认站点可渲染:wp search-replace ‘//old.com’ ‘//new-tmp.com’ –dry-run 后执行。
- 配置 Nginx/Apache 虚拟主机,先不绑正式域名,用临时域名或 IP 访问验证。
- 确认新环境 PHP 扩展、Redis、SSL 与旧站一致,再进入 hosts 预演。
2026 年 PHP 8.2 已是基线,若旧站仍在 8.0,需先完成兼容性处理,详见 升级到 PHP 8.2:兼容性排查与常见报错。
Web 服务器配置片段
Nginx 片段示例:
server {
listen 80;
server_name new-tmp.example.com;
root /var/www/wordpress;
index index.php;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ .php$ {
include fastcgi_params;
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}验证:curl -I 新地址应返回 200,且 wp-login.php 可打开。
hosts 预演
在切换 DNS 前,用本地 hosts 把正式域名指向新服务器 IP,做全链路预演。
修改 hosts
macOS/Linux 路径 /etc/hosts,Windows 为 C:WindowsSystem32driversetchosts:
203.0.113.10 www.example.com
203.0.113.10 example.com保存后执行 dscacheutil -flushcache(macOS)或 systemd-resolve --flush-caches(Linux)。
预演检查项
- 前台首页、文章页、分类页是否正常渲染。
- 登录后台,检查媒体库缩略图是否生成。
- 提交一次联系表单或测试订单,确认写库到新实例。
- 查看
wp-content/debug.log是否有 PHP Notice/Fatal。
踩坑:若站点接了 CDN,预演时先暂停 CDN 或设置源站为旧 IP 的旁路,否则请求不会到新机。缓存规则可参考 WordPress 接 CDN:缓存规则、回源与清缓存策略。
切换后的检查与回退
确认预演无误后,把 DNS 的 A 记录 TTL 提前降到 300 秒,再修改解析指向新服务器。
切换后验证
- 用
dig example.com +short确认全球递归已更新。 - 执行
wp cron event list,确认定时任务未因迁移卡住。 - 检查 HTTPS:证书生效且无混合内容,方法见 WordPress HTTPS 配置:证书、混合内容与强制跳转。
- 查看 Nginx access log 是否有 499 或 502 突增。
若此时发现问题,立即回退。
回退方法
把 DNS A 记录改回旧服务器 IP,因 TTL 已设 300 秒,多数用户在 5 分钟内恢复。旧服务器在切换后至少保留 72 小时不销毁。若数据库有双向写入风险,回退后用旧库覆盖新库即可。
对于需要专业保障的团队,可直接交付给 WordPress 网站迁移 服务,避免业务中断。
常见问题

迁移后图片全部 404 怎么办?
多为 uploads 未完整拷贝或属主错误。用 rsync 补传并 chown 到 Web 用户,再刷新固定链接。
hosts 预演正常但切 DNS 后白屏?
检查新机 PHP-FPM 是否监听正确 socket,以及 opcache 是否缓存了旧路径,重启 fpm 与 opcache 后重试。
定时任务在迁移后不执行?
确认新服务器系统 cron 或外部触发正常,参考 WordPress 定时任务不执行?WP-Cron 的真实问题与替代方案。
动作清单
- 用 tar + mysqldump 完整备份文件与数据库。
- 在新服务器还原并先用临时域名跑通。
- 通过 hosts 预演全站功能与写库。
- 降 TTL 后切 DNS,完成后验证 cron 与 HTTPS。
- 旧服务器保留 72 小时,异常时改回 A 记录回退。
需要零中断迁移?查看 WordPress 网站迁移 服务,我们提供全流程护航。
