Skip to content
返回部署

部署到 AWS EC2

AWS 虚拟服务器,完全 OS 控制,经 user data、Elastic Beanstalk 或 SSH 部署。

平台高级

为什么

EC2 完全控制 OS 和运行时 — 装任何软件、跑任何进程、挂任何存储。最灵活的 AWS 计算,适合遗留应用和自定义栈。

平台即服务采用率 2024 年增长 24%,团队从虚拟机管理转向 git push 部署。the cloud infrastructure market reached $330B in 2024, growing 22% year-over-year (Synergy Research),PaaS 层捕获了大多数新工作负载。

何时使用

遗留应用、自定义软件栈和需完整 OS 访问的工作负载用 EC2。容器化/serverless 应用优先 Fargate/Lambda。

如何做

1. 启动 — AMI(Amazon Linux 2023 或 Ubuntu),实例类型,密钥对 2. User data — 首次启动运行 shell 脚本安装应用 3. 安全组 — 仅开所需端口(80、443、22) 4. Elastic IP — 生产静态 IP 5. 负载均衡 — ALB 做 HTTPS、健康检查、多 AZ 6. 自动扩缩 — ASG 按需扩缩实例 7. 部署 — CodeDeploy、SSH+git pull 或 EC2 上 Docker

示例

# user-data.sh — 首次启动运行 #!/bin/bash yum update -y yum install -y docker systemctl start docker docker run -d -p 80:3000 myapp:latest # 经 AWS CLI 启动 aws ec2 run-instances --image-id ami-012345 --instance-type t3.medium --user-data file://user-data.sh --security-group-ids sg-abc123 # 生产 ALB + ASG aws elbv2 create-load-balancer --name myapp-alb --subnets subnet-1 subnet-2

常见问题

  • ⚠安全组过开 — 所有端口 0.0.0.0/0,仅限所需端口
  • ⚠无自动恢复 — 实例死亡无 ASG,需手动重启
  • ⚠环境间配置漂移 — 使用基础设施即代码(Terraform/Pulumi)保持 dev/staging/prod 一致

最佳实践

  • ✓用 Amazon Linux 2023 AMI — EC2 优化、免费、AWS 支持
  • ✓始终用 ASG + ALB — 自动愈合失败实例并跨 AZ 分布
  • ✓设置健康检查和优雅关闭 — 处理 SIGTERM 以在退出前排空进行中的请求

常见问题解答