314 lines
6.3 KiB
Markdown
314 lines
6.3 KiB
Markdown
# 情绪博物馆容器部署指南
|
||
|
||
## 📋 概述
|
||
|
||
本文档提供了情绪博物馆项目的完整容器化部署方案,支持开发环境和生产环境的快速部署。
|
||
|
||
## 🏗️ 架构说明
|
||
|
||
### 服务组件
|
||
- **前端应用** (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. 联系技术支持团队
|
||
|
||
---
|
||
|
||
**部署完成后,请及时修改默认密码和配置文件中的敏感信息!**
|