首页 guides 从其他主机商迁移到 Hostease:操作步骤与踩坑记录

从其他主机商迁移到 Hostease:操作步骤与踩坑记录

如何把网站从旧主机商完整迁移到新服务器,同时确保数据不丢、服务不中断?这个问题我在过去一年里实操了不下十次,从单站 WordPress 迁移到多站点批量搬迁都经历过。每次都会遇到不同的坑——PHP 版本不兼容导致白屏、数据库字符集不一致导致中文乱码、DNS(域名系统)缓存迟迟不刷新导致部分用户仍访问旧服务器。

这篇指南把迁移到新服务器的完整流程拆成可操作的步骤,同时把实际迁移中踩过的坑一并列出来。如果你正在考虑换主机商,或者已经买了新 VPS(虚拟专用服务器)但还没动手迁移,这篇文章可以帮你省下至少半天排错时间。

迁移前的准备工作:先备份,再动手

场景: 你刚在 Hostease 后台买了一台新 VPS,系统是 CentOS 7 或 Ubuntu 22.04,现在要把旧服务器上的三个 WordPress 站点搬过去。

第一步:全量备份旧服务器数据

不管旧主机商是谁,迁移前必须做三件事:

  1. 网站文件打包:用 tar 压缩网站根目录
    bash
    tar -czf /tmp/site-backup-$(date +%Y%m%d).tar.gz /var/www/html/

    这条命令会把整个网站目录打包成一个带日期的压缩包,方便后续追溯。

  2. 数据库导出:用 mysqldump 导出所有数据库
    bash
    mysqldump -u root -p --all-databases > /tmp/all-dbs-$(date +%Y%m%d).sql

    注意加上 --all-databases 参数,避免漏掉 WordPress 自动创建的额外数据库。

  3. 配置文件备份:Nginx 或 Apache 的站点配置、SSL(安全传输协议)证书目录、cron 任务列表
    bash
    cp -r /etc/nginx/sites-enabled/ /tmp/nginx-backup/
    crontab -l > /tmp/crontab-backup.txt

踩坑记录 #1: 我第一次迁移时只打包了网站文件,忘了导出数据库的存储过程和触发器。结果在新服务器上恢复后,某个插件的自定义查询全部报错。解决办法是 mysqldump 时加上 --routines --triggers 参数。

第二步:在新服务器上搭建对等环境

新 VPS 默认提供纯净系统镜像,你需要手动安装与旧服务器版本一致的软件栈。这里最容易踩的坑是 PHP 版本不一致——旧服务器跑 PHP 7.4,新服务器默认装了 PHP 8.1,WordPress 本身兼容,但某些老插件可能直接报 500 错误。

建议在迁移前先执行环境对齐检查:

php -v | head -1
mysql --version
nginx -v 2>&1 | head -1

在新服务器上同样执行以上三条命令,逐项比对版本。

如果版本不一致,在新服务器上安装对应版本。以 PHP 7.4 为例:

apt install php7.4 php7.4-fpm php7.4-mysql php7.4-curl php7.4-gd php7.4-mbstring php7.4-xml

数据传输:安全地把文件搬到新家

环境就绪后,开始传输数据。推荐使用 rsync 而不是 scp——rsync 支持断点续传,大文件传输中断后不用重头再来。

rsync -avz --progress -e ssh /tmp/site-backup-20260605.tar.gz root@新服务器IP:/tmp/

踩坑记录 #2: rsync 走默认 SSH 端口(22),如果旧服务器限制了出站 SSH 或者新服务器 SSH 端口不是 22,需要在命令里显式指定端口:

rsync -avz --progress -e "ssh -p 2222" /tmp/site-backup.tar.gz root@新IP:/tmp/

数据库文件传输同理。传输完成后,在新服务器上解压文件并导入数据库:

tar -xzf /tmp/site-backup-20260605.tar.gz -C /var/www/html/
mysql -u root -p < /tmp/all-dbs-20260605.sql

环境配置:让新服务器认识你的网站

文件到位、数据库到位之后,需要配置 Web 服务器让站点跑起来。

Nginx 站点配置

把旧服务器的 Nginx 配置文件复制到新服务器对应目录,注意检查以下几点:

  • root 路径:旧服务器的网站根目录可能和新服务器不一致,需要修改 root 指令
  • PHP 套接字路径:PHP 7.4 和 PHP 8.1 的 sock 文件路径不同,确认 /run/php/php7.4-fpm.sock 是否存在
  • SSL 证书路径:如果使用 Let’s Encrypt,直接复制 /etc/letsencrypt/ 目录到新服务器

