当前位置: 首页 > news >正文

企业出海降本:如何将应用从 AWS EC2 快速无缝迁移至DigitalOcean Droplet

企业出海已经成为目前最热门的趋势。然而不论你是做跨境电商,还是短剧出海,或处于最热门的AI 赛道,你都需要使用海外的云主机或GPU云服务。海外一线的云服务平台尽管覆盖区域广泛,但是往往费用成本较高。所以降本始终是企业出海关注的重点。

DigitalOcean作为海外上市云服务平台,已服务60万企业用户。DigitalOcean以简单易用、价格实惠、性能稳定,以及一键部署与配置、托管数据库和内置监控等强大功能而受到青睐。这些特点使其成为初创公司、独立开发者和希望将更多精力放在构建而非管理基础设施的成长型团队的理想选择。

所以有许多用户都从一线云服务平台迁移至DigitalOcean,或将DigitalOcean作为多云部署的一部分。甚至有的客户从AWS 迁移至DigitalOcean之后,成功节省了60%的成本。

那么在 AWS EC2 上运行项目如何迁移到 DigitalOcean?

无论你是想降低基础设施成本、简化服务器管理,还是获得对环境的更多控制,本教程都会一步步教会你把一个正在运行中的应用,从 EC2 迁移到 DigitalOcean Droplet 。

本教程确保你能够复刻环境、以安全方式移动文件和数据,并在最小化停机时间的情况下完成迁移。

本教程特别适用于希望优化云基础设施的开发者、创业者和企业。通过从 AWS EC2 迁移到 DigitalOcean Droplet(DigitalOcean的云主机产品),用户可以获得这些好处:

  • 高性价比:与 AWS 相比,DigitalOcean 提供可预测且更低的定价,可显著降低基础设施成本。
  • 简洁易用:DigitalOcean 的用户友好的 UI 和简明的设置流程,让开发者无需具备丰富的云知识即可管理环境。
  • 对开发者友好的功能:一键部署与配置、托管数据库和内置监控等功能,简化了开发和部署流程。
  • 可扩展性:DigitalOcean 的基础设施可随需求扩展,让你能在应用流量激增时轻松调整资源。
  • 社区和支持:庞大的开发者社区和完善的文档,可以帮助你排查问题并优化设置。
  • 专注开发:减少基础设施管理的复杂性,让你有更多时间专注于构建和改进应用。

前期准备

在开始之前,请确保你具备以下条件:

  • 可访问你的 AWS EC2 实例(SSH 密钥或凭证)
  • 一个已完成注册的 DigitalOcean 账户(绑定信用卡或支付宝均可)
  • 了解基本的 Linux 服务器管理知识(命令行、SSH 等)
  • 熟悉你的应用技术栈(如 LAMP、Node.js、Docker)
  • 域名管理门户登录信息(如果需要更新 DNS 记录)

可选但推荐具备以下条件:

  • 用于测试迁移的预发布环境
  • 两台服务器上都已安装 rsync(大多数系统已预装)

另外,如果你需要了解自己的产品应该使用什么配置的DigitalOcean Droplet,可以阅读 DigitalOcean 中国区独家战略合作伙伴卓普云AI Droplet的官方博客《如何选择适合自己的 DigitalOcean Droplet 云服务器配置》。

如何从 AWS EC2 迁移到 Droplet

我们会将迁移过程分为10步,为你提供清晰、可重复的流程,将正在运行中的应用从 AWS 搬到 DigitalOcean。

在此之前,开发者和企业通常使用自定义脚本、供应商特定工具或手动备份来管理迁移,每种方式在复杂度、停机时间和风险上各有利弊。本方法聚焦简洁和可靠,使用 SSH、rsync 和 mysqldump 等广泛支持的工具来优化流程。

由于迁移目标是 DigitalOcean,你将受益于干净、现代的基础设施体验,让你更快、更少阻碍地从部署到扩展。

步骤 1:评估你的 AWS EC2 环境

