Files
template-10556/README-Production.md
2025-07-22 13:27:07 +08:00

5.9 KiB
Raw Permalink Blame History

🚀 AI Chat 生产环境部署指南

📋 概述

本指南提供了完整的生产环境Docker部署方案包括安全配置、性能优化、监控和自动化部署。

🏗️ 架构说明

┌─────────────────┐    ┌─────────────────┐    ┌─────────────────┐
│   用户请求      │───▶│  Nginx Proxy    │───▶│   AI Chat App   │
│                 │    │  (HTTPS/SSL)    │    │   (Frontend)    │
└─────────────────┘    └─────────────────┘    └─────────────────┘
                              │
                              ▼
                       ┌─────────────────┐
                       │   日志 & 监控    │
                       │  (可选组件)     │
                       └─────────────────┘

🚀 快速部署

1. 基础HTTP部署

# 一键部署(推荐)
./deploy-prod.sh

# 或手动部署
docker-compose -f docker-compose.prod.yml up -d --build

访问地址:http://your-server-ip

2. HTTPS部署

# 1. 配置SSL证书
./ssl-setup.sh

# 2. HTTPS部署
./deploy-prod.sh https

访问地址:https://your-domain.com

🔧 详细配置

环境要求

  • 操作系统: Linux (Ubuntu 20.04+ / CentOS 8+ 推荐)
  • Docker: 20.10+
  • Docker Compose: 2.0+
  • 内存: 最低 1GB推荐 2GB+
  • 存储: 最低 10GB 可用空间
  • 网络: 80/443 端口开放

文件说明

文件 说明
Dockerfile.prod 生产环境多阶段构建
docker-compose.prod.yml 生产环境编排配置
nginx.prod.conf 生产级Nginx配置
nginx-proxy.conf HTTPS反向代理配置
deploy-prod.sh 自动化部署脚本
ssl-setup.sh SSL证书配置脚本
.env.production 生产环境变量

🔒 SSL/HTTPS 配置

Let's Encrypt (推荐)

# 自动配置Let's Encrypt证书
./ssl-setup.sh
# 选择选项1输入域名和邮箱

自定义证书

# 将证书文件放入ssl目录
cp your-cert.pem ssl/fullchain.pem
cp your-key.pem ssl/privkey.pem

# 部署HTTPS
./deploy-prod.sh https

📊 监控和日志

启用监控模式

./deploy-prod.sh monitoring

包含以下组件:

  • Watchtower: 自动更新容器
  • Promtail: 日志收集(可选)

日志查看

# 应用日志
docker-compose -f docker-compose.prod.yml logs -f ai-chat-web

# Nginx访问日志
tail -f logs/nginx/access.log

# 错误日志
tail -f logs/nginx/error.log

🔧 运维命令

基础操作

# 查看服务状态
docker-compose -f docker-compose.prod.yml ps

# 重启服务
docker-compose -f docker-compose.prod.yml restart

# 停止服务
docker-compose -f docker-compose.prod.yml down

# 查看资源使用
docker stats

更新部署

# 1. 拉取最新代码
git pull

# 2. 重新部署
./deploy-prod.sh

# 3. 清理旧镜像
docker image prune -f

备份和恢复

# 自动备份(部署时自动执行)
tar -czf backup_$(date +%Y%m%d_%H%M%S).tar.gz dist/ logs/

# 恢复备份
tar -xzf backup_20240101_120000.tar.gz

🛡️ 安全配置

已启用的安全特性

HTTPS强制重定向
安全HTTP头
HSTS (HTTP Strict Transport Security)
XSS保护
内容类型嗅探保护
点击劫持保护
CSP (Content Security Policy)
非root用户运行

额外安全建议

  1. 防火墙配置
# 只开放必要端口
ufw allow 22    # SSH
ufw allow 80    # HTTP
ufw allow 443   # HTTPS
ufw enable
  1. 定期更新
# 系统更新
sudo apt update && sudo apt upgrade -y

# Docker镜像更新Watchtower自动处理

🚨 故障排除

常见问题

  1. 容器启动失败
# 查看详细错误
docker-compose -f docker-compose.prod.yml logs ai-chat-web

# 检查端口占用
netstat -tlnp | grep :80
  1. SSL证书问题
# 检查证书有效性
openssl x509 -in ssl/fullchain.pem -text -noout

# 重新生成证书
./ssl-setup.sh
  1. 性能问题
# 查看资源使用
docker stats

# 查看系统负载
htop

健康检查

# 应用健康检查
curl http://localhost/health

# 容器健康状态
docker-compose -f docker-compose.prod.yml ps

📈 性能优化

已启用的优化

Gzip压缩 - 减少传输大小
静态资源缓存 - 1年缓存期
HTTP/2支持 - 提升加载速度
连接复用 - 减少连接开销
多阶段构建 - 减小镜像大小

进一步优化

  1. CDN配置
# 配置CDN加速静态资源
# 修改nginx.prod.conf中的静态资源处理
  1. 缓存策略
# 根据业务需求调整缓存时间
# 编辑nginx.prod.conf

🔄 CI/CD 集成

GitHub Actions 示例

# .github/workflows/deploy.yml
name: Deploy to Production

on:
  push:
    branches: [ main ]

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    
    - name: Deploy to server
      run: |
        ssh user@server 'cd /path/to/app && git pull && ./deploy-prod.sh'

📞 技术支持

如果遇到问题,请检查:

  1. 日志文件: logs/nginx/error.log
  2. 容器状态: docker-compose ps
  3. 系统资源: htop, df -h
  4. 网络连接: netstat -tlnp

🎯 生产环境检查清单

  • 域名DNS解析正确
  • SSL证书配置完成
  • 防火墙规则设置
  • 备份策略配置
  • 监控告警设置
  • 性能测试通过
  • 安全扫描通过
  • 文档更新完成

🎉 恭喜您的AI Chat应用已成功部署到生产环境