
服务器迁移教程 | VPS数据搬家 | 网站换服务器步骤【新手避坑指南】
之前从旧服务器迁到新VPS,本以为轻车熟路,结果整整折腾了2个小时,网站还是崩了。
出现的问题:
- 网站打开报SSL错误
- 图片全部404
- 数据库连接失败
- Google收录直接掉了
楼主搞服务器也有段时间了,这次迁移真的是阴沟里翻船。趁记忆还新鲜,赶紧把坑记录下来,给准备迁移的兄弟们避避雷。
先说结论:服务器迁移不难,难的是细节太容易被忽略!
翻车现场回顾:楼主是怎么把网站搞崩的
事情起因
原来的VPS是2核2G,跑WordPress越来越吃力,页面加载要4-5秒,想着趁双十二活动买了台余初云的4核8G。
想法很简单:
- 宝塔打包网站文件
- 导出数据库
- 新服务器部署
- 修改DNS解析
看起来没毛病对吧?结果每一步都有坑…
第一个坑:边迁移边删除,数据直接没了
当时操作流程是这样的:
- 在新服务器宝塔上传了网站压缩包
- 解压完发现少了一些插件文件
- 回旧服务器想重新打包
- 手贱把旧服务器上的备份也删了
- 新服务器那个压缩包又损坏了…
结果就是:数据库还没导出,网站文件还不完整,旧服务器已经被我清空了。
那一刻真的是欲哭无泪,幸好旧服务器还没释放,立马重新连SSH把数据全拉出来。
第二个坑:DNS切了半天,访问的还是旧站
好不容易把网站文件和数据库都弄到新服务器了,兴冲冲地改了DNS解析。
等了10分钟,打开域名一看:
- 首页还是老样子
- 后台登录显示的是旧版本
- 新发的测试文章根本看不到
我以为是nginx配置问题,检查了半天才发现:
# 用这个命令查DNS解析
nslookup 域名
# 发现电信还在解析到旧IP
# 联通已经解析到新IP了
原来是DNS缓存! 国内不同运营商DNS刷新时间不一样,导致有些人看到新站,有些人还在访问旧服务器。
第三个坑:SSL没配好,被浏览器标记不安全
DNS终于生效了,结果新问题又来了:
浏览器地址栏出现大大的**”不安全”**提示,点进去一看:
此网站的安全证书已过期
您的连接不是私密连接
NET::ERR_CERT_AUTHORITY_INVALID
我才反应过来:旧服务器的SSL证书没有迁移过来!
之前用Let’s Encrypt申请的证书还在旧服务器上,新服务器压根没配置HTTPS。
更要命的是,Google爬虫一访问就报SSL错误,直接导致收录停止了。
新手最容易忽略的3个迁移操作
根据这次翻车经历,楼主总结了3个最关键但最容易被忽略的操作:
操作1:多重备份,别只相信一种方式
错误做法:
- 只在宝塔打一个包
- 觉得rsync同步了就删原文件
- 没有本地备份
正确做法:
1. 数据库备份(至少2份)
# SSH命令行备份
mysqldump -u root -p数据库密码 数据库名 > backup-$(date +%Y%m%d).sql
# 宝塔面板备份
数据库 → 备份 → 下载到本地
2. 网站文件备份
# 打包整个网站目录
cd /www/wwwroot
tar -czf website-backup-$(date +%Y%m%d).tar.gz 你的网站目录/
# 下载到本地
scp root@旧服务器IP:/path/to/backup.tar.gz ~/Desktop/
3. 配置文件备份
别忘了这些:
- Nginx/Apache配置文件
- PHP配置(php.ini)
- 环境变量文件(.env)
- SSL证书文件
楼主建议:
| 备份位置 | 作用 | 优先级 |
|---|---|---|
| 旧服务器 | 主备份 | ★★★★★ |
| 本地电脑 | 安全备份 | ★★★★☆ |
| 新服务器 | 临时备份 | ★★★☆☆ |
| 网盘 | 长期存档 | ★★★☆☆ |
宝塔用户额外提醒:
- 面板数据也要备份(网站列表、计划任务)
- 不要直接在面板删除旧站,先确认新站完全正常
操作2:DNS切换前先本地测试,别盲目改解析
很多人的操作顺序(错误):
- 新服务器部署好
- 立即修改DNS解析
- 发现有问题再改回来
问题在哪?
- DNS全球生效有延迟(5分钟到48小时不等)
- 改回旧IP又要等一轮延迟
- 期间网站处于不稳定状态
正确的测试流程:
方法1:修改本地hosts文件
Windows系统:
C:\Windows\System32\drivers\etc\hosts
# 添加这一行
新服务器IP 你的域名.com
Mac/Linux系统:
sudo vim /etc/hosts
# 添加
新服务器IP 你的域名.com
然后访问域名,此时你访问的就是新服务器。
方法2:用临时域名测试
余初云这类平台一般会给临时访问地址,比如:
123.45.67.89
或者
temp-xxxx.余初云.com
先用临时地址访问,确认网站完全正常再切DNS。
方法3:DNS智能解析
如果用的是Cloudflare或者阿里云DNS,可以:
- 先只解析部分地区到新IP
- 测试没问题再全量切换
- 出问题可以快速回滚
切换DNS后的检查清单:
# 检查DNS是否生效
nslookup 你的域名.com
dig 你的域名.com
# 检查全球解析情况
https://www.whatsmydns.net
# 检查SSL是否正常
curl -I https://你的域名.com
操作3:SSL证书同步,不要等上线才发现没配
这个坑楼主是真的踩惨了,SSL没配导致:
- 浏览器显示不安全
- Google停止抓取
- 用户不敢访问
- 影响SEO排名
SSL迁移的3种情况:
情况1:使用Let’s Encrypt(最常见)
旧服务器的证书不能直接复制,因为:
- 证书绑定了IP和服务器
- 新服务器需要重新验证域名
正确操作:
# 新服务器重新申请
certbot certonly --webroot -w /www/wwwroot/你的网站 -d 你的域名.com
# 或者用宝塔一键申请
网站设置 → SSL → Let's Encrypt → 申请
情况2:使用付费证书(阿里云/腾讯云)
这种可以复用:
- 从旧服务器下载证书文件
# 通常在这些位置
/etc/letsencrypt/live/你的域名/
/www/server/panel/vhost/cert/你的域名/
- 上传到新服务器对应位置
- 修改Nginx配置
server {
listen 443 ssl;
server_name 你的域名.com;
ssl_certificate /路径/证书文件.pem;
ssl_certificate_key /路径/密钥文件.key;
# 其他配置...
}
- 重载Nginx
nginx -t # 先测试配置
nginx -s reload
情况3:使用Cloudflare免费SSL
如果套了CF的CDN,记得:
- CF后台SSL模式改成”完全(严格)”
- 源站也要配置SSL证书
- 不能只依赖CF的证书
SSL检查命令:
# 检查证书有效期
openssl s_client -connect 你的域名.com:443 | grep "Verify return code"
# 检查证书链
curl -vI https://你的域名.com 2>&1 | grep -A 5 "Server certificate"
完整的VPS迁移流程(防踩坑版)
根据这次教训,楼主整理了一套完整流程:
迁移前准备(1天前)
✅ 第1步:确认新服务器配置
- 系统版本(建议和旧服务器一致)
- PHP版本
- MySQL版本
- 磁盘空间(至少比旧站大1.5倍)
✅ 第2步:完整备份
# 数据库
mysqldump --all-databases > all-db.sql
# 网站文件
tar -czf web-files.tar.gz /www/wwwroot/
# 配置文件
tar -czf configs.tar.gz /etc/nginx /etc/php
✅ 第3步:记录现有配置
- PHP扩展列表
- Nginx配置文件
- 防火墙规则
- 定时任务(crontab -l)
迁移中操作(预留2-3小时)
✅ 第4步:新服务器环境部署
# 安装宝塔(或者LNMP)
wget -O install.sh http://download.bt.cn/install/install-ubuntu_6.0.sh
bash install.sh
# 安装对应的PHP和MySQL版本
# 调整PHP配置(上传大小、执行时间等)
✅ 第5步:上传并恢复数据
# 上传文件(使用rsync)
rsync -avz --progress /本地/web-files.tar.gz root@新服务器IP:/root/
# 解压
tar -xzf web-files.tar.gz -C /www/wwwroot/
# 导入数据库
mysql -u root -p < all-db.sql
✅ 第6步:修改配置文件
需要改的地方:
- 数据库连接信息(如果密码变了)
- 网站根目录路径
- 域名绑定
- 伪静态规则
✅ 第7步:本地hosts测试
# 修改hosts
sudo vim /etc/hosts
新IP 你的域名.com
# 访问测试
- 首页能打开
- 图片能加载
- 后台能登录
- 功能正常使用
迁移后验证(关键!)
✅ 第8步:配置SSL证书
# 宝塔申请Let's Encrypt
网站设置 → SSL → 申请
# 或者用certbot
certbot --nginx -d 你的域名.com
✅ 第9步:修改DNS解析
A记录:@ → 新服务器IP
A记录:www → 新服务器IP
TTL设置:600(10分钟,方便回滚)
✅ 第10步:全面检查
| 检查项 | 检查方法 | 正常标准 |
|---|---|---|
| DNS解析 | nslookup | 指向新IP |
| SSL证书 | 浏览器访问 | 显示小锁 |
| 网站访问 | 多个页面测试 | 全部正常 |
| 图片加载 | F12查看 | 无404 |
| 数据库 | 后台操作 | 读写正常 |
| SEO收录 | site:域名 | 无异常 |
✅ 第11步:清理CDN缓存
如果用了CDN(Cloudflare/阿里云):
Cloudflare:缓存 → 清除所有内容
阿里云CDN:刷新缓存 → URL刷新
✅ 第12步:监控24小时
- 用UptimeRobot监控可用性
- 观察日志有无异常
- 确认搜索引擎能正常抓取
迁移完成(3天后)
✅ 第13步:确认无误再释放旧服务器
千万别急着删除旧服务器!至少保留3-7天观察期。
确认这些都没问题再删:
- 网站运行稳定
- 收录没有掉
- 没有用户反馈问题
- 日志没有异常
不同场景的迁移方案
场景1:纯静态网站(最简单)
# 直接rsync同步
rsync -avz /www/wwwroot/网站/ root@新IP:/www/wwwroot/网站/
# 改DNS就完事
场景2:WordPress网站(最常见)
需要改的地方:
# wp-config.php数据库配置
define('DB_NAME', '数据库名');
define('DB_USER', '用户名');
define('DB_PASSWORD', '密码');
define('DB_HOST', 'localhost');
# 如果域名或路径变了,还需要修改数据库
UPDATE wp_options SET option_value = 'https://新域名' WHERE option_name = 'siteurl';
UPDATE wp_options SET option_value = 'https://新域名' WHERE option_name = 'home';
场景3:动态网站(PHP/Node.js)
额外注意:
- 环境变量文件(.env)
- composer依赖重新安装
- node_modules重新npm install
- 缓存目录权限(chmod 777)
VPS平台选择建议(基于迁移友好度)
楼主这次换了余初云,主要看中这几点:
| 功能 | 余初云 | 其他平台 | 说明 |
|---|---|---|---|
| 快照备份 | ✅ 免费 | 部分收费 | 迁移前可以打快照 |
| 按小时计费 | ✅ 支持 | 部分支持 | 测试完再决定留不留 |
| 临时访问地址 | ✅ 提供 | 部分提供 | 方便切换前测试 |
| 一键环境 | ✅ 支持 | 看平台 | LAMP/LNMP快速部署 |
| 弹性升级 | ✅ 随时 | 部分支持 | 不用迁移就能加配置 |
新手建议: 选择支持快照功能的平台,万一迁移出问题可以快速回滚。
迁移工具推荐
文件传输工具
命令行党:
# rsync(推荐,支持断点续传)
rsync -avz --progress 源目录 root@目标IP:目标目录
# scp(简单直接)
scp -r 源文件 root@目标IP:目标路径
图形界面党:
- WinSCP(Windows)
- FileZilla(跨平台)
- Cyberduck(Mac)
面板迁移工具
宝塔面板:
- 官方有”网站迁移”插件
- 支持一键打包+一键部署
- 适合新手
1Panel:
- 比较新的面板
- 界面简洁
- Docker化部署
数据库迁移工具
命令行:
# 导出
mysqldump -u root -p 数据库名 > backup.sql
# 导入
mysql -u root -p 数据库名 < backup.sql
图形界面:
- phpMyAdmin(Web端)
- Navicat(专业工具)
- DBeaver(免费开源)
常见问题FAQ
Q1:迁移过程中网站会断多久?
A:如果提前准备好,只有DNS切换的5-30分钟会有影响。用TTL值小的解析可以缩短时间。
Q2:迁移后收录会掉吗?
A:只要操作正确(DNS正常、SSL正常、内容不变),收录不会掉。但切换后建议主动提交sitemap。
Q3:可以跨国迁移吗(比如从美国迁到香港)?
A:可以,流程一样。但要注意网络延迟,文件传输会慢一些。
Q4:旧服务器什么时候可以删?
A:至少等3-7天确认一切正常。如果有重要数据,建议保留到下个账期。
Q5:迁移失败了怎么办?
A:如果DNS已经切了,可以:
- 改DNS回旧IP(临时恢复)
- 检查新服务器问题
- 修复后再切一次
Q6:能不能边迁移边运行旧站?
A:可以!DNS没切之前旧站一直正常运行,这也是推荐的做法。
楼主的几点血泪建议
经过这次翻车,总结几条经验:
🔴 永远不要在没备份的情况下迁移
哪怕你再熟练,也可能手误删错东西。
🔴 不要急着删旧服务器
多保留几天观察期,出问题还能救回来。
🔴 迁移前列个清单
把要备份的、要改的、要测试的全部写下来,照着做不会遗漏。
🔴 选个流量少的时间迁移
比如凌晨2-6点,即使出问题影响也小。
🔴 DNS切换后持续观察
不是改完解析就完事了,要盯着监控看至少24小时。
🔴 SSL一定要提前配好
这个忘了影响太大,SEO、用户体验全都受影响。
写在最后
VPS迁移说难也不难,关键是别自信过头,忽略细节。
楼主这次就是太自信了,觉得”迁移做过很多次了,闭着眼睛都能操作”,结果反而翻车翻得最惨。
记住这3个核心:
- 备份再备份,别只相信一种方式
- 测试再上线,别盲目切DNS
- SSL要配好,别等浏览器报错才想起来
希望看到这篇的兄弟,能避开楼主踩过的坑,顺利完成迁移!
如果你也有迁移翻车的经历,欢迎在评论区分享,大家一起交流学习~
原创文章,作者:余初云,如若转载,请注明出处:https://blog.jidcy.com/dynamicip/vpsbh/1190.html