配置完成后测试语法并重载:

nginx -t
systemctl reload nginx

数据库用户与权限

导入数据库后,WordPress 的 wp-config.php 里写的数据库用户名和密码还是旧服务器的。你需要在新服务器上创建对应的数据库用户并授权:

mysql -u root -p
CREATE USER 'wpuser'@'localhost' IDENTIFIED BY '新密码';
GRANT ALL PRIVILEGES ON wordpress_db.* TO 'wpuser'@'localhost';
FLUSH PRIVILEGES;

然后修改 wp-config.php 中的数据库连接信息,把主机地址从 localhost 改成新服务器的数据库地址(如果数据库在本机则保持 localhost)。

踩坑记录 #3: WordPress 的 wp-config.php 里有一个 WP_HOMEWP_SITEURL 常量定义。如果你的旧站点用了自定义域名,这两个值在新服务器上暂时还是旧域名,会导致首页跳转到旧地址。迁移完成前可以先在 /etc/hosts 里把域名指向新 IP 做本地测试。

DNS 切换:让流量指向新服务器

本地测试通过后,就可以修改 DNS 记录了。这一步是迁移中最容易被忽视的环节。

DNS 切换步骤

  1. 登录旧域名管理面板(或当前 DNS 服务商)
  2. 找到 A 记录,把值从旧服务器 IP 改成新服务器 IP
  3. 如果使用了 CDN(内容分发网络),同时更新 CNAME 记录
  4. 注意 TTL(DNS 缓存时间)设置——如果原来的 TTL 是 86400 秒(24 小时),建议提前两天改成 300 秒(5 分钟),这样切换后生效更快

切换后的验证

DNS 生效后(通常 10 分钟到 2 小时不等),用以下方式验证:

# 从多个节点验证 DNS 解析
dig +short 你的域名.com
nslookup 你的域名.com

# 检查网站是否正常响应
curl -I https://你的域名.com

踩坑记录 #4: 国内用户访问美国 VPS 时,部分本地 ISP 的 DNS 缓存刷新较慢。如果你有国内用户,建议同时开启 CDN(内容分发网络)加速服务,让国内访客通过 CDN 节点访问,减少 DNS 切换带来的访问中断时间。

迁移后的验证清单

DNS 切换完成后,不要急着关掉旧服务器。建议保留旧服务器至少 3-7 天,按以下清单逐项验证:

迁移前后性能对比

  • 功能验证:登录 WordPress 后台,发布一篇测试文章,确认所有插件正常运行
  • 邮件发送:测试联系表单和注册邮件是否能正常送达
  • SSL 证书:确认 HTTPS 正常,没有证书警告
  • 数据库连接:检查 WooCommerce 订单、用户注册等依赖数据库的功能
  • 日志检查:查看 Nginx 错误日志和 PHP 错误日志,排查隐藏问题
    bash
    tail -f /var/log/nginx/error.log
    tail -f /var/log/php7.4-fpm.log

踩坑记录 #5: 迁移后第三天发现网站凌晨 3 点的备份邮件没收到。排查后发现旧服务器的 cron 任务虽然备份了数据,但备份脚本里写死了旧服务器的 S3 存储桶地址。迁移后一定要检查所有自动化脚本里的硬编码路径和地址。

总结

从其他主机商迁移到新服务器本身并不复杂,核心就三步:备份旧数据、传输到新服务器、切换 DNS。但每一步的细节决定了迁移是半小时搞定还是折腾一整天。

数据备份与安全传输

建议你按照以下顺序操作:先做全量备份并验证备份完整性,再在新服务器上搭建对等环境,传输数据后做本地测试,最后切换 DNS 并保留旧服务器一周作为回退方案。如果你需要更详细的配置帮助,可以参考 WHT 技术教程 中的环境搭建指南,或查看 VPS 主机选购指南 了解不同配置的适用场景,也可以参考 网站迁移完整流程 中的操作细节。

本文来自网络,不代表WHT中文站立场,转载请注明出处。https://hostease.webhostingtalk.cn/guides/hosting-migration-hostease/

作者: wht-he-admin

下一篇
服务器迁移概念图:数据从旧服务器流向新服务器

已经没有了

返回顶部