首页建站教程站长工具网址导航免费资源

网站换服务器迁移完整教程

728×90 教程页顶部广告位

网站运行一段时间后,可能需要更换服务器(原服务器太慢、太贵、服务商不好、升级配置等)。服务器迁移是站长必备技能,这篇教程教你零停机、零数据丢失的完整迁移步骤。

一、迁移前准备

迁移前检查清单
  1. 明确迁移原因和目标
    • 为什么要迁移?(速度慢、价格贵、配置不够、服务商问题、地域调整)
    • 新服务器要满足什么要求?(配置、带宽、地域、价格)
    • 迁移后预期达到什么效果?
  2. 选择新服务器
    • 根据网站需求选择配置(CPU、内存、硬盘、带宽)
    • 选择合适的地域(靠近目标用户,国内用户选国内节点)
    • 选择靠谱的服务商(阿里云、腾讯云、华为云等)
    • 新服务器系统版本尽量和原服务器一致(如都是CentOS 7或Ubuntu 20.04)
    • 新服务器配置不低于原服务器(至少持平,建议略高)
  3. 时间选择
    • 选择网站访问量最低的时段(通常凌晨2-5点)
    • 避开重要节日、活动、促销期间
    • 预留足够的时间(通常1-3小时,复杂网站可能更久)
    • 提前通知用户(如果是论坛或社区,提前公告维护时间)
  4. 信息记录
    • 记录原服务器的配置信息(系统版本、Nginx版本、PHP版本、MySQL版本)
    • 记录网站配置(域名、根目录、数据库名、数据库用户名密码)
    • 记录Nginx/Apache虚拟主机配置
    • 记录PHP配置(php.ini中的重要设置)
    • 记录SSL证书情况(是否有证书、证书来源)
    • 保存所有密码(服务器、数据库、后台、FTP)
  5. 通知相关方
    • 如果网站有CDN,准备好修改CDN回源地址
    • 如果有第三方服务(邮件、短信、支付),确认是否需要修改IP白名单
    • 如果有搜索引擎站长平台,迁移后关注抓取情况
⚠️ 迁移前必做

完整备份:迁移前一定要完整备份网站文件和数据库,异地备份,防止迁移失败数据丢失
测试迁移流程:如果是重要网站,建议先在测试服务器上演练一次迁移流程
不要在原服务器到期当天迁移:提前几天迁移,留出回滚和解决问题的时间
不要删除原服务器数据:新服务器运行正常至少1周后,再考虑删除原服务器数据
降低TTL:迁移前1-2天将域名DNS的TTL改为60秒(1分钟),让DNS切换更快生效

二、备份原服务器数据

完整备份步骤
  1. 备份网站文件
    • 方法1:宝塔面板 → 网站 → 备份 → 立即备份(整站备份)
    • 方法2:宝塔文件管理 → 选中网站根目录 → 压缩为zip/tar.gz → 下载到本地
    • 方法3:用FTP/SFTP下载整个网站目录(适合小网站)
    • 备份内容:网站根目录所有文件(HTML、PHP、图片、主题、插件、上传文件等)
  2. 备份数据库
    • 方法1:宝塔面板 → 数据库 → 对应数据库 → 备份 → 立即备份
    • 方法2:phpMyAdmin → 选择数据库 → 导出 → 选择SQL格式 → 执行下载
    • 方法3:命令行 mysqldump -u用户名 -p 数据库名 > 备份.sql
    • 如果有多个数据库,每个都要备份
  3. 备份配置文件
    • Nginx配置:/www/server/panel/vhost/nginx/ 目录下的配置文件
    • PHP配置:php.ini(可以在宝塔PHP设置中查看)
    • SSL证书:如果是自己安装的证书,备份证书文件(宝塔可以在SSL设置中查看)
    • 宝塔配置:如果用宝塔,记录软件版本和设置
  4. 验证备份完整性
    • 检查备份文件大小是否合理(和网站实际大小差不多)
    • 解压备份文件,检查文件是否完整
    • 用文本编辑器打开SQL备份文件,检查是否有数据(不是空文件)
    • 建议在本地测试恢复一次,确保备份可用
  5. 异地保存备份
    • 将备份文件下载到本地电脑
    • 同时上传到云存储(七牛云、阿里云OSS等)
    • 确保至少有2份备份在不同地方

三、新服务器环境配置

