很多站长在服务器上把网站跑熟之后,最怕的就是"搬家"。可能是旧机器续费太贵、商家跑路、配置不够用,也可能是想把网站从虚拟主机升级到 VPS。迁移最让人担心的三件事无非是:数据丢、网站打不开、切换域名解析之后流量全没了。
其实网站迁移是有标准流程的,只要按步骤走,全程不需要太高深的技术。这篇文章按实际操作顺序,把迁移前的准备、文件与数据库备份、新环境搭建、数据迁移、域名切换、迁移后验证一次讲清,全程 30 分钟左右就能完成。
一、迁移前:先列清单,再动手
迁移最忌讳的是"拍脑袋直接搬",动手之前先把下面几项确认好:
- 确认新服务器配置:CPU、内存、带宽、数据盘是否满足需求,建议至少不低于旧机器,避免搬家后性能反而变差。
- 确认旧服务器环境:用的什么面板或 LNMP 环境、PHP 版本、MySQL 版本、伪静态规则,尽量在新服务器上保持版本一致。
- 规划停机窗口:建议选择凌晨流量最低的时间段操作,把对用户的影响降到最小。
- 提前调低 DNS 的 TTL:把域名解析的 TTL 调到 600 秒左右,切换后能快速在全网生效。
- 新服务器提前开通并测试 SSH 连通,确认磁盘空间足够放下解压后的网站文件。
二、全量备份旧服务器
备份是迁移的底线,备份做不完整,后面一切都是空谈。需要备份的不只是网站文件,还有数据库、伪静态规则、SSL 证书和计划任务。
- 网站文件:宝塔环境下一般在 /www/wwwroot/网站目录,纯 LNMP 一般在 /home/wwwroot 或 /var/www 下,打包命令:
tar czf www_backup.tar.gz /www/wwwroot/你的目录 - 数据库:宝塔可以直接在"数据库"页面导出,命令行则是:
mysqldump -u用户名 -p 数据库名 > db_backup.sql - 伪静态规则:Nginx 的配置文件或 Apache 的 .htaccess 记得一并备份,很多网站搬家后 404 就是漏了这一步。
- SSL 证书:证书目录和证书配置一定要备份,否则切到新服务器后 HTTPS 会全部报错。
- 计划任务:Crontab 里的定时任务(备份、续期、清理日志)导出留存:
crontab -l > crontab_backup.txt
备份完成后,把备份包下载到本地留底,或者直接用 scp / rsync 传到新服务器,双保险最稳妥。
三、在新服务器上搭建环境
新服务器先装好与旧机器同版本的运行环境,这一步做得好,后面导入数据几乎不会踩坑:
- 安装宝塔或 LNMP 环境,PHP、MySQL 版本尽量与旧服务器保持一致。
- 确认 PHP 扩展齐全,比如程序用到的 fileinfo、opcache、redis 等,少了扩展网站会白屏。
- 创建好与旧服务器同名的数据库和数据库用户,记住密码,后面改配置要用。
四、把文件和数据库搬过去
- 传输备份包:
scp 用户名@旧服务器IP:/路径/备份包 .或者用 rsync 增量同步更省时间。 - 解压网站文件到新服务器对应目录,注意目录结构要和旧服务器保持一致。
- 导入数据库:
mysql -u用户名 -p 数据库名 < db_backup.sql - 修改网站配置文件里的数据库连接信息:WordPress 是 wp-config.php,其他程序一般是 .env 或 config 文件。
- 设置目录权限和属主,尤其是有上传功能的站点,权限不对会导致图片传不上去。
这里有个非常实用的技巧:先不要动线上域名解析,在本机 hosts 文件里把域名临时指向新服务器 IP,用浏览器先验证一遍网站是否正常。这样即使有问题,也完全不影响线上用户。
五、切换域名解析
- 登录域名解析控制台,把 A 记录改成新服务器 IP。
- 等待 TTL 生效,可以用第三方 DNS 检测工具看全国各地解析的生效情况。
- 解析生效后不要急着关旧服务器,建议观察一两天,确认没有用户还在访问旧 IP、邮件和接口都正常后,再处理旧机器。
六、迁移后的验证与收尾
- 逐项检查:首页、内页、图片、后台登录、上传功能、搜索、伪静态 404 页面。
- 检查全站 HTTPS 是否正常,证书有没有部署到位。
- 如果程序里还残留旧域名或旧 IP,用 SQL 批量替换,WordPress 也可以直接改 wp_options 里的 siteurl 和 home 两项。
- 确认稳定后,清理旧服务器的敏感数据,别忘了解除旧机器的自动续费,避免白花钱。
总结
网站迁移没那么可怕,只要记住三个要点:备份完整、环境版本一致、先在本地验证再切 DNS,基本不会出问题。这套流程同样适用于换面板、换机房、商家跑路紧急抢救等场景,收藏起来,下次搬家照着做就行。