🎉 欢迎使用 AI合租 文档系统!返回主站 →
文档中心
💻 Vibe Coding
Day 11: 部署上线

Day 11: 部署上线

将应用部署到生产环境,让全世界都能访问你的项目。

部署前准备

环境变量配置

你:配置生产环境的环境变量,包含数据库连接、API密钥等
# .env.production
NODE_ENV=production
DATABASE_URL=mongodb://prod-server:27017/myapp
JWT_SECRET=your-super-secret-key
API_BASE_URL=https://api.yourdomain.com

构建优化

你:优化前端构建配置,减少包体积,启用压缩

安全配置

你:添加安全中间件,防止常见的 Web 攻击
// 安全配置
app.use(helmet()); // 设置安全响应头
app.use(cors({     // CORS 配置
  origin: ['https://yourdomain.com'],
  credentials: true
}));
app.use(rateLimit({ // 限流
  windowMs: 15 * 60 * 1000,
  max: 100
}));

前端部署

Vercel 部署

你:将 Next.js 应用部署到 Vercel,配置自定义域名

步骤:

  1. 连接 GitHub 仓库
  2. 自动构建和部署
  3. 配置环境变量
  4. 绑定自定义域名

Netlify 部署

你:将 React 应用部署到 Netlify,配置重定向规则

阿里云 OSS 静态托管

你:将前端应用部署到阿里云 OSS,配置 CDN 加速

Nginx 配置

你:配置 Nginx 反向代理,实现前后端分离部署
server {
    listen 80;
    server_name yourdomain.com;
 
    # 前端静态文件
    location / {
        root /var/www/frontend/dist;
        try_files $uri $uri/ /index.html;
    }
 
    # API 请求代理
    location /api/ {
        proxy_pass http://localhost:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

后端部署

云服务器部署

你:在阿里云 ECS 上部署 Node.js 应用,使用 PM2 进程管理
# 安装 PM2
npm install -g pm2
 
# 启动应用
pm2 start app.js --name "my-api"
 
# 开机自启
pm2 startup
pm2 save

Docker 容器化

你:将 Node.js 应用 Docker 化,编写 Dockerfile 和 docker-compose
FROM node:18-alpine
 
WORKDIR /app
 
COPY package*.json ./
RUN npm install --only=production
 
COPY . .
 
EXPOSE 3000
 
CMD ["node", "app.js"]
# docker-compose.yml
version: '3.8'
services:
  app:
    build: .
    ports:
      - "3000:3000"
    environment:
      - NODE_ENV=production
    depends_on:
      - mongodb
 
  mongodb:
    image: mongo:5
    volumes:
      - mongo_data:/data/db
    environment:
      - MONGO_INITDB_ROOT_USERNAME=admin
      - MONGO_INITDB_ROOT_PASSWORD=password
 
volumes:
  mongo_data:

Serverless 部署

你:将 API 部署为云函数(阿里云函数计算),实现按需付费

数据库部署

MongoDB Atlas

你:将数据库迁移到 MongoDB Atlas 云数据库

阿里云 RDS

你:配置阿里云 RDS MySQL,设置备份策略

Redis 缓存

你:配置阿里云 Redis,优化数据库查询性能

HTTPS 配置

Let's Encrypt 免费证书

你:用 Certbot 申请免费 SSL 证书,配置 HTTPS
# 安装 Certbot
sudo apt install certbot python3-certbot-nginx
 
# 申请证书
sudo certbot --nginx -d yourdomain.com
 
# 自动续期
sudo crontab -e
0 12 * * * /usr/bin/certbot renew --quiet

云服务 SSL

你:在阿里云配置 SSL 证书,实现 HTTPS 访问

域名和 CDN

域名解析

你:配置域名 DNS 解析,指向服务器 IP

CDN 加速

你:配置阿里云 CDN,加速静态资源访问

负载均衡

你:配置负载均衡器,实现多服务器部署

监控和日志

服务监控

你:配置服务器监控,监控 CPU、内存、磁盘使用情况

应用监控

你:集成应用监控,跟踪错误和性能指标

日志管理

你:配置日志收集和分析系统
// 日志配置
const winston = require('winston');
 
const logger = winston.createLogger({
  level: 'info',
  format: winston.format.json(),
  transports: [
    new winston.transports.File({ filename: 'error.log', level: 'error' }),
    new winston.transports.File({ filename: 'combined.log' }),
  ],
});
 
if (process.env.NODE_ENV !== 'production') {
  logger.add(new winston.transports.Console());
}

CI/CD 自动化部署

GitHub Actions 部署

你:配置 GitHub Actions,代码推送后自动部署到生产环境
name: Deploy to Production
 
on:
  push:
    branches: [main]
 
jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
 
      - name: Setup Node.js
        uses: actions/setup-node@v2
        with:
          node-version: '18'
 
      - name: Install dependencies
        run: npm install
 
      - name: Run tests
        run: npm test
 
      - name: Build application
        run: npm run build
 
      - name: Deploy to server
        uses: appleboy/ssh-action@v0.1.4
        with:
          host: ${{ secrets.HOST }}
          username: ${{ secrets.USERNAME }}
          key: ${{ secrets.PRIVATE_KEY }}
          script: |
            cd /var/www/myapp
            git pull origin main
            npm install --production
            pm2 restart myapp

蓝绿部署

你:实现蓝绿部署,确保零停机更新

备份和恢复

数据库备份

你:设置定时数据库备份,保存到云存储
#!/bin/bash
# 数据库备份脚本
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_FILE="backup_$DATE.sql"
 
# 备份数据库
mysqldump -u root -p$DB_PASSWORD myapp > $BACKUP_FILE
 
# 上传到云存储
aliyun oss cp $BACKUP_FILE oss://my-backup-bucket/
 
# 删除本地文件
rm $BACKUP_FILE

代码备份

你:配置代码仓库备份,防止代码丢失

灾难恢复

你:制定灾难恢复计划,服务器挂了怎么快速恢复

性能优化

静态资源优化

你:配置静态资源缓存,启用 Gzip 压缩

数据库优化

你:优化数据库查询,添加必要索引

缓存策略

你:配置多级缓存,提升响应速度

常见部署问题

端口占用

你:检查并解决端口冲突问题

权限问题

你:解决文件权限和用户权限问题

内存不足

你:优化应用内存使用,配置交换空间

跨域问题

你:解决生产环境的跨域访问问题

部署检查清单

上线前检查

  • 代码测试通过
  • 环境变量配置正确
  • 数据库连接正常
  • HTTPS 证书配置
  • 域名解析正确
  • 监控系统就绪

上线后检查

  • 网站正常访问
  • 功能测试通过
  • 性能指标正常
  • 错误监控正常
  • 备份系统工作
⚠️

部署安全提醒:生产环境的密码、密钥绝对不能提交到代码库,使用环境变量或密钥管理服务。

第十一天完成! 你已经学会部署应用到生产环境了。最后一天学习高级技巧。

下一步

Day 12: 高级技巧 - 掌握 Claude Code 的高级使用技巧


练习建议

  • 部署一个完整的全栈应用到云服务器
  • 配置 HTTPS 和域名访问
  • 体验一下自动化部署的便利性