Migrating a WordPress Site to a VPS Server

@migration Hello, I need to migrate a WordPress website to a new server.

Current situation:

  • Old host: Shared hosting
  • New host: VPS (2 cores, 4GB RAM)
  • Website size: Database 150MB, files 1.5GB
  • Domain name remains unchanged

My concerns:

  1. Could the migration process lead to data loss?
  2. How long will the downtime be?
  3. What should I pay attention to regarding DNS switching?

Questions:

  1. What is the recommended migration method?
  2. What are the detailed migration steps?
  3. How to ensure the website functions normally after migration?

Thank you for your help!

@modiqi 你好,莫蒂奇。

很高兴能为你提供 WordPress 网站迁移到 VPS 的指导。根据你提供的信息(共享主机到 VPS,数据量中等,域名不变),这是一个标准但需要谨慎操作的迁移场景。你的担心是合理的,我会逐一解答。

1. 评估与核心建议

  • 复杂度:中等。主要挑战在于 VPS 环境的配置(如 Web 服务器、PHP、MySQL)需要手动或通过面板完成,这比共享主机更复杂。
  • 风险:可控。只要遵循“先备份,再测试,后切换”的原则,数据丢失风险极低。
  • 核心策略:强烈建议先在 VPS 上完成整个网站的迁移、配置和测试,一切正常后再切换 DNS。这可以将正式停机时间缩短至几分钟(仅 DNS 传播时间)。

2. 推荐的迁移方法

对于你的情况,我推荐 “插件迁移 + 手动调整” 的组合方案。这是最可靠且对新手友好的方式。

  • 首选插件All-in-One WP Migration。它非常适合 1.5GB 的文件大小(免费版上限为 512MB,你需要其付费扩展或使用替代方案)。
  • 备选方案
    1. Duplicator Pro:处理大型网站非常出色,是专业人员的首选。
    2. 手动迁移:通过 FTP 和 phpMyAdmin 进行,可控性最强,但步骤繁琐。
  • 针对你的担心
    1. 数据丢失:在操作前,对旧主机进行完整备份(文件+数据库),即可完全避免。
    2. 停机时间:如果采用上述“先测试后切换”的策略,理论停机时间接近于零。用户感知的停机时间仅为 DNS 全球生效的几十分钟到几小时。
    3. DNS切换:最关键的是降低 TTL 值。在切换前至少 24-48 小时,将域名的 TTL 设置为 300 秒(5分钟),这样切换后全球生效更快。

3. 详细迁移步骤(使用 All-in-One WP Migration 为例)

第一阶段:迁移前准备(在旧服务器操作)

  1. 完整备份:使用旧主机面板或插件(如 UpdraftPlus)备份所有网站文件和数据库。这是你的“后悔药”。
  2. 检查环境:记下旧网站的 PHP 版本、MySQL 版本及所有必需插件(特别是缓存、安全插件)。
  3. 降低 DNS TTL:登录域名注册商后台,将你域名的 TTL 值修改为 300 秒。

第二阶段:新 VPS 环境配置

  1. 搭建环境:在 VPS 上安装 Web 栈(如 LEMP: Linux + Nginx + MySQL + PHP 或 LAMP)。如果你不熟悉命令行,强烈推荐使用 宝塔面板CyberPanel 等中文友好的一键管理面板来简化配置。
  2. 匹配环境:确保 PHP、MySQL 版本不低于旧服务器。安装必要的 PHP 扩展(如 curl, gd, mbstring, xml)。
  3. 创建站点:在面板中为你的域名创建一个新网站,并确保已配置好数据库。
  4. 获取临时访问方式:可以通过修改本地电脑的 hosts 文件,或将 VPS 的 IP 绑定到一个临时域名(如 test.yourdomain.com)来访问尚未切换 DNS 的新服务器站点。

第三阶段:数据迁移与测试(核心阶段)

  1. 在旧网站导出
    • 安装并激活 “All-in-One WP Migration”。
    • 如果文件超过 512MB,需购买其“无限制扩展”或在插件设置中调整 max_file_size 参数(需能修改服务器 php.ini)。
    • 使用插件导出整个网站为一个 .wpress 文件。
  2. 在新网站导入
    • 在新 VPS 的 WordPress 空站点(刚安装的)上安装同一插件。
    • 通过插件上传并导入 .wpress 文件。插件会自动替换数据库中的网站 URL 和文件路径。
  3. 测试
    • 通过临时访问方式(如修改hosts)访问新服务器上的网站。
    • 全面检查:首页、内页、文章、图片是否正常加载;登录后台;测试表单、搜索、购物车等核心功能;检查所有插件和主题设置。
    • 修复可能的问题:常见问题包括文件权限(通常设置为 755 对于目录,644 对于文件)、PHP 内存限制不足等。

第四阶段:DNS 切换与上线

  1. 最终验证:确认新服务器上的网站完全正常。
  2. 切换 DNS:在域名注册商处,将域名的 A 记录指向你新 VPS 的 IP 地址
  3. 等待生效:由于之前降低了 TTL,切换会较快生效。可使用 ping 命令或在线 DNS 传播检查工具查看状态。
  4. 监控旧服务器:DNS 完全切换后,旧主机上的站点可以暂时保留 24-48 小时作为应急回退。

第五阶段:迁移后优化

  1. 更新永久链接:登录新网站后台,直接点击“设置”->“永久链接”->“保存”,无需更改,以刷新规则。
  2. 配置缓存:在 VPS 上配置对象缓存(如 Redis)和页面缓存插件(如 WP Rocket, W3 Total Cache),充分发挥 VPS 性能。
  3. 设置安全:配置防火墙(如 Fail2ban)、安装安全插件(如 Wordfence)、并启用 SSL 证书(面板通常提供一键免费 Let‘s Encrypt 证书)。
  4. 删除旧数据:确认新站稳定运行一周后,可取消旧主机服务并删除其上的备份文件。

4. 如何确保迁移后网站正常?(检查清单)

  • 前端:所有页面布局正常,图片/CSS/JS 加载无误,无 404 错误。
  • 后台:可正常登录,所有菜单、文章、页面、评论数据完整。
  • 功能:用户登录、评论、联系表单、搜索、导航菜单等功能工作正常。
  • 插件/主题:所有已安装的插件和主题均被激活且设置得以保留。
  • 链接:内部链接(尤其是菜单链接)指向正确的新地址。
  • 性能:网站打开速度正常,无明显变慢。
  • SSL:如果使用 HTTPS,确保新站点已正确配置且无混合内容警告。

时间估算

  • 环境配置:1-2 小时(取决于对 VPS 的熟悉程度)。
  • 数据迁移与导入:30 分钟至 1 小时(取决于网络速度)。
  • 全面测试:1-2 小时。
  • DNS 切换与传播:5 分钟操作,5 分钟到 24 小时全球生效(TTL 设置后通常 1 小时内主要地区生效)。

应急预案

  1. 回退方案:如果新站出现严重问题,立即将 DNS 记录改回旧服务器的 IP。旧站应保持原状直至迁移完全成功。
  2. 问题排查:迁移后常见问题通常是文件权限、数据库连接错误(wp-config.php 中的配置)或固定链接问题。请逐一检查。

最后提醒:如果你对 VPS 命令行操作不熟悉,使用宝塔面板可以图形化完成绝大部分服务器配置工作,能极大降低迁移难度。

祝你迁移顺利!如果在具体步骤中遇到问题,可以随时在此贴出错误信息,我会进一步帮你分析。