在进行其他操作之前,先确认你的运行情况:

  • 检查已安装操作系统:通过 SSH 连接 EC2 实例,运行

cat /etc/os-release

  • 以显示操作系统详情。
  • 验证活动服务:运行

systemctl list-units --type=service --state=running

  • 列出所有活动服务,查找 Apache、MySQL 或 Node.js 等服务。
  • 定位应用文件和配置:检查常见目录(如 /var/www/html)来确定应用文件存放位置,或使用

find / -name 'your-app-name'

  • 定位特定文件或目录;在 /etc 或应用目录中检查配置文件。
  • 检查防火墙和安全组设置:在 AWS 管理控制台的 EC2 仪表板中,选中你的实例,在“安全”选项卡下查看关联的安全组,检查入站和出站规则;在实例内运行

sudo iptables -L

  • 查看本地防火墙规则。

此步骤有助于在 DigitalOcean 上准确复刻环境。

步骤 2:创建你的 DigitalOcean Droplet

在 DigitalOcean 控制面板中:

  1. 点击 Create > Droplets
  2. 选择所需的操作系统镜像。
  3. 选择与你的 EC2 实例规模相匹配的方案。
  4. 选择靠近用户的机房区域。
  5. 添加登录方式 —— 推荐使用 SSH 密钥,也可设置强密码。
  6. 设置 Droplet 主机名,添加标签(如需),并选择监控或卷等可选功能,然后创建 Droplet。

创建完成后,从控制面板记录你的 Droplet IP 地址。

步骤 3:配置 Droplet

通过以下任一方式访问新 Droplet:

  • 使用 SSH 密钥(推荐)

ssh root@your_droplet_ip

  • 如果密钥不在默认位置,指定路径:

ssh -i /path/to/private-key root@your_droplet_ip

  • 使用 root 密码:如果之前设置了密码认证,运行:

ssh root@your_droplet_ip

登录后,安装所需软件包,例如:

sudo apt update && sudo apt install nginx mysql-server php -y

(或根据你的栈安装 Node.js、Docker 等)

请确保复刻 EC2 上的所有系统配置。

步骤 4:传输应用文件

使用 rsync 从 EC2 拷贝文件到 Droplet:

rsync -avz -e "ssh -i /path/to/aws-key.pem" ubuntu@your_ec2_ip:/var/www/html/ root@your_droplet_ip:/var/www/html/

rsync 优势:速度快、安全,并保持文件权限。

步骤 5:导出并导入数据库(如适用)

如果应用使用数据库,需要将其从 EC2 实例迁移到 Droplet,以确保应用在新环境中正常运行。

选项 1:在 Droplet 上运行数据库

1、导出数据库

  • MySQL/MariaDB:使用 mysqldump
  • PostgreSQL:使用 pg_dump
  • MongoDB:使用 mongodump
  • Redis:使用 redis-cli 生成快照

2、传输导出文件

rsync -avz -e "ssh -i /path/to/aws-key.pem" ubuntu@your_ec2_ip:/path/to/backup.sql root@your_droplet_ip:/root/

3、在 Droplet 上导入:参照 DigitalOcean 上对应数据库的恢复教程。

选项2:使用DigitalOcean托管数据库(生产环境推荐)

作为替代方案,您无需在Droplet上自行托管数据库,而是可以通过DigitalOcean的托管数据库服务将这一责任移交给平台。这些数据库集群专为生产环境设计,完全托管且提供以下功能:

  • 免费每日备份与特定时间点恢复
  • 自动故障转移的高可用性
  • 端到端安全防护
  • 零停机时间扩展
  • 性能监控与指标分析

迁移至托管数据库的步骤:

  • 创建托管数据库:在DigitalOcean控制面板中,启动一个新的托管数据库实例。
  • 导出并导入数据:使用与上述相同的备份流程导出数据,然后通过提供的凭据将数据导入新的托管数据库。
  • 更新应用配置:将应用程序的数据库连接字符串更改为托管数据库集群提供的连接详情。

