从 cPanel 主机迁移网站到 DigitalOcean 的完整指南 2026
将网站从共享 cPanel 主机迁移到 DigitalOcean Droplet 代表着从现成的托管服务转变为自管理服务器,提供更多控制权和不同的成本资源模型。本指南将逐步引导您完成每个步骤——从准备 Droplet、迁移文件和数据库到执行无缝的 DNS 切换——包含完整的检查清单和需要注意的常见问题。
目录
为什么从共享主机迁移到 Droplet
共享主机(配有 cPanel)对于小型和中型网站来说是一个流行的选择,因为托管提供商管理操作系统、应用安全更新,并提供一个现成的控制面板来安装网络应用、管理域名、处理电子邮件以及仅需几次点击就可以管理数据库。网站所有者根本不需要处理服务器级别的配置。这种模式的常见局限是 CPU 和 RAM 资源与同一服务器上的其他用户共享,当邻近网站的流量激增时,性能可能会不稳定。专业定制——例如特定的 PHP 版本、特定的扩展程序或复杂的 cron 作业——通常受到每个提供商政策的限制。 迁移到 Droplet 意味着从固定费用计划模式切换到租赁具有完整 root 访问权限的虚拟机。CPU、RAM 和磁盘空间专属于该网站,不会以与共享主机相同的方式共享,您可以选择安装哪个堆栈、哪些版本以及需要的其他服务。DigitalOcean 的基础 Droplets(Basic、共享 CPU)从 512 MiB RAM / 1 vCPU / 10 GB SSD / 500 GiB 传输($4/月)开始,扩展到适中流量网站的 4 GiB RAM / 2 vCPU / 80 GB SSD / 4,000 GiB 传输($24/月),按秒计费,最少 60 秒或 $0.01——以较高者为准(定价截至 2026 年 7 月——请在 DigitalOcean 官方定价页面验证当前费率)。 显著的权衡是增加的责任。一旦迁移到 Droplet,您或您的开发团队必须处理一切:操作系统和安全补丁更新、防火墙配置、网络和数据库服务器的安装和管理以及备份系统——这些是共享主机提供商作为每月费用的一部分处理的任务。迁移的决定并不总是更好或更差,而取决于您的网站和团队是否准备好承担服务器维护工作,以交换更多的控制权,通常比共享主机计划更低的单位资源成本。
- 共享主机:提供商管理操作系统、补丁、控制面板,以换取与其他用户共享资源
- Droplet:完全 root 访问权限、专用资源、可自由选择堆栈和版本
- 基础 Droplet 定价:从 $4/月(512MiB/1vCPU/10GB)到 $24/月(4GiB/2vCPU/80GB)— 2026 年 7 月费率
- 在 Droplet 上,您必须自己处理安全补丁、防火墙、备份——这些是提供商之前处理的任务
准备您的 Droplet 并安装 LEMP/LAMP 堆栈
在创建 Droplet 之前,请根据您在共享主机上的当前网站流量和资源使用情况评估合适的大小。对于具有中等流量的典型 WordPress 或 CMS 网站,2 GiB RAM / 2 vCPU / 60 GB SSD 计划($18/月)或 4 GiB RAM / 2 vCPU / 80 GB SSD($24/月)通常足以开始。较小的静态网站或低流量博客可能从 1 GiB RAM / 1 vCPU ($6/月)开始(截至 2026 年 7 月的基础共享 CPU 定价)。对于泰国用户,sgp1(新加坡)区域提供最低延迟,blr1(班加罗尔)是第二选择。首次 DigitalOcean 用户注册后的 60 天内可获得 $200 的免费试用额度——足以测试您的迁移,然后再承诺付费服务。获取 $200 免费额度 →
创建 Droplet 后(建议使用 Ubuntu 24.04 LTS),第一步是设置 SSH 密钥身份验证而不是密码登录,在您的本地计算机上使用 ssh-keygen -t ed25519 -C "[email protected]",然后在配置 Droplet 时选择此公钥。接下来,通过 ssh root@your_droplet_ip 登录并在安装任何内容之前使用 apt update && apt upgrade -y 更新系统。
对于您的网络堆栈,您有两种主要方法,它们紧密镜像您的旧 cPanel 环境:通过 apt install nginx mysql-server php-fpm php-mysql -y 安装 LEMP(Linux、Nginx、MySQL、PHP),或 LAMP(Linux、Apache、MySQL、PHP),其行为更像旧 cPanel 上的 Apache,可以用 apt install apache2 mysql-server php libapache2-mod-php php-mysql -y 安装。您的选择取决于您的网站对 .htaccess 重写规则的依赖程度,因为 Nginx 不直接读取 .htaccess 文件,需要您将规则转换为服务器块。
安装堆栈后,立即使用 ufw 设置基础防火墙:ufw allow OpenSSH、ufw allow 'Nginx Full'(或者如果使用 LAMP 则 'Apache Full'),然后使用 ufw enable 启用它。在开始从旧网站迁移真实文件之前执行此操作,以便您的新服务器在任何传入流量之前都具有基线安全性。
- 按当前流量选择 Droplet 大小:小型网站 1GiB/$6、典型 CMS 2-4GiB/$18-24/月(2026 年 7 月)
- 对于泰国用户,优先选择 sgp1(新加坡)区域,其次是 blr1(班加罗尔)
- 在上线之前设置 SSH 密钥——从创建 Droplet 的那一刻起就替换密码登录
迁移网站文件和数据库
首先备份所有网站文件从您的旧托管提供商。如果您的共享主机提供 SSH 访问权限(某些提供商确实提供),您可以使用 tar -czvf public_html.tar.gz public_html/ 压缩您的网络文件夹,并使用 scp user@oldserver:/home/user/public_html.tar.gz . 直接将其传输到新 Droplet。或者,对于增量同步(对于您在最终切换之前将多次同步的大文件集很有用),使用 rsync -avz ./public_html/ user@newserver:/var/www/yourdomain/,这将在随后的运行中仅复制更改的文件——在您实际切换日期前节省时间。如果您的旧主机不提供 SSH,使用 cPanel 的文件管理器创建 zip,然后通过 FTP/SFTP 下载。
对于您的 MySQL/MariaDB 数据库,在旧服务器上使用 mysqldump -u user -p dbname > backup.sql 导出所有内容,然后使用 scp backup.sql user@newserver:/tmp/ 将文件转移到新 Droplet,并用 mysql -u user -p newdbname < backup.sql 导入回来。对于具有多个数据库的网站,逐一处理它们,并在丢弃备份之前验证转储文件大小和表计数与源匹配。
文件和数据库就位后,更新应用程序的配置文件以指向新数据库。对于 WordPress,那是 wp-config.php;对于现代框架,通常是 .env。设置适当的权限以便网络服务器可以正确访问文件:chown -R www-data:www-data /var/www/yourdomain 和 find /var/www/yourdomain -type d -exec chmod 755 {} \; 用于目录,加 find /var/www/yourdomain -type f -exec chmod 644 {} \; 用于文件。在通过 Droplet 的 IP 或通过 /etc/hosts 切换 DNS 之前测试网站以确认所有工作正常。
在实际 DNS 切换前几小时(甚至几分钟)运行最后一次文件和数据库同步,以获取在准备阶段期间可能发生的最新更改。这对于具有持续数据更新的网站(如电子商务或成员系统)特别重要,以最小化过渡期间的数据丢失。
- 使用 tar+scp 压缩和传输文件,或使用 rsync -avz 进行增量同步
- 使用 mysqldump -u user -p dbname > backup.sql 导出数据库,用 mysql -u user -p newdbname < backup.sql 导入
- 更新应用程序配置文件(wp-config.php、.env)以指向 Droplet 上的新数据库
- 使用 chown -R www-data:www-data 和 chmod 755/644 设置权限
- 在您实际 DNS 切换之前再同步一次文件和数据库以避免数据丢失
使用零停机时间进行 DNS 迁移(TTL/切换)
最常被忽视但至关重要的步骤是提前准备您的 DNS。降低相关 DNS 记录的 TTL(生存时间)——特别是主域和 www 的 A 记录——降低到低值如 300 秒(5 分钟)至少在您实际切换前 24-48 小时。全世界 DNS 解析程序根据其 TTL 缓存记录;如果您当前的 TTL 很高(小时或天),更改会缓慢传播到所有用户。
在切换 DNS 之前,通过编辑本地 /etc/hosts 文件彻底测试您在新 Droplet 上的网站——添加一行如 YOUR_NEW_IP yourdomain.com www.yourdomain.com——强制您的浏览器直接访问新服务器。在让真实用户看到任何东西之前,完全测试登录、联系表单、购物车(如果存在)和关键页面。
当您确信时,登录您的 DNS 提供商(DigitalOcean DNS 或您现有的注册商)并更新 A 记录指向您的新 Droplet 的 IP。保存后,使用 dig yourdomain.com +short 从多个计算机/网络验证传播,或使用 dig +trace yourdomain.com 进行详细的解析路径。结果可能在位置之间暂时变化,因为某些 ISP 解析程序仍然在原始 TTL 过期前持有旧记录。
关键窗口是您切换 DNS 后的 24-48 小时:保持旧服务器运行(不要立即关闭它或取消服务)以处理其解析程序仍在转换期间将请求发送到旧 IP 的用户。如果您的网站在此窗口期间处理更新——订单、成员资格等——计划将任何新数据同步回新服务器。一旦您确信所有流量已转移到新 Droplet 并且充分的时间已经过去,将 TTL 恢复为正常值(3600 秒或更高)并最终取消旧主机。
- 在您实际切换前至少 24-48 小时将 A 记录的 TTL 降低到大约 300 秒
- 在切换 DNS 之前通过 /etc/hosts 在新 Droplet 上测试您的网站以验证所有功能正常工作
- 使用 dig yourdomain.com +short 或 dig +trace 检查 DNS 传播
迁移后检查清单
让我们意外的一点是:切换 DNS 并确认您的网站在新 Droplet 上运行后,验证这些项目以称迁移真正完成。从 SSL 证书开始:您的旧证书在新服务器上不会工作,因此通过 Certbot 使用 Let's Encrypt 颁发新证书,例如 certbot --nginx -d yourdomain.com -d www.yourdomain.com(或 LAMP 则 --apache),它还设置自动续期。
接下来,来自旧 cPanel 的 cron 作业不会自动迁移。任务如自动备份、每日电子邮件摘要或临时文件清理在您的 Droplet 上不会存在,除非您重新创建它们。参考您的旧 cPanel cron 列表并在关闭旧服务之前使用 crontab -e 再次设置它们。
您的域的电子邮件是一个单独的问题,因为 MX 记录不会自动随着您的 A 记录移动。如果您的旧主机提供域电子邮件(例如 [email protected]),决定是否在您的 Droplet 上自己运行邮件服务器(这有可交付性的复杂性),或迁移到单独的电子邮件服务并相应地指向您的 MX 记录。
在 DNS 完全传播后在您的实时域上重新测试关键功能——发送电子邮件的联系表单、登录/注册系统和付款页面(如果适用)。从 DigitalOcean 设置免费监控(CPU/RAM/磁盘/带宽指标和每个帐户 1 个免费正常运行时间检查)以立即了解您的新服务器是否有问题。最后,在您已配置的 ufw 之上启用 DigitalOcean 的免费云防火墙(无额外成本)以限制对开放端口的外部访问网络层。
- DNS 切换后立即使用 certbot --nginx -d yourdomain.com -d www.yourdomain.com 颁发新 SSL
- 使用您的旧 cPanel 列表通过 crontab -e 重新创建 cron 作业
- 单独计划域电子邮件——MX 记录不与您的 A 记录一起自动迁移
- 在 DNS 完全传播后在您的实时域上重新测试表单/登录/结账
何时使用这个(真实世界用例)
从共享 cPanel 主机迁移到 Droplet 的意义在于您的网站明确达到共享主机的限制时——例如,当您重复达到 CPU/inode 限制或收到警告说您超过计划的资源配额时。迁移到具有专用资源的 Droplet 通常比继续升级共享计划更好地解决这个问题。 另一个常见情况是当您的开发团队需要共享主机不支持的特定堆栈或扩展程序时:比您的提供商提供的更新的 PHP 版本、持续的后台工作者或队列处理器、Redis 或 Elasticsearch 服务,或用提供商不容易支持的非 PHP 语言(Node.js、Python)编写的应用程序。Droplet 的 root 访问权限为您提供了确切需要的内容。 从财务上讲,运行多个网站的团队想要整合到一个服务器进行集中管理的团队,或想要基于所选规格而不是分层共享计划的可预测成本的团队,经常发现 Droplets 提供更好的成本效益比。 相反,对于非常小的网站——流量低的公司网站、没有开发团队维护基础设施、没有特殊技术需求——共享主机配合 cPanel 仍然是明智的。您以技术控制权交换提供商处理安全补丁和正常运行时间,如果您的团队中没有人计划运行服务器,这是有价值的安心。迁移到 Droplet 而没有持续维护计划会造成安全风险(未修补的软件),这超过了好处。
- 定期在共享计划上达到 CPU/inode 限制的网站
- 需要共享主机不支持的更新 PHP 版本、后台工作者/队列或 Redis 等服务
- 用 Node.js 或 Python 等非 PHP 语言编写的网络应用程序
- 想要在一个服务器上运行多个网站或通过规格选择控制成本
- 小型网站、低流量、没有 ops 团队——共享主机配合 cPanel 仍然是明智的
常见错误及其避免方法
最频繁的错误是完全忽视域电子邮件。许多团队专注于迁移网站而忘记 MX 记录指向旧邮件服务器。当您取消旧主机时,您的域电子邮件立即停止工作。通过单独查看 MX 记录(与 A 记录分开)并在关闭旧服务之前决定您的电子邮件计划来防止这种情况。
另一个常见陷阱是在彻底测试新 Droplet 上的网站之前切换 DNS。通过 /etc/hosts 事先测试会在真实用户看到任何东西之前抓住断裂的页面或错误,但许多人跳过此步骤并在实时发现问题。
旧和新服务器之间的版本不匹配使许多迁移陷入困境——特别是具有许多插件的 WordPress 或依赖特定 PHP 扩展程序的旧应用程序。通过在迁移之前记录旧服务器的 PHP 版本和扩展程序,然后在测试之前在新 Droplet 上匹配它们来防止这种情况。
忘记重新创建 cron 作业是另一个无声的失败:网站起初看起来很好,然后每日备份停止运行、自动化电子邮件停止,或临时文件填满您的磁盘。保持所有来自旧 cPanel 的 cron 作业的列表,并在关闭旧主机之前使用 crontab -e 重新创建每个。
最后,在迁移之前不备份很冒险。即使计划完美,文件传输也可能损坏数据或导入可能失败。始终创建旧服务器的文件和数据库的完整备份到单独的存储,以防任何事情出错时有恢复的东西。
- 忘记计划域电子邮件——A 记录切换后 MX 记录保留在旧服务器,破坏电子邮件
- 在通过 /etc/hosts 测试之前切换 DNS,所以用户看到断裂的页面
- 旧和新服务器之间的 PHP 版本/扩展不匹配,导致插件/功能中断
平稳迁移的最佳实践
首先,创建一个暂存 Droplet(与您的生产 Droplet 分开)来排练安装、文件迁移和数据库导入过程,然后再接触您的实时服务器。这使您能够早期发现版本或扩展程序问题,而不是当真实用户受到影响时。 其次,从第一天开始应用安全:使用 SSH 密钥而不是密码登录、禁用远程 root 登录并创建非 root sudo 用户、启用 ufw 和 DigitalOcean 的免费云防火墙作为两层保护,并关闭所有不必要的端口。这比许多共享主机默认允许的更严格。 第三,立即设置备份:DigitalOcean 的 Droplet 快照按每月 $0.06/GiB 收费用于全系统备份,Volumes 按每月 $0.10/GiB 收费用于可扩展的单独存储。结合计划的数据库备份(通过 cron)和 Droplet 快照,以便您可以恢复系统范围和数据库特定的故障。 第四,使用 DigitalOcean 的免费监控持续监控您的 Droplet 的资源。跟踪您的初始大小选择是否适合您的实际流量,并在 RAM 或 CPU 变紧时调整大小(垂直扩展)——您可以升级而不需要重新迁移所有数据。 最后,在您的团队的运行手册中记录您的整个设置:每个安装命令、配置文件位置、cron 作业和防火墙规则。这使您的团队在将来可以更快地排除故障或重建环境,而不仅仅依赖于执行第一次迁移的人。
- 创建暂存 Droplet 来排练安装/迁移/导入,然后再接触生产环境
- SSH 密钥 + 非 root sudo 用户 + ufw 和免费云防火墙作为两层保护
- 从第一天开始设置备份:Droplet 快照 $0.06/GiB + Volumes $0.10/GiB/月(2026 年 7 月)
- 定期监控 DigitalOcean 的免费监控;如果资源接近限制则考虑垂直调整
- 在运行手册中记录整个设置(命令、配置位置、cron、防火墙规则)供您的团队使用