新服务器配置步骤(以宝塔为例)
  1. 购买并初始化新服务器
    • 在云服务商购买新服务器,选择系统(推荐CentOS 7+或Ubuntu 20.04+)
    • 设置root密码或SSH密钥
    • 安全组开放必要端口:80(HTTP)、443(HTTPS)、22(SSH,建议改端口)、8888(宝塔面板)
    • 记录新服务器的IP地址
  2. 安装宝塔面板
    • SSH登录新服务器
    • 执行宝塔安装命令(参考宝塔官网,CentOS和Ubuntu命令不同)
    • 等待安装完成(通常5-15分钟)
    • 记录宝塔面板地址、用户名、密码
    • 登录宝塔面板,修改默认面板端口和用户名密码
  3. 安装网站环境
    • 宝塔首次登录会提示安装环境套件,选择LNMP(推荐)或LAMP
    • 软件版本尽量和原服务器一致:
      • Nginx:和原服务器相同版本(如1.20)
      • MySQL:和原服务器相同版本(如5.7或8.0,注意8.0兼容性)
      • PHP:和原服务器相同版本(如7.4,注意PHP 8兼容性)
    • 点击"一键安装",等待安装完成(通常10-30分钟)
    • 安装完成后,在"软件商店"中检查是否需要安装额外的PHP扩展(如原服务器用了什么特殊扩展)
  4. PHP配置
    • 宝塔 → 软件商店 → PHP → 设置 → 配置修改
    • 调整重要参数:
      • upload_max_filesize:上传文件大小限制(如50M)
      • post_max_size:POST数据大小(如50M)
      • max_execution_time:脚本执行时间(如300秒)
      • memory_limit:内存限制(如256M)
    • 和原服务器的PHP配置保持一致
    • 保存并重启PHP
  5. 创建网站和数据库
    • 宝塔 → 网站 → 添加站点
    • 域名:填写你的域名(如 www.example.com 和 example.com)
    • 根目录:默认即可(/www/wwwroot/域名)
    • FTP:可以不创建(用SFTP更安全)
    • 数据库:选择MySQL,设置数据库名、用户名、密码(记录下来)
    • PHP版本:选择和原服务器一致的版本
    • 点击"提交"
  6. 配置SSL(可选,迁移后配置也行)
    • 宝塔 → 网站 → 对应网站 → SSL
    • 可以先不配置,等DNS切换到新服务器后再申请Let's Encrypt免费证书
    • 如果原服务器有证书,可以导出证书文件,在新服务器导入

四、数据迁移与配置

