Ubuntu 应用在 AWS 上的部署与排错
High Contrast
Dark Mode
Light Mode
Sepia
Forest
2 min read449 words

Ubuntu 应用在 AWS 上的部署与排错

到了 AWS 以后,排障思路不变:域名 → 入口 → 端口 → 进程 → 日志,只是每一层有了 AWS 专属的服务名和检查命令。

AWS 排障链路

graph TD A[Route 53 解析] --> B[ALB 入口] B --> C[Security Group 规则] C --> D[EC2 Nginx] D --> E[应用进程] E --> F[CloudWatch 日志]

常见故障对照表

现象 最可能原因 排查命令
域名无法解析 Route 53 NS 未更新 / TTL 未到期 dig myapp.com NS
ALB 返回 503 目标组健康检查失败 控制台 → 目标组 → 查看健康状态
ALB 返回 502 Nginx 到应用端口不通 curl -v http://127.0.0.1:3000/health
SSH 连不上 Security Group 未开放 22 端口 aws ec2 describe-security-groups --group-ids sg-xxxx
服务正常但响应慢 CPU / 内存撑满 CloudWatch → EC2 指标

部署一次完整流程(示例)

# 1. 在 EC2 上拉取最新代码
cd /opt/myapp
git pull origin main
# 2. 安装依赖并构建
npm ci && npm run build
# 3. 重启应用服务
sudo systemctl restart myapp
# 4. 确认应用进程正常
systemctl status myapp
curl -f http://127.0.0.1:3000/health
# 5. 查看 CloudWatch 日志(需安装 CloudWatch Agent)
aws logs tail /myapp/app --follow

排查 ALB 健康检查失败

ALB 健康检查失败是 AWS 环境最常见问题,排查顺序:

# Step 1:确认应用在 EC2 内部是否正常响应
curl -v http://127.0.0.1:3000/health
# 期望:HTTP 200
# Step 2:确认 Security Group 允许 ALB 访问应用端口
# ALB 与 EC2 在同一 VPC,Security Group 入站应允许来自 ALB SG 的流量
# Step 3:确认 Nginx 转发配置正确
nginx -t
grep proxy_pass /etc/nginx/sites-enabled/myapp

常见误区

本节执行清单

下一章GCP 版本实战——用同一逻辑映射到 GCP。