# 🚀 AI Chat 生产环境部署指南

## 📋 概述

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

## 🏗️ 架构说明

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

## 🚀 快速部署

### 1. 基础HTTP部署

```bash
# 一键部署（推荐）
./deploy-prod.sh

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

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

### 2. HTTPS部署

```bash
# 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 (推荐)

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

### 自定义证书

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

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

## 📊 监控和日志

### 启用监控模式

```bash
./deploy-prod.sh monitoring
```

包含以下组件：
- **Watchtower**: 自动更新容器
- **Promtail**: 日志收集（可选）

### 日志查看

```bash
# 应用日志
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
```

## 🔧 运维命令

### 基础操作

```bash
# 查看服务状态
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
```

### 更新部署

```bash
# 1. 拉取最新代码
git pull

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

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

### 备份和恢复

```bash
# 自动备份（部署时自动执行）
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. **防火墙配置**
```bash
# 只开放必要端口
ufw allow 22    # SSH
ufw allow 80    # HTTP
ufw allow 443   # HTTPS
ufw enable
```

2. **定期更新**
```bash
# 系统更新
sudo apt update && sudo apt upgrade -y

# Docker镜像更新（Watchtower自动处理）
```

## 🚨 故障排除

### 常见问题

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

# 检查端口占用
netstat -tlnp | grep :80
```

2. **SSL证书问题**
```bash
# 检查证书有效性
openssl x509 -in ssl/fullchain.pem -text -noout

# 重新生成证书
./ssl-setup.sh
```

3. **性能问题**
```bash
# 查看资源使用
docker stats

# 查看系统负载
htop
```

### 健康检查

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

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

## 📈 性能优化

### 已启用的优化

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

### 进一步优化

1. **CDN配置**
```bash
# 配置CDN加速静态资源
# 修改nginx.prod.conf中的静态资源处理
```

2. **缓存策略**
```bash
# 根据业务需求调整缓存时间
# 编辑nginx.prod.conf
```

## 🔄 CI/CD 集成

### GitHub Actions 示例

```yaml
# .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应用已成功部署到生产环境！**
