检查点:部署到 AWS
把应用真正搬上云。
3 天
Checkpoint: 部署上线
你将完成什么
把 Todo 应用部署到生产服务器,包含:
- 代码推送(Git + SSH)
- 后端服务(PM2 守护)
- 前端静态文件(Nginx)
- 数据库迁移
验收标准
- 域名可访问
- 前端页面正常
- API 接口可用
- 数据库数据持久
部署脚本
#!/bin/bash
# deploy.sh
set -e
echo "开始部署..."
# 1. 拉代码
cd /var/www/todo
git pull origin main
# 2. 安装依赖
cd /var/www/todo/server
npm install --production
cd /var/www/todo/client
npm install
npm run build
# 3. 数据库迁移
# 手动执行 SQL 文件,或用迁移工具
# 4. 重启服务
pm2 restart todo-api
# 5. 重启 Nginx
sudo nginx -t && sudo systemctl restart nginx
echo "部署完成!"
手动步骤
# 1. 服务器上克隆代码
git clone https://github.com/yourname/todo.git /var/www/todo
# 2. 配置环境变量
cp /var/www/todo/server/.env.example /var/www/todo/server/.env
vim /var/www/todo/server/.env
# 3. 安装后端依赖
cd /var/www/todo/server
npm install --production
# 4. 安装前端依赖并构建
cd /var/www/todo/client
npm install
npm run build
# 5. 用 PM2 启动后端
cd /var/www/todo/server
pm2 start app.js --name todo-api
pm2 save
pm2 startup
# 6. 配置 Nginx
sudo vim /etc/nginx/sites-available/todo
sudo ln -s /etc/nginx/sites-available/todo /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx
# 7. 配置 HTTPS
sudo certbot --nginx -d yourdomain.com
常见卡点
- 环境变量没配:确认
.env文件存在,密钥正确。 - 端口被占用:
netstat -tlnp | grep 3000,杀掉旧进程。 - Nginx 配置错误:
nginx -t测试配置,看错误提示。 - 前端路由 404:Nginx 配置
try_files $uri /index.html。
回滚策略
# 紧急回滚
cd /var/www/todo
git reset --hard HEAD~1 # 回滚到上一个版本
git pull origin main # 或者拉指定 tag
# 重启服务
pm2 restart todo-api
下一步
完成本课后,进入「CI/CD」阶段,实现自动化部署。
加载本节练习…