搬过一次家,从一台小厂服务器换到大厂,中间踩了不少坑。
网上教程大多只写到"导出数据库、打包文件、改 wp-config",实际做下来,光靠这些是搬不干净的。
把完整流程和几个坑记下来。
第一步:先把新服务器环境搭好
别急着传文件。新机器上先装好 PHP、MySQL、Nginx,版本尽量和旧机器一致。
PHP 版本不一致最容易出事。旧站跑 7.4,新装 8.1,很多老插件直接报错白屏。装之前先在旧机器的宝塔面板里看清楚版本号。
还有就是扩展。WordPress 常用的是 fileinfo、opcache、exif、gd 或者 imagick。缺一个,图片上传就可能失败。
第二步:打包,但别用面板的"一键备份"
宝塔的网站备份功能会把整个目录压成 zip,但默认会跳过一些隐藏文件,而且附件目录大的时候经常超时中断。
直接在命令行打包更稳:
cd /www/wwwroot
tar -czf site.tar.gz 你的站点目录 --exclude=*.log
压完看一眼大小,和原来目录的 du -sh 对比一下。差太多说明有文件没打进去。
我上次就是差了 2 个 G,原因是 tar 跑到一半遇到一个权限不对的目录,报了个警告继续跑,后面的全跳过了。所以打包完一定要核对。
第三步:导数据库,注意字符集
mysqldump -uroot -p --default-character-set=utf8mb4 --single-transaction 数据库名 > db.sql
加 --single-transaction 是为了导出时不锁表,站点还能正常访问。
导入前先在新库上建好同名数据库,字符集选 utf8mb4。
老版本 MySQL 导到新版本,可能报这个错:
ERROR 1273 (HY000): Unknown collation: 'utf8mb4_0900_ai_ci'
这是 MySQL 8 的新排序规则,5.7 不认。把 SQL 文件里的 utf8mb4_0900_ai_ci 全部替换成 utf8mb4_general_ci 就行。
第四步:改站点地址,千万别直接 SQL 替换
这一步坑最多。
WordPress 把很多配置存成序列化字符串,格式是 s:23:"http://old.com/xxx",前面的数字是字符串长度。你用 SQL 把 old.com 换成 new.com,长度变了,但数字没变,整个值就废了。
表现是:小工具全空、主题设置丢失、菜单消失。
正确做法是用 WP-CLI:
wp search-replace 'http://old.com' 'https://new.com' --all-tables --precise --skip-columns=guid
--precise 会重新计算序列化长度,--skip-columns=guid 跳过 guid 字段,因为 guid 改了会导致 RSS 订阅重复推送。
没有 WP-CLI 的话,装个插件 Better Search Replace,效果一样,就是慢一点。
另外记得改 wp-config.php 里的数据库信息,还有如果换了域名,要去数据库里改 wp_options 表的 siteurl 和 home 两个值——这两个值是特例,不是序列化的,直接改没问题。
第五步:伪静态和 SSL
新服务器上的 Nginx 是空的,伪静态规则不会跟着文件走。
WordPress 的规则就一句:
location / {
try_files $uri $uri/ /index.php?$args;
}
不加这句,首页能开,所有内页 404。
SSL 证书也不能直接拷。旧证书绑定的是旧服务器环境,拷过去要么报错要么不生效。在新机器上重新申请一次,十分钟的事。
第六步:DNS 切换,别急
上面都弄好了,先别急着改 DNS。
在本地 hosts 文件里把域名指向新 IP,自己先访问一遍:
# Windows: C:\Windows\System32\drivers\etc\hosts
124.223.x.x www.example.com
首页、内页、图片、后台、登录、上传,都点一遍。没问题再改 DNS。
改完 DNS 之后,旧服务器至少保留一周。我见过改完 DNS 第二天发现附件目录漏传的,旧机器已经释放了,只能从备份里找。
最后
整个流程走下来,顺利的话两小时,不顺利一天也正常。
最容易出问题的三步是:字符集、序列化替换、伪静态。这三个地方我都栽过。
搬家的核心不是"把文件弄过去",是"弄过去之后能跑"。所以验证环节比操作环节重要。
1、本站所有资源均收集于互联网,分享目的仅限学习与参考。如有侵权,请联系 1685698671@qq.com 及时删除!
2、本站资源不保证完整性和安全性,下载后请自行检测。使用过程中出现的任何问题均与本站无关,敬请自行处理。
3、本站资源仅限个人学习研究使用,严禁用于任何违法违纪用途。因使用者违规使用产生的一切后果,由使用者自行承担,本站不承担任何责任。


评论(0)