选择适合您的方案:

若您仅进行测试或运行小型项目,在Droplet上托管数据库可能已足够。但对于任何生产环境,托管数据库能带来长期且显著的优势。

专业建议:

托管数据库尤其适合以下场景:计划未来扩展规模、需要更高服务可用性保障,或希望省去备份、补丁更新及性能调优等运维工作。

步骤6 :更新配置文件

现在您的应用和数据库已托管在DigitalOcean上,需要更新配置文件以适配新环境。

1. Web服务器配置

如果您使用Nginx、Apache或其他Web服务器,请确保服务器块(server block)或虚拟主机配置文件已正确设置。您需要更新路径、服务器名称,以及可能的SSL证书。例如,对于Nginx,可通过以下命令编辑配置文件:

sudo nano /etc/nginx/sites-available/default

进行必要的修改(如更新文档根目录或服务器名称)。修改完成后,务必重新加载或重启Nginx以应用更改:

sudo systemctl restart nginx

2. 数据库连接字符串

更新应用的数据库连接字符串,使其指向DigitalOcean Droplet或托管数据库中的正确主机地址和凭据。这可能需要修改存储数据库连接信息的环境变量或配置文件。

例如,如果之前连接字符串指向EC2实例,现在需将其更改为Droplet的本地地址(localhost)或托管数据库的IP地址。

3. 环境变量

