优化:已知问题
This commit is contained in:
300
README-Production.md
Normal file
300
README-Production.md
Normal file
@@ -0,0 +1,300 @@
|
||||
# 🚀 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应用已成功部署到生产环境!**
|
||||
Reference in New Issue
Block a user