Files
happy-life-star/DEPLOY.md
T

314 lines
6.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 情绪博物馆容器部署指南
## 📋 概述
本文档提供了情绪博物馆项目的完整容器化部署方案,支持开发环境和生产环境的快速部署。
## 🏗️ 架构说明
### 服务组件
- **前端应用** (Vue3 + Ant Design) - 端口: 80/3000
- **API网关** (Spring Cloud Gateway) - 端口: 9000
- **AI服务** (Spring Boot + Coze API) - 端口: 9002
- **用户服务** (Spring Boot) - 端口: 9001
- **MySQL数据库** - 端口: 3306
- **Redis缓存** - 端口: 6379
- **Nacos注册中心** - 端口: 8848
- **Nginx反向代理** - 端口: 80/443
### 网络架构
```
Internet → Nginx → Frontend/Gateway → Microservices → Database
```
## 🚀 快速开始
### 1. 系统要求
- **操作系统**: Linux/macOS/Windows
- **Docker**: 20.10+
- **Docker Compose**: 1.29+
- **内存**: 最少4GB,推荐8GB+
- **磁盘**: 最少10GB可用空间
### 2. 一键部署
```bash
# 克隆项目
git clone <repository-url>
cd EmotionMuseum
# 快速部署(自动安装依赖)
chmod +x quick-deploy.sh
./quick-deploy.sh
# 或者手动部署
chmod +x deploy.sh
./deploy.sh
```
### 3. 访问应用
- **前端应用**: http://localhost
- **API文档**: http://localhost:9000/doc.html
- **Nacos控制台**: http://localhost:8848/nacos (nacos/nacos)
## 📁 文件结构
```
EmotionMuseum/
├── docker-compose.yml # 开发环境配置
├── docker-compose.prod.yml # 生产环境配置
├── deploy.sh # 部署脚本
├── quick-deploy.sh # 快速部署脚本
├── manage.sh # 管理脚本
├── .env # 环境变量
├── deploy/ # 部署配置
│ ├── nginx/ # Nginx配置
│ │ ├── nginx.conf
│ │ ├── conf.d/
│ │ └── ssl/
│ ├── mysql/ # MySQL配置
│ └── redis/ # Redis配置
├── backend/ # 后端服务
│ ├── emotion-gateway/
│ │ └── Dockerfile
│ ├── emotion-ai/
│ │ └── Dockerfile
│ └── emotion-user/
│ └── Dockerfile
└── web/ # 前端应用
├── Dockerfile
└── nginx.conf
```
## ⚙️ 配置说明
### 环境变量配置
编辑 `.env` 文件:
```bash
# 数据库配置
MYSQL_ROOT_PASSWORD=123456
MYSQL_DATABASE=emotion_museum
MYSQL_USER=emotion
MYSQL_PASSWORD=emotion123
# Coze API配置
COZE_API_TOKEN=your-coze-api-token
# 时区设置
TZ=Asia/Shanghai
```
### Nginx配置
- **主配置**: `deploy/nginx/nginx.conf`
- **站点配置**: `deploy/nginx/conf.d/emotion-museum.conf`
- **SSL证书**: `deploy/nginx/ssl/`
### 数据库配置
- **MySQL配置**: `deploy/mysql/conf.d/my.cnf`
- **初始化脚本**: `backend/mysql_emotion_museum_final.sql`
## 🛠️ 管理命令
### 基础操作
```bash
# 启动所有服务
./manage.sh start
# 停止所有服务
./manage.sh stop
# 重启所有服务
./manage.sh restart
# 查看服务状态
./manage.sh status
```
### 日志管理
```bash
# 查看所有服务日志
./manage.sh logs
# 跟踪日志输出
./manage.sh logs -f
# 查看特定服务日志
./manage.sh logs -s gateway
./manage.sh logs -s ai-service
```
### 服务管理
```bash
# 重启特定服务
./manage.sh restart gateway
./manage.sh restart ai-service
# 健康检查
./manage.sh health
# 监控面板
./manage.sh monitor
```
### 数据管理
```bash
# 备份数据
./manage.sh backup
# 恢复数据
./manage.sh restore backup_file.tar.gz
# 更新服务
./manage.sh update
# 清理资源
./manage.sh clean
```
## 🔧 生产环境部署
### 1. 使用生产配置
```bash
# 使用生产环境配置文件
docker-compose -f docker-compose.prod.yml up -d
```
### 2. SSL证书配置
```bash
# 放置SSL证书
cp your-domain.crt deploy/nginx/ssl/emotion-museum.crt
cp your-domain.key deploy/nginx/ssl/emotion-museum.key
# 修改Nginx配置启用HTTPS
vim deploy/nginx/conf.d/emotion-museum.conf
```
### 3. 域名配置
修改 `deploy/nginx/conf.d/emotion-museum.conf`
```nginx
server_name your-domain.com www.your-domain.com;
```
### 4. 防火墙配置
```bash
# Ubuntu/Debian
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
# CentOS/RHEL
sudo firewall-cmd --permanent --add-port=80/tcp
sudo firewall-cmd --permanent --add-port=443/tcp
sudo firewall-cmd --reload
```
## 📊 监控和维护
### 服务监控
```bash
# 实时监控
./manage.sh monitor
# 资源使用情况
docker stats
# 服务状态
docker-compose ps
```
### 日志查看
```bash
# 应用日志
./manage.sh logs -f
# 系统日志
tail -f logs/nginx/access.log
tail -f logs/mysql/error.log
```
### 性能优化
1. **数据库优化**: 调整 `deploy/mysql/conf.d/my.cnf`
2. **Redis优化**: 调整 `deploy/redis/redis.conf`
3. **Nginx优化**: 调整 `deploy/nginx/nginx.conf`
4. **JVM优化**: 修改Dockerfile中的JVM参数
## 🔒 安全配置
### 1. 数据库安全
- 修改默认密码
- 限制访问IP
- 启用SSL连接
### 2. Redis安全
- 设置密码认证
- 绑定特定IP
- 禁用危险命令
### 3. Nginx安全
- 启用HTTPS
- 配置安全头
- 限制请求频率
### 4. 应用安全
- 配置JWT密钥
- 启用CORS限制
- 设置API限流
## 🚨 故障排除
### 常见问题
#### 1. 服务启动失败
```bash
# 查看服务日志
./manage.sh logs -s service-name
# 检查端口占用
netstat -tlnp | grep :port
# 重启服务
./manage.sh restart service-name
```
#### 2. 数据库连接失败
```bash
# 检查MySQL状态
docker-compose exec mysql mysqladmin ping -u root -p
# 查看数据库日志
./manage.sh logs -s mysql
```
#### 3. 前端访问异常
```bash
# 检查Nginx配置
nginx -t
# 查看Nginx日志
./manage.sh logs -s nginx
```
#### 4. API调用失败
```bash
# 检查网关状态
curl http://localhost:9000/actuator/health
# 查看网关日志
./manage.sh logs -s gateway
```
### 性能问题
1. **内存不足**: 增加服务器内存或调整JVM参数
2. **磁盘空间**: 清理日志文件和Docker镜像
3. **网络延迟**: 检查服务间网络连接
## 📞 技术支持
如遇到问题,请:
1. 查看相关服务日志
2. 检查配置文件
3. 参考故障排除指南
4. 联系技术支持团队
---
**部署完成后,请及时修改默认密码和配置文件中的敏感信息!**