如果您的应用依赖环境变量(如API密钥、数据库凭据或其他配置设置),请确保在DigitalOcean Droplet中已正确设置。您可以通过以下方式配置环境变量:

  • 直接在Shell配置文件中设置(如 ~/.bashrc~/.bash_profile/etc/environment
  • 或在应用使用的 .env 文件中设置

示例:设置MySQL根密码的环境变量

export MYSQL_ROOT_PASSWORD='your_password'

然后加载变量:

source ~/.bashrc

步骤7 :在Droplet上测试应用

在将Droplet正式上线前,务必彻底测试应用,确保其在新环境中正常运行。以下是测试步骤:

1、检查文件完整性

确认所有应用文件已成功传输到Droplet,并确保文件权限正确且传输过程中未损坏。

2、测试数据库连接

验证应用能否连接到新数据库。若使用Web框架,可通过检查应用日志或直接在命令行执行数据库查询来排查连接错误。

3、执行功能测试

测试应用的各个方面(前端、后端、API等)。您可以手动测试,或使用自动化测试工具(如 Selenium、Postman 或 cURL)验证功能是否正常。

4、查看日志

检查系统和应用日志以发现潜在错误:

sudo journalctl -xe

检查对应日志文件(如 Nginx 错误日志 /var/log/nginx/error.log、MySQL 日志 /var/log/mysql/error.log)或应用自定义的日志路径。

步骤 8:更新 DNS 设置

  1. 登录域名管理控制面板。
  2. 将 A 记录指向你的 Droplet IP,例如:

@    A    your_droplet_ip

  1. 将 TTL 设置为较低值(如 300 秒),以加快生效。
  2. 等待 DNS 传播,通常几分钟至 24 小时,大多数情况下一小时内即可看到流量切换。

步骤 9:切换生产流量

DNS 完全指向 Droplet 后,即可将生产流量切换到 DigitalOcean,期间密切监控:

  • 流量监控:尤其在变更后头几小时。
  • 性能检查:确认在实际负载下表现正常。
  • 性能优化:根据需要调整 Droplet 配置,添加备份等。

步骤 10:最终清理

  1. 终止 EC2 实例:若不再使用,关闭或删除以避免额外费用。
  2. 复核安全设置:确保只开放必要端口(如 22、80、443)。
  3. 备份数据:设置自动备份或手动快照,可使用 SnapShooter 等服务。
  4. 规划扩展:根据应用增长,考虑垂直或水平扩展,如调整 Droplet 大小或添加负载均衡器。

常见问题

  1. 为什么要从 AWS EC2 迁移到 DigitalOcean Droplet? DigitalOcean 以高性价比而受到众多创业公司欢迎,其透明且可预测的定价可显著降低云服务成本;其简洁的界面和开发者友好的工具可优化部署流程,让你专注开发而非管理基础设施或花费大量时间学习云平台的使用。
  2. 更新 DNS 后,DNS 传播需要多长时间? 传播时间通常为几分钟至 24 小时,取决于 DNS 记录的 TTL 设置和各 ISP 的缓存策略。大多数情况下,一小时内即可开始看到流量切换。
  3. 迁移过程中遇到问题该怎么办? 首先检查系统和应用日志以定位错误;若自行无法解决,可联系 DigitalOcean 支持或使用其免费迁移服务以确保平滑过渡。
  4. 如何确保应用在 DigitalOcean 上表现良好? 使用 DigitalOcean 内置监控工具跟踪资源使用情况,识别瓶颈;根据需求调整 Droplet 大小、添加备份或负载均衡器,以保持高性能。
  5. 在 DigitalOcean 上如何备份数据? 可设置自动每周或每日备份,也可手动快照 Droplet。对于更全面的解决方案,可使用 SnapShooter 等第三方服务。

写在最后

在本教程中,我们已经带着你一步步将运行中的应用从 AWS EC2 迁移到 DigitalOcean Droplet —— 从评估现有环境、创建和配置 Droplet,到传输文件和数据库、测试和更新 DNS,实现最小化停机时间的平滑切换。

此过程能帮助你降低云成本、简化基础设施管理,并获得更灵活的部署环境。无论是独立项目还是生产级应用,迁移到 DigitalOcean 都能让你享受面向开发者的简洁定价和现代化体验。

每个应用栈各有差异,可能需要根据具体情况添加额外步骤。如需帮助,DigitalOcean 为符合条件的项目提供免费迁移服务,帮助你更快、更自信地完成过渡,​ 具体详情可直接咨询 DigitalOcean中国区独家战略合作伙伴卓普云AI Droplet。 ​

相关文章:

  • 揭开应用程序的神秘面纱:深入了解 AWS X-Ray
  • 【docker】启动临时MongoDB容器、挂载数据卷运行数据库服务,并通过备份文件恢复MongoDB数据库备份数据
  • SQLMesh增量模型实战指南:时间范围分区
  • nginx 核心功能
  • 鸟笼效应——AI与思维模型【84】
  • 组件轮播与样式结构重用实验
  • Android开发——实现一个计算器
  • 利用3DMAX + Corona Renderer打造现代住宅逼真效果!
  • DotNet 入门:(一) 环境安装
  • MarkItDown:如何高效将各类文档转换为适合 LLM 处理的 Markdown 格式
  • 进程优先级以及切换调度
  • 得物 小程序 6宫格 分析
  • C++/SDL 进阶游戏开发 —— 双人塔防(代号:村庄保卫战 16)
  • opencv 直方图均衡化
  • AimRT 从零到一:官方示例精讲 —— 三、Executor示例.md
  • 【AI News | 20250429】每日AI进展
  • OpenCV 图形API(71)图像与通道拼接函数-----从图像(GMat)中裁剪出一个矩形区域的操作函数 crop()
  • gitee 如何修改提交代码的邮箱
  • 训练神经网络的批量标准化(使用 PyTorch)
  • 内核常见问题汇总
  • 金砖国家外长会晤发表主席声明,强调南方国家合作
  • 民生银行一季度净利127.42亿降逾5%,营收增7.41%
  • 开门红背后的韧性密码:上海八大企业的“反脆弱”与“真功夫”
  • 伊朗港口爆炸死亡人数升至70人
  • 上海乐高乐园建设进入最后冲刺,开园限量纪念年卡将于5月开售
  • 全过程人民民主研究基地揭牌,为推动我国民主政治建设贡献上海智慧