数据迁移步骤
  1. 上传网站文件到新服务器
    • 方法1:宝塔文件管理 → 进入网站根目录 → 上传备份压缩包 → 解压 → 将文件移动到根目录
    • 方法2:用FTP/SFTP客户端(FileZilla)连接新服务器,上传网站文件(适合小网站)
    • 方法3:在原服务器用scp/rsync直接传输到新服务器(适合大网站,速度快):
      scp -r /www/wwwroot/域名/* root@新服务器IP:/www/wwwroot/域名/
    • 确保所有文件都上传完整,没有遗漏
    • 检查文件权限:目录755,文件644(宝塔默认正确,如果不对批量修改)
  2. 导入数据库
    • 方法1:宝塔 → 数据库 → 对应数据库 → 管理(phpMyAdmin)→ 导入 → 选择SQL备份文件 → 执行
    • 方法2:宝塔数据库页面,点击"从备份导入",上传SQL文件
    • 方法3:命令行导入:
      mysql -u用户名 -p 数据库名 < 备份.sql
    • 如果数据库很大(超过100MB),建议用命令行导入,phpMyAdmin可能超时
    • 导入完成后,检查数据库表是否完整,数据量是否和原服务器一致
  3. 修改网站配置
    • 如果新数据库的用户名/密码和原服务器不同,需要修改网站配置文件:
      • WordPress:修改 wp-config.php 中的 DB_NAME、DB_USER、DB_PASSWORD
      • Typecho:修改 config.inc.php
      • 其他CMS:找到对应的数据库配置文件修改
    • 如果网站路径变了,检查配置文件中的路径设置(大部分CMS会自动识别,部分可能需要修改)
    • 如果有缓存,先删除缓存文件(WordPress的wp-content/cache目录等)
  4. 配置Nginx伪静态
    • 宝塔 → 网站 → 对应网站 → 伪静态
    • 选择对应的CMS规则(WordPress、Typecho、Discuz等,宝塔有预设规则)
    • 如果原服务器有自定义的Nginx配置,复制过来
    • 保存配置
  5. 本地测试(修改hosts)
    • 在切换DNS之前,先在本地电脑测试新服务器是否正常
    • 修改本地hosts文件(Windows:C:\Windows\System32\drivers\etc\hosts;Mac/Linux:/etc/hosts)
    • 添加一行:新服务器IP 你的域名(如 1.2.3.4 www.example.com)
    • 保存hosts文件
    • 刷新DNS缓存(Windows:ipconfig /flushdns)
    • 在浏览器访问你的域名,此时访问的是新服务器
    • 全面测试:
      • 首页是否正常打开
      • 文章页、分类页是否正常
      • 后台能否登录(域名/admin)
      • 图片、CSS、JS是否正常加载
      • 评论、搜索、注册等动态功能是否正常
      • 数据库连接是否正常(没有数据库错误)
      • 网站速度是否正常
    • 测试通过后,恢复hosts文件(删除添加的那行),准备切换DNS
💡 大网站迁移技巧

增量同步:先全量传输一次,切换前再用rsync增量同步一次(只传输变化的文件),减少停机时间
数据库主从:非常大的网站可以配置数据库主从同步,原服务器为主,新服务器为从,同步完成后切换
分块传输:网站文件很大时,分目录分批传输,避免一次传输超时
利用云服务商迁移工具:阿里云、腾讯云都有服务器迁移工具,可以一键迁移
降低TTL:迁移前1-2天将DNS TTL改为60秒,切换后DNS很快生效,减少访问旧服务器的时间

五、DNS切换与测试

DNS切换步骤
  1. 切换前最后同步
    • 如果网站有新内容(如用户注册、新评论),在切换前最后同步一次数据库和文件
    • 可以临时关闭网站(显示维护页面),确保切换期间没有新数据写入
    • 用rsync增量同步变化的文件
    • 重新导出并导入数据库(如果有关键数据变化)
  2. 修改DNS解析
    • 登录域名DNS管理控制台(阿里云、腾讯云、Cloudflare等)
    • 找到网站域名的A记录(或CNAME记录)
    • 将记录值从原服务器IP改为新服务器IP
    • TTL设置为60秒(1分钟),让切换更快生效
    • 保存修改
    • 如果有CDN,同时修改CDN的回源地址为新服务器IP
  3. 等待DNS生效
    • DNS修改后,全球DNS服务器会逐步更新,通常几分钟到几小时生效
    • 可以用 https://www.whatsmydns.net/ 检查全球DNS解析情况
    • 本地可以用 nslookup 域名 或 ping 域名 查看解析到的IP
    • 生效期间,部分用户可能还访问旧服务器,部分访问新服务器,这是正常的
  4. 新服务器配置SSL
    • DNS生效后,在新服务器申请SSL证书(宝塔 → 网站 → SSL → Let's Encrypt → 申请)
    • 开启"强制HTTPS"
    • 测试HTTPS访问是否正常
    • 如果原服务器有付费证书,可以导出证书文件在新服务器导入,不需要重新申请
  5. 全面测试新服务器
    • 访问网站前台所有页面,确保正常
    • 登录后台,测试所有功能
    • 测试图片、视频、文件下载是否正常
    • 测试表单提交、评论、注册登录等动态功能
    • 测试移动端访问
    • 用站长工具测试全国各地访问速度(如17ce.com、站长工具测速)
    • 检查服务器资源使用(CPU、内存、带宽)是否正常
    • 查看Nginx、PHP、MySQL错误日志,是否有报错
  6. 搜索引擎和第三方服务
    • 百度站长平台、Google Search Console:关注抓取情况,如有异常重新提交sitemap
    • CDN:确认回源地址已改为新服务器IP
    • 邮件服务:如果用服务器发邮件,新服务器IP可能需要配置发信域名和SPF/DKIM
    • 支付接口、短信接口等:如果有IP白名单限制,添加新服务器IP
    • 统计代码(百度统计、Google Analytics):不需要修改,自动继续统计
  7. 原服务器保持运行
    • 原服务器不要立即关闭或删除,保持运行至少1-2周
    • 因为DNS完全生效需要时间,部分用户可能还访问旧服务器
    • 如果新服务器出问题,可以快速切回旧服务器(回滚)
    • 1-2周后,确认新服务器稳定运行,再考虑关闭或释放原服务器

六、迁移后检查与FAQ

迁移后检查清单
  1. 每天检查(迁移后第一周):
    • 网站是否能正常访问
    • 服务器CPU、内存、带宽是否正常
    • Nginx、PHP、MySQL错误日志是否有报错
    • 网站功能是否正常(后台、评论、搜索等)
    • 搜索引擎抓取是否正常(百度站长平台、GSC)
    • 网站流量是否正常(百度统计、GA)
  2. 一周后检查
    • 网站稳定运行,没有频繁故障
    • 服务器资源使用率合理,不需要紧急升级
    • 搜索引擎收录和排名恢复正常(迁移可能短暂波动,一周左右恢复)
    • 用户没有反馈访问问题
    • 确认无误后,可以考虑释放原服务器
  3. 优化新服务器
    • 根据网站实际负载调整PHP、MySQL配置
    • 配置缓存(OPcache、Redis、Memcached)
    • 配置自动备份(宝塔自动备份到云存储)
    • 配置安全防护(防火墙、Fail2ban、安全插件)
    • 配置监控告警(宝塔监控、云监控)
💡 回滚方案(迁移失败时)

如果迁移后新服务器出现严重问题,无法快速解决,可以回滚到原服务器:
1. 将DNS解析改回原服务器IP
2. 等待DNS生效(几分钟到几小时)
3. 用户恢复访问原服务器
4. 在新服务器上排查问题,解决后重新迁移
5. 这就是为什么原服务器要保持运行至少1-2周

回滚不会丢失数据,因为原服务器的数据还在(切换期间新产生的数据可能需要手动同步,但通常影响不大)。

Q:迁移会影响SEO和排名吗?
A:如果操作正确,迁移对SEO影响很小,可能短暂波动(几天到一周),然后恢复。关键是:①确保新服务器速度不低于原服务器;②URL结构不变,不要改链接;③301重定向正确(如果有URL变化);④及时在百度站长平台和GSC更新信息;⑤sitemap正常提交。如果服务器IP变化,搜索引擎会自动识别,不需要特别处理。避免频繁迁移,每次迁移都有短暂波动。

Q:迁移期间网站会打不开吗?
A:如果操作熟练、提前配置好,迁移期间网站几乎不会中断。正确的流程是:①新服务器配置好并测试通过;②修改DNS,DNS生效期间新旧服务器同时运行,用户访问哪个都能正常打开;③DNS完全生效后,所有用户访问新服务器。整个过程网站都能正常访问,不会打不开。只有在切换前最后同步数据库时,如果数据量大可能需要短暂关闭网站几分钟,但大部分小网站不需要。

Q:数据库版本不同可以迁移吗?
A:可以,但要注意兼容性。MySQL 5.7升级到8.0,大部分网站兼容,但部分老程序可能有问题。建议新服务器的MySQL版本和原服务器一致,避免兼容性问题。如果必须升级版本,迁移后要全面测试网站功能,特别是数据库相关的功能。如果是从MySQL迁移到MariaDB(或反过来),大部分情况兼容,但也要测试。

Q:PHP版本不同有影响吗?
A:有影响。PHP 7.x升级到PHP 8.x,部分老插件/主题可能不兼容(PHP 8废弃了一些函数)。建议新服务器PHP版本和原服务器一致,迁移稳定后再考虑升级PHP。如果必须升级,先在测试环境测试兼容性,再在生产环境升级。WordPress 5.9+支持PHP 8,但部分第三方插件可能不支持。

Q:迁移后网站变慢了怎么办?
A:①检查新服务器配置是否足够(CPU、内存、带宽);②检查服务器地域是否靠近目标用户(如国内用户用了海外服务器会慢);③检查网络质量(ping服务器看延迟和丢包);④检查Nginx/PHP/MySQL配置是否优化;⑤检查是否有错误日志导致性能问题;⑥开启缓存(OPcache、页面缓存、数据库缓存);⑦接入CDN加速;⑧如果是云服务器,检查是否是共享型实例(性能受限),可以升级为独享型。

Q:可以用云服务商的迁移工具吗?
A:可以,阿里云、腾讯云、华为云都有服务器迁移工具(如阿里云的"服务器迁移中心SMC"、腾讯云的"在线迁移"),可以将原服务器(可以是其他服务商的)一键迁移到新服务器,自动完成环境和数据迁移。优点是简单方便、适合新手;缺点是可能迁移多余的文件、配置不一定最优、大网站迁移时间长。建议新手可以用迁移工具,有经验的站长手动迁移更可控。

这篇教程对你有帮助吗?

728×90 教程页底部广告位