如何在 AWS 上部署动态 Web 应用程序(初学者友好指南)

发布: (2026年2月22日 GMT+8 05:39)
6 分钟阅读
原文: Dev.to

Source: Dev.to

在 AWS 上部署动态 Web 应用程序,起初可能会让人感到压力山大,尤其是涉及的服务众多时。本文指南通过一个简单、实用的方法,帮助初学者学习云计算和 DevOps。

什么是动态网页应用?

与静态网站不同,动态网页应用:

  • 处理用户输入
  • 连接数据库
  • 实时生成内容

常见示例包括登录系统、仪表板、电子商务网站以及使用 PHP 构建的网页应用。

AWS Services We’ll Use

部署依赖于核心的 AWS 服务,如 EC2、VPC、安全组、S3、IAM、RDS、应用负载均衡器(ALB)、自动伸缩以及相关的网络组件。

分步部署

1. 选择区域

选择您希望托管应用程序的 AWS 区域。

2. 创建 VPC

为 VPC 启用 DNS 主机名。

3. 设置安全组

安全组用途入站规则
EICE‑sg (EC2 Instance Connect Endpoint)连接端点SSH(限制为 VPC CIDR)
ALB‑sg应用负载均衡器HTTP 与 HTTPS(允许来自任何位置)
web‑sgWeb 服务器HTTP 与 HTTPS(允许来自 ALB‑sg),SSH(限制为 EICE‑sg)
db‑sg数据库MySQL(允许来自 web‑sg)
dms‑sg数据迁移SSH(限制为 EICE‑sg)

4. 创建 EC2 Instance Connect Endpoint

  • 将其放置在私有子网中(例如 private-app-az2)。
  • 关联 EICE‑sg

5. 创建 S3 存储桶

将您的应用代码上传到该存储桶。

6. 创建 IAM 策略

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetObject",
        "s3:ListBucket"
      ],
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "secretsmanager:GetSecretValue",
        "secretsmanager:DescribeSecret"
      ],
      "Resource": "*"
    }
  ]
}

练习时可以允许所有资源;在生产环境请限制 ARN。

7. 创建 IAM 角色

  • 信任实体:EC2
  • 附加上一步创建的策略。
  • 为角色起一个有意义的名称(例如 WebAppS3AccessRole)。

8. 创建 DB 子网组

选择 VPC 并在不同可用区中选取两个私有子网。

9. 启动 RDS MySQL 实例

  1. Standard createMySQL(最新引擎版本)。
  2. 选择 Free Tier
  3. 设置 DB 实例标识符和初始数据库名称。
  4. 为凭证启用 AWS Secrets Manager
  5. 使用之前创建的 子网组db‑sg
  6. 选择可用区并根据需要配置其他设置。

10. 将数据迁移到 RDS

  1. 在私有子网(private-app-az2)中启动一台临时 EC2 实例(不使用密钥对),并关联 dms‑sg
  2. 附加第 7 步创建的 IAM 角色。
  3. 通过控制台连接并运行迁移脚本。
  4. 脚本可在以下位置获取:

迁移完成后,终止临时 EC2 实例。

11. 部署 Web 服务器

  1. 在私有子网中启动另一台 EC2 实例(不使用密钥对),并关联 web‑sg
  2. 附加 S3 访问角色。
  3. 运行部署脚本(同上 GitHub 仓库),从 S3 拉取代码并启动应用。

12. 创建目标组

  • 类型:Instance
  • VPC:您的 VPC
  • 健康检查路径:默认(或自定义)— 包含 HTTP 状态码 200,301,302
  • 注册 Web 服务器实例。

13. 设置应用负载均衡器

  1. 选择 VPC 和两个公共子网(每个可用区各一个)。
  2. 关联 ALB‑sg
  3. 监听器
    • HTTP → 重定向到 HTTPS(完整 URL)。
    • HTTPS → 转发到上一步创建的目标组;附加您的 SSL 证书。

14. 配置 DNS

创建一个 DNS **A(别名)**记录(例如 www.example.com),指向 ALB。

现在您可以通过域名访问 Web 应用。

15. 为流量高峰做好准备 – 自动伸缩

  1. 从运行中的 Web 服务器实例 创建 AMI(操作 → 镜像 → 创建镜像)。
  2. 启动模板:定义 AMI、实例类型、安全组、IAM 角色等。
  3. 自动伸缩组
    • VPC:选择私有子网。
    • 关联 ALB 和目标组。
    • 配置健康检查和期望容量(最小/最大/期望)。

自动伸缩组将在流量增长时启动额外实例,并在负载下降时自动终止它们。

最后思考

学习 AWS 在构建真实项目时会更容易。部署一个动态网页应用是一个极好的入门练习,能够帮助你理解云服务如何协同工作。试一试吧,敬请关注我们更多关于 AWS、Docker 和云计算的实用文章。

0 浏览
Back to Blog

相关文章

阅读更多 »

Subnetting 详解

什么是 Subnetting?可以把它想象成把一栋大型公寓楼拆分成不同的楼层。每层 subnet 拥有自己的编号主机(hosts),以及建筑……