上个月帮一个做苗木生意的客户迁移服务器。客户在江苏宿迁市沭阳县颜集镇,当地做苗木电商的特别多,他搞了个网站专门卖各种树苗、花苗,品种有三四百个,每年春天是旺季,流量最大。
原来的服务器快到期了,续费价格涨了不少,客户想换一台新的。两台服务器都是阿里云的,一台在杭州节点,一台在上海节点,迁移这事儿听起来简单,但实际操作起来各种小问题不断。
第一次尝试:宝塔一键迁移
客户的新服务器上已经装好了宝塔面板,旧服务器也是宝塔,所以第一反应就是用宝塔自带的一键迁移功能。这个功能确实方便,在旧服务器的宝塔后台找到”一键迁移”插件,填上新服务器的IP和宝塔面板的API密钥,点一下就开始搬了。
刚开始还挺顺利的,网站文件传了大概十分钟就到了90%,然后卡住了。等了半小时还是90%,报错提示”连接超时”。重试了两次,每次都在同样的进度卡住。有点奇怪,两台服务器都在阿里云内网,带宽应该没问题的。
查了一下,发现新服务器的宝塔面板用的是香港节点镜像源,安装环境的时候从香港拉包特别慢,加上苗木网站的文件比较多,图片好几万张,打包传输过程中某个环节卡死了。
第二次尝试:手动打包传输
既然一键迁移不行,那就手动来。操作思路很简单:旧服务器上把网站文件和数据库分别打包,然后传到新服务器,再解压恢复。
具体操作是这样的:
先把网站根目录打包:
cd /www/wwwroot/ tar -czf website.tar.gz domain.com/
然后把数据库导出:
mysqldump -uroot -p database_name > database.sql
再用scp把这两个文件传到新服务器:
scp website.tar.gz root@新服务器IP:/root/ scp database.sql root@新服务器IP:/root/
文件传输倒是很快,内网速度拉满,几分钟就传完了。但接下来解压的时候又出了问题。
遇到的问题
在新服务器上解压网站文件的时候,提示”tar: Unexpected EOF in archive”,意思是压缩包不完整。明明传输过程没报错,但文件确实损坏了。
重新打包、重新传输,还是同样的问题。最后换了zip格式来打包,这次没问题了:
zip -r website.zip domain.com/
传过去之后用unzip解压,一切正常。
数据库恢复的时候也遇到了一个小插曲。客户的老服务器数据库版本是MySQL 5.6,新服务器装的是MySQL 5.7,导入的时候报了几个字符集兼容的警告,虽然不影响数据完整性,但还是专门确认了一遍所有表都正常导入了。
域名解析切换
文件和数据都搬过去之后,最后一步是改域名解析。客户用的DNS服务商是阿里云,登录控制台把A记录指向新服务器的IP。TTL设置的是600秒(10分钟),理论上十分钟后解析就生效了。
但客户说他在沭阳县颜集镇家里的电脑上访问,还是指向旧服务器。这是因为本地DNS缓存还没刷新,等个半小时就正常了。后来客户反馈,大概过了四十来分钟,所有地方都切到新服务器上了。
迁移完成后的检查
网站能访问了,但不是结束。还要检查几件事:
一是检查所有页面是否正常。苗木网站有产品分类、产品详情、购物车、下单流程,每个环节都走一遍,确保没漏掉东西。产品图片有一百多张没显示出来,检查发现是图片路径写的是绝对路径,迁移之后域名没变但服务器变了,路径还是旧的。批量替换了一下数据库里的图片路径,全部恢复正常。
二是检查SSL证书。新服务器上还没有证书,直接申请了Let’s Encrypt,开了自动续期。客户之前用的就是HTTPS,所以证书必须配上。
三是检查定时任务。旧服务器上有几个宝塔计划任务,每天凌晨备份数据库、每周清理缓存日志,这些配置不会跟随一键迁移带过来,需要手动在新服务器上重新设置一遍。
四是检查网站日志是否正常写入。新服务器的目录权限和旧服务器可能不一样,确认一下Nginx和PHP-FPM的日志能正常生成,不然出了问题连排查的依据都没有。
客户评价
客户在颜集镇的苗木基地里忙完了之后,登录新网站后台看了一下,速度比旧服务器快了不少——新服务器配置确实也更高一点。他在微信上说了句”数据都在,没问题,辛苦了啊”,这种评价比长篇大论好多了。
全程没见面,他在沭阳县,我们在远程,打了两三个电话,发了几条微信,两天时间搞定。中间遇到打包损坏、字符集警告这些小问题,但也都在预料之中,一个一个解决就是了。
迁移总结
服务器迁移这事儿,看着简单,但其实挺考验细节的。总结一下这次迁移的经验:
-
宝塔一键迁移方便,但不是万能的。环境不一致、网络不稳定、文件量太大的时候都可能失败,要有手动操作的备选方案。
-
打包要选对格式。tar.gz有时候会莫名损坏,zip更稳定一些,尤其是文件数量多的时候。
-
数据库版本要提前确认。5.6和5.7、5.7和8.0之间的兼容性问题不少,最好提前在新服务器上装好对应的版本。
-
迁移之后不是完事了。SSL证书、定时任务、图片路径、目录权限,这些都要逐一检查。
-
DNS解析切换的时候,TTL提前调低可以加快生效速度,但不能让所有人都立刻生效,要提前告诉客户可能有半小时左右的过渡期。
客户这个苗木网站迁移完到现在也快一个月了,新服务器一直稳定运行。前两天客户还发微信说春天旺季来了,订单比以前多了不少,网站也没出过问题。
关于这篇
宝塔面板的迁移功能确实好使,但遇到问题别硬磕,换个思路手动操作可能更快。服务器迁移本质就是打包、传输、解压、导入、验证这几步,不管用什么工具,逻辑是不变的。掌握了手动操作的方法,就不怕一键迁移失败了。
如果你也遇到类似的问题,可以按这个思路排查一遍。或者直接联系我们远程协助,这些问题我们每天都在处理,比你从头研究要快得多。
