a7f3ee3565
同步仓库名称变更,涉及 16 个文件 66 处引用: - ai-skills: 菜单配置 - backend/guides: AI操作手册、环境配置、部署、gitnexus、opencode 工作流 - backend: 模块创建规则、通信规范、协作工作流、实施规范 - frontend: 收银设计、管理后台实施计划 - standards: 数据库设计规范
294 lines
6.1 KiB
Markdown
294 lines
6.1 KiB
Markdown
# 部署指南
|
||
|
||
## 🎯 部署架构
|
||
|
||
```
|
||
┌─────────────────────────────────────────┐
|
||
│ Nginx 网关 │
|
||
│ (负载均衡/静态资源) │
|
||
└──────────────┬──────────────────────────┘
|
||
│
|
||
┌───────┴───────┐
|
||
▼ ▼
|
||
┌─────────────┐ ┌─────────────┐
|
||
│ 前端静态资源 │ │ rui-gateway │
|
||
│ (dist目录) │ │ Spring Cloud│
|
||
└─────────────┘ │ Gateway │
|
||
└──────┬──────┘
|
||
│
|
||
┌────────────┼────────────┐
|
||
▼ ▼ ▼
|
||
┌─────────┐ ┌─────────┐ ┌─────────┐
|
||
│rui-auth │ │rui- │ │rui- │
|
||
│(认证) │ │service │ │cashier │
|
||
└─────────┘ │(系统) │ │(收银) │
|
||
└─────────┘ └─────────┘
|
||
│
|
||
┌──────┴──────┐
|
||
▼ ▼
|
||
┌──────────┐ ┌──────────┐
|
||
│rui-payment│ │ MySQL │
|
||
│ (支付) │ │ (数据库) │
|
||
└──────────┘ └──────────┘
|
||
```
|
||
|
||
---
|
||
|
||
## 🐳 Docker 部署
|
||
|
||
### 1. 构建镜像
|
||
|
||
```bash
|
||
# 进入后端目录
|
||
cd ~/rhkj/rui-framework/backend
|
||
|
||
# Maven 打包
|
||
mvn clean package -DskipTests
|
||
|
||
# 构建 Docker 镜像(以 gateway 为例)
|
||
cd rui-gateway
|
||
docker build -t rui-gateway:latest .
|
||
|
||
# 构建其他服务...
|
||
cd ../rui-auth && docker build -t rui-auth:latest .
|
||
cd ../rui-service/rui-service-system && docker build -t rui-service-system:latest .
|
||
```
|
||
|
||
### 2. docker-compose.yml
|
||
|
||
```yaml
|
||
version: '3.8'
|
||
|
||
services:
|
||
# MySQL
|
||
mysql:
|
||
image: mysql:8.0
|
||
container_name: rui-mysql
|
||
environment:
|
||
MYSQL_ROOT_PASSWORD: root123
|
||
MYSQL_DATABASE: rui_cloud
|
||
ports:
|
||
- "3306:3306"
|
||
volumes:
|
||
- mysql-data:/var/lib/mysql
|
||
|
||
# Redis
|
||
redis:
|
||
image: redis:7-alpine
|
||
container_name: rui-redis
|
||
ports:
|
||
- "6379:6379"
|
||
|
||
# Nacos (注册中心)
|
||
nacos:
|
||
image: nacos/nacos-server:v2.2.3
|
||
container_name: rui-nacos
|
||
environment:
|
||
MODE: standalone
|
||
ports:
|
||
- "8848:8848"
|
||
|
||
# Gateway
|
||
gateway:
|
||
image: rui-gateway:latest
|
||
container_name: rui-gateway
|
||
ports:
|
||
- "8080:8080"
|
||
depends_on:
|
||
- nacos
|
||
|
||
# Auth
|
||
auth:
|
||
image: rui-auth:latest
|
||
container_name: rui-auth
|
||
depends_on:
|
||
- nacos
|
||
- mysql
|
||
- redis
|
||
|
||
# Service
|
||
service-system:
|
||
image: rui-service-system:latest
|
||
container_name: rui-service-system
|
||
depends_on:
|
||
- nacos
|
||
- mysql
|
||
- redis
|
||
|
||
volumes:
|
||
mysql-data:
|
||
```
|
||
|
||
### 3. 启动服务
|
||
|
||
```bash
|
||
# 启动所有服务
|
||
docker-compose up -d
|
||
|
||
# 查看日志
|
||
docker-compose logs -f gateway
|
||
|
||
# 停止服务
|
||
docker-compose down
|
||
```
|
||
|
||
---
|
||
|
||
## 🚀 生产环境部署
|
||
|
||
### 1. 服务器准备
|
||
|
||
| 服务器 | 配置 | 部署内容 |
|
||
|--------|------|---------|
|
||
| 服务器 1 | 4C8G | Gateway + Auth + Nacos |
|
||
| 服务器 2 | 4C8G | Service + Cashier + Payment |
|
||
| 服务器 3 | 4C8G | MySQL + Redis |
|
||
| 服务器 4 | 2C4G | Nginx + 前端静态资源 |
|
||
|
||
### 2. 部署脚本
|
||
|
||
```bash
|
||
#!/bin/bash
|
||
# deploy.sh - 生产环境部署脚本
|
||
|
||
set -e
|
||
|
||
# 配置
|
||
SERVER_USER="root"
|
||
SERVER_IP="192.168.1.100"
|
||
JAR_PATH="target/*.jar"
|
||
BACKUP_DIR="/opt/backup"
|
||
APP_DIR="/opt/rui"
|
||
|
||
# 备份旧版本
|
||
echo "备份旧版本..."
|
||
ssh $SERVER_USER@$SERVER_IP "mkdir -p $BACKUP_DIR && cp $APP_DIR/*.jar $BACKUP_DIR/ 2>/dev/null || true"
|
||
|
||
# 上传新版本
|
||
echo "上传新版本..."
|
||
scp $JAR_PATH $SERVER_USER@$SERVER_IP:$APP_DIR/
|
||
|
||
# 重启服务
|
||
echo "重启服务..."
|
||
ssh $SERVER_USER@$SERVER_IP "cd $APP_DIR && ./restart.sh"
|
||
|
||
echo "部署完成!"
|
||
```
|
||
|
||
---
|
||
|
||
## 📊 监控与日志
|
||
|
||
### 日志查看
|
||
|
||
```bash
|
||
# 查看实时日志
|
||
docker logs -f rui-gateway
|
||
|
||
# 查看最近 100 行
|
||
docker logs --tail=100 rui-gateway
|
||
|
||
# 查看指定时间范围
|
||
docker logs --since="2024-01-01T00:00:00" rui-gateway
|
||
```
|
||
|
||
### 健康检查
|
||
|
||
```bash
|
||
# Gateway 健康检查
|
||
curl http://localhost:8080/actuator/health
|
||
|
||
# 服务注册状态
|
||
curl http://localhost:8848/nacos/v1/ns/instance/list?serviceName=rui-gateway
|
||
```
|
||
|
||
---
|
||
|
||
## 🔧 常见问题
|
||
|
||
### 1. 服务无法注册到 Nacos
|
||
|
||
**原因**:Nacos 地址配置错误
|
||
**解决**:
|
||
```yaml
|
||
spring:
|
||
cloud:
|
||
nacos:
|
||
discovery:
|
||
server-addr: nacos:8848 # 使用容器名或 IP
|
||
```
|
||
|
||
### 2. 数据库连接失败
|
||
|
||
**原因**:MySQL 未启动或网络不通
|
||
**解决**:
|
||
```bash
|
||
# 检查 MySQL 状态
|
||
docker ps | grep mysql
|
||
|
||
# 测试连接
|
||
docker exec -it rui-mysql mysql -uroot -p -e "SELECT 1"
|
||
```
|
||
|
||
### 3. 端口冲突
|
||
|
||
**原因**:端口被占用
|
||
**解决**:
|
||
```bash
|
||
# 查看端口占用
|
||
netstat -tlnp | grep 8080
|
||
|
||
# 修改 docker-compose.yml 端口映射
|
||
ports:
|
||
- "8081:8080" # 宿主机8081映射到容器8080
|
||
```
|
||
|
||
---
|
||
|
||
## 📈 性能优化
|
||
|
||
### JVM 参数
|
||
|
||
```bash
|
||
java -jar \
|
||
-Xms512m \
|
||
-Xmx1024m \
|
||
-XX:+UseG1GC \
|
||
-XX:MaxGCPauseMillis=200 \
|
||
app.jar
|
||
```
|
||
|
||
### 连接池配置
|
||
|
||
```yaml
|
||
spring:
|
||
datasource:
|
||
hikari:
|
||
minimum-idle: 5
|
||
maximum-pool-size: 20
|
||
idle-timeout: 300000
|
||
max-lifetime: 1200000
|
||
connection-timeout: 20000
|
||
```
|
||
|
||
---
|
||
|
||
## 🔄 滚动更新
|
||
|
||
```bash
|
||
# 1. 启动新版本(不停止旧版本)
|
||
docker-compose up -d --no-deps --scale gateway=2 gateway
|
||
|
||
# 2. 等待新版本健康检查通过
|
||
sleep 30
|
||
|
||
# 3. 停止旧版本
|
||
docker-compose stop gateway_1
|
||
|
||
# 4. 移除旧版本
|
||
docker-compose rm -f gateway_1
|
||
```
|
||
|
||
---
|
||
|
||
> **最后提醒**:生产环境部署前务必在测试环境验证! |