5.9 KiB
5.9 KiB
🚀 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
2. HTTPS部署
# 1. 配置SSL证书
./ssl-setup.sh
# 2. HTTPS部署
./deploy-prod.sh https
🔧 详细配置
环境要求
- 操作系统: 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用户运行
额外安全建议
- 防火墙配置
# 只开放必要端口
ufw allow 22 # SSH
ufw allow 80 # HTTP
ufw allow 443 # HTTPS
ufw enable
- 定期更新
# 系统更新
sudo apt update && sudo apt upgrade -y
# Docker镜像更新(Watchtower自动处理)
🚨 故障排除
常见问题
- 容器启动失败
# 查看详细错误
docker-compose -f docker-compose.prod.yml logs ai-chat-web
# 检查端口占用
netstat -tlnp | grep :80
- SSL证书问题
# 检查证书有效性
openssl x509 -in ssl/fullchain.pem -text -noout
# 重新生成证书
./ssl-setup.sh
- 性能问题
# 查看资源使用
docker stats
# 查看系统负载
htop
健康检查
# 应用健康检查
curl http://localhost/health
# 容器健康状态
docker-compose -f docker-compose.prod.yml ps
📈 性能优化
已启用的优化
✅ Gzip压缩 - 减少传输大小
✅ 静态资源缓存 - 1年缓存期
✅ HTTP/2支持 - 提升加载速度
✅ 连接复用 - 减少连接开销
✅ 多阶段构建 - 减小镜像大小
进一步优化
- CDN配置
# 配置CDN加速静态资源
# 修改nginx.prod.conf中的静态资源处理
- 缓存策略
# 根据业务需求调整缓存时间
# 编辑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'
📞 技术支持
如果遇到问题,请检查:
- 日志文件:
logs/nginx/error.log - 容器状态:
docker-compose ps - 系统资源:
htop,df -h - 网络连接:
netstat -tlnp
🎯 生产环境检查清单
- 域名DNS解析正确
- SSL证书配置完成
- 防火墙规则设置
- 备份策略配置
- 监控告警设置
- 性能测试通过
- 安全扫描通过
- 文档更新完成
🎉 恭喜!您的AI Chat应用已成功部署到生产环境!