docs: 更新部署运维文档至v2.0

主要更新内容:
- 新增Docker Compose部署章节
- 更新服务端口配置(Gateway:8000, fund-sys:8100等)
- 新增多租户混合负载模式说明
- 更新Prometheus+Grafana监控体系配置
- 新增链路追踪日志格式(TraceId+SpanId)
- 更新环境变量配置
- 新增访问地址汇总和默认账号信息
This commit is contained in:
zhangjf 2026-02-22 13:30:21 +08:00
parent 04ffcd804a
commit fa0a356d08

View File

@ -1,7 +1,7 @@
# 资金服务平台部署运维文档
> 版本: v1.0
> 更新日期: 2026-02-13
> 版本: v2.0
> 更新日期: 2026-02-20
> 作者: zhangjf
---
@ -24,12 +24,12 @@
#### 1.2.1 安装 JDK 21
```bash
# 下载并解压 JDK 21
wget https://download.java.net/openjdk/jdk21/ri/openjdk-21+35_linux-x64_bin.tar.gz
tar -xzf openjdk-21+35_linux-x64_bin.tar.gz -C /opt/
# Ubuntu/Debian
sudo apt update
sudo apt install openjdk-21-jdk
# 配置环境变量
echo 'export JAVA_HOME=/opt/jdk-21' >> ~/.bashrc
echo 'export JAVA_HOME=/usr/lib/jvm/java-21-openjdk-amd64' >> ~/.bashrc
echo 'export PATH=$JAVA_HOME/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
@ -157,16 +157,177 @@ npm install
npm run dev
# 4. 访问系统
# 管理后台http://localhost:5173
# 网关地址http://localhost:8080
# 管理后台http://localhost:3000
# 网关地址http://localhost:8000
# Nacos 控制台http://localhost:8048/nacos
# Grafana 监控http://localhost:3000 (Docker环境) 或 http://localhost:3001 (本地开发)
# Prometheushttp://localhost:9090
```
---
## 二、测试环境部署
## 二、Docker Compose 部署
### 2.1 服务器配置
### 2.1 部署架构
项目支持 **Docker Compose 一键部署**,包含以下服务组件:
```
┌─────────────────────────────────────────────────────────────────────────────┐
│ Docker Compose 部署架构 │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ ┌──────────────┐ │
│ │ 前端服务 │ │
│ │ fund-admin │ ← 管理后台 (http://localhost:80) │
│ │ fund-mobile │ ← 移动端H5 (http://localhost:81) │
│ └──────┬───────┘ │
│ │ │
│ ┌──────┴───────┐ │
│ │ Gateway │ ← API网关 (http://localhost:8000) │
│ │ :8000 │ │
│ └──────┬───────┘ │
│ │ │
│ ┌──────┴──────────────────────────────────────────┐ │
│ │ │ │
│ ▼ ▼ ▼ ▼ │ │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ │
│ │fund-sys │ │fund-cust│ │fund-proj│ │fund-req │ │ ← 业务微服务集群 │
│ │ :8100 │ │ :8200 │ │ :8300 │ │ :8400 │ │ │
│ └─────────┘ └─────────┘ └─────────┘ └─────────┘ │ │
│ │ │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ │
│ │fund-exp │ │fund-rcpt│ │fund-rpt │ │ │
│ │ :8500 │ │ :8600 │ │ :8700 │ │ │
│ └─────────┘ └─────────┘ └─────────┘ │ │
│ │ │
│ ┌──────────────────────┬─────────────────────┐ │ │
│ │ │ │ │ │
│ ▼ ▼ ▼ │ │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
│ │ MySQL │ │ Redis │ │ Nacos │ ← 基础设施 │
│ │ :3306 │ │ :6379 │ │ :8848 │ │
│ └─────────┘ └─────────┘ └─────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ 监控体系 │ │
│ │ ┌─────────────┐ ┌─────────────┐ │ │
│ │ │ Prometheus │ │ Grafana │ │ │
│ │ │ :9090 │──────────────│ :3000 │ │ │
│ │ └─────────────┘ └─────────────┘ │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
```
### 2.2 服务清单
| 服务 | 端口 | 说明 |
|------|------|------|
| fund-admin | 80 | 管理后台前端 |
| fund-mobile | 81 | 移动端H5 |
| gateway | 8000 | API网关 |
| fund-sys | 8100 | 系统管理服务 |
| fund-sys-vip001 | 8101 | 系统服务VIP专属实例 |
| fund-cust | 8200 | 客户管理服务 |
| fund-proj | 8300 | 项目管理服务 |
| fund-req | 8400 | 需求工单服务 |
| fund-exp | 8500 | 支出管理服务 |
| fund-receipt | 8600 | 收款管理服务 |
| fund-report | 8700 | 报表服务 |
| fund-file | 8800 | 文件服务 |
| mysql | 3306 | MySQL数据库 |
| redis | 6379 | Redis缓存 |
| nacos | 8848 | Nacos服务注册中心 |
| prometheus | 9090 | Prometheus监控 |
| grafana | 3000 | Grafana可视化 |
### 2.3 快速部署
```bash
# 1. 克隆项目
git clone <repository-url>
cd fundplatform
# 2. 初始化环境
./deploy.sh init
# 3. 构建镜像
./deploy.sh build
# 4. 启动所有服务
./deploy.sh start
# 5. 查看服务状态
./deploy.sh status
# 6. 查看日志
./deploy.sh logs --service fund-sys
```
### 2.4 部署脚本命令
| 命令 | 说明 |
|------|------|
| `./deploy.sh start` | 启动所有服务 |
| `./deploy.sh stop` | 停止所有服务 |
| `./deploy.sh restart` | 重启所有服务 |
| `./deploy.sh build` | 构建所有镜像 |
| `./deploy.sh rebuild` | 重新构建(不使用缓存) |
| `./deploy.sh logs` | 查看服务日志 |
| `./deploy.sh status` | 查看服务状态 |
| `./deploy.sh clean` | 清理未使用的镜像和容器 |
| `./deploy.sh init` | 初始化环境(首次部署) |
### 2.5 多租户混合负载模式
项目支持 **多租户混合负载模式**可实现VIP专属实例与普通租户共享实例并存
```
┌─────────────────────────────────────────────────────────────────┐
│ 多租户混合负载模式 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 请求 ──► Gateway ──► TenantGatewayFilter (提取租户ID) │
│ │ │
│ ┌───────────────┼───────────────┐ │
│ ▼ ▼ ▼ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ 共享实例 │ │ VIP_004专属 │ │ VIP_005专属 │ │
│ │ (多租户共享) │ │ (单租户独占) │ │ (单租户独占) │ │
│ │ fund-sys │ │ fund-sys- │ │ fund-sys- │ │
│ │ :8100 │ │ vip001:8101 │ │ vip002:8102 │ │
│ │ │ │ │ │ │ │
│ │ TENANT_ID: │ │ TENANT_ID: │ │ TENANT_ID: │ │
│ │ VIP_001, │ │ VIP_004 │ │ VIP_005 │ │
│ │ VIP_002, │ │ │ │ │ │
│ │ VIP_003 │ │ │ │ │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
```
**配置方式**
`docker-compose.yml` 中通过环境变量 `TENANT_ID` 指定实例服务的租户:
```yaml
# 共享实例 - 服务多个租户
fund-sys:
environment:
TENANT_ID: "VIP_001,VIP_002,VIP_003" # 逗号分隔,服务多个租户
# VIP专属实例 - 单租户独占
fund-sys-vip001:
environment:
TENANT_ID: "VIP_004" # 单租户专属实例
```
---
## 三、测试环境部署
### 3.1 服务器配置
| 组件 | 配置 | 数量 |
|------|------|------|
@ -174,7 +335,7 @@ npm run dev
| 数据库服务器 | 4核8G | 1台 |
| 缓存服务器 | 2核4G | 1台 |
### 2.2 部署架构
### 3.2 部署架构
```
┌─────────────────────────────────────────────────────────────┐
@ -212,9 +373,9 @@ npm run dev
└─────────────────────────────────────────────────────────────┘
```
### 2.3 部署步骤
### 3.3 部署步骤
#### 2.3.1 部署 Nacos
#### 3.3.1 部署 Nacos
```bash
# 在服务器上安装 Nacos
@ -237,7 +398,7 @@ cd /opt/nacos/bin
sh startup.sh
```
#### 2.3.2 部署 MySQL
#### 3.3.2 部署 MySQL
```bash
# 创建数据库和用户
@ -253,7 +414,7 @@ mysql -u fund_user -p'Fund@123456' fund_platform < fund_platform_schema.sql
mysql -u fund_user -p'Fund@123456' fund_platform < fund_platform_init.sql
```
#### 2.3.3 部署 Redis
#### 3.3.3 部署 Redis
```bash
# 配置 Redis
@ -270,7 +431,7 @@ EOF
sudo systemctl restart redis
```
#### 2.3.4 部署应用服务
#### 3.3.4 部署应用服务
```bash
# 1. 打包应用
@ -302,7 +463,7 @@ chmod +x /opt/fundplatform/start.sh
./start.sh sys fund-sys-1.0.0.jar
```
#### 2.3.5 部署 Nginx
#### 3.3.5 部署 Nginx
```bash
# 安装 Nginx
@ -342,9 +503,9 @@ sudo systemctl restart nginx
---
## 、生产环境部署
## 、生产环境部署
### 3.1 服务器配置
### 4.1 服务器配置
| 组件 | 配置 | 数量 | 说明 |
|------|------|------|------|
@ -354,7 +515,7 @@ sudo systemctl restart nginx
| Nacos 服务器 | 4核8G | 3台 | Nacos 集群 |
| Nginx 服务器 | 4核8G | 2台 | 负载均衡 |
### 3.2 部署架构
### 4.2 部署架构
```
┌─────────────────────────────────────────────────────────────────────────────┐
@ -398,9 +559,9 @@ sudo systemctl restart nginx
└─────────────────────────────────────────────────────────────────────────────┘
```
### 3.3 高可用配置
### 4.3 高可用配置
#### 3.3.1 MySQL 主从配置
#### 4.3.1 MySQL 主从配置
```bash
# 主库配置
@ -429,7 +590,7 @@ CHANGE MASTER TO
START SLAVE;
```
#### 3.3.2 Redis 集群配置
#### 4.3.2 Redis 集群配置
```bash
# 创建 6 个节点3主3从
@ -446,7 +607,7 @@ redis-cli --cluster create \
--cluster-replicas 1
```
#### 3.3.3 Nacos 集群配置
#### 4.3.3 Nacos 集群配置
```bash
# 配置 cluster.conf
@ -467,7 +628,7 @@ db.password.0=nacos_password
sh startup.sh
```
#### 3.3.4 Nginx + Keepalived
#### 4.3.4 Nginx + Keepalived
```bash
# 安装 Keepalived
@ -524,14 +685,17 @@ chmod +x /etc/keepalived/check_nginx.sh
---
## 、运维手册
## 、运维手册
### 4.1 监控体系
### 5.1 监控体系
#### 4.1.1 应用监控Prometheus + Grafana
#### 5.1.1 应用监控Prometheus + Grafana
项目已集成 Prometheus + Grafana 监控体系,通过 Docker Compose 自动部署。
**Prometheus 配置** (`docker/prometheus/prometheus.yml`)
```yaml
# prometheus.yml
global:
scrape_interval: 15s
@ -539,15 +703,24 @@ scrape_configs:
- job_name: 'fund-gateway'
metrics_path: '/actuator/prometheus'
static_configs:
- targets: ['app-server-1:8080', 'app-server-2:8080', 'app-server-3:8080']
- targets: ['gateway:8000']
- job_name: 'fund-sys'
metrics_path: '/actuator/prometheus'
static_configs:
- targets: ['app-server-1:8081', 'app-server-2:8081', 'app-server-3:8081']
- targets: ['fund-sys:8100', 'fund-sys-vip001:8101']
- job_name: 'fund-cust'
metrics_path: '/actuator/prometheus'
static_configs:
- targets: ['fund-cust:8200']
```
#### 4.1.2 关键监控指标
**访问地址**
- Prometheus: http://localhost:9090
- Grafana: http://localhost:3000 (默认账号: admin / admin123)
#### 5.1.2 关键监控指标
| 指标 | 告警阈值 | 说明 |
|------|----------|------|
@ -559,9 +732,11 @@ scrape_configs:
| MySQL 连接数 | > 80% | 数据库连接数使用率 |
| Redis 内存使用率 | > 80% | Redis 内存使用百分比 |
### 4.2 日志管理
### 5.2 日志管理
#### 4.2.1 日志配置
#### 5.2.1 日志配置
项目采用 Logback 作为日志框架,支持 **TraceId + SpanId 链路追踪**
```xml
<!-- logback-spring.xml -->
@ -569,20 +744,32 @@ scrape_configs:
<!-- 控制台输出 -->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] [%X{traceId}] [%X{tid}] [%X{uid}] [%X{uname}] %-5level %logger{36} - %msg%n</pattern>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] [%X{traceId:-}][%X{spanId:-}] %-5level %logger{50} - %msg%n</pattern>
</encoder>
</appender>
<!-- 文件输出 -->
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>/var/log/fundplatform/app.log</file>
<file>./logs/${APP_NAME}/info.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>/var/log/fundplatform/app.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<fileNamePattern>./logs/${APP_NAME}/info-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<maxHistory>30</maxHistory>
<maxFileSize>100MB</maxFileSize>
</rollingPolicy>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] [%X{traceId}] %-5level %logger{36} - %msg%n</pattern>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] [%X{traceId:-}][%X{spanId:-}] %-5level %logger{50} - %msg%n</pattern>
</encoder>
</appender>
<!-- API请求日志 -->
<appender name="AOP_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>./logs/${APP_NAME}/aop.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>./logs/${APP_NAME}/aop-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%msg%n</pattern>
</encoder>
</appender>
@ -593,7 +780,21 @@ scrape_configs:
</configuration>
```
#### 4.2.2 ELK 日志收集
**日志文件结构**
```
logs/
├── fund-gateway/
│ ├── info.log # 主日志
│ ├── error.log # 错误日志
│ └── aop.log # API请求日志
├── fund-sys/
│ ├── info.log
│ ├── error.log
│ └── aop.log
└── ...
```
#### 5.2.2 ELK 日志收集
```yaml
# filebeat.yml
@ -613,9 +814,9 @@ output.elasticsearch:
index: "fundplatform-%{+yyyy.MM.dd}"
```
### 4.3 备份策略
### 5.3 备份策略
#### 4.3.1 数据库备份
#### 5.3.1 数据库备份
```bash
#!/bin/bash
@ -640,7 +841,7 @@ find $BACKUP_DIR -name "${DB_NAME}_*.sql.gz" -mtime +7 -delete
aws s3 cp $BACKUP_DIR/${DB_NAME}_${DATE}.sql.gz s3://fundplatform-backup/mysql/
```
#### 4.3.2 备份计划
#### 5.3.2 备份计划
| 备份类型 | 频率 | 保留时间 |
|----------|------|----------|
@ -648,9 +849,9 @@ aws s3 cp $BACKUP_DIR/${DB_NAME}_${DATE}.sql.gz s3://fundplatform-backup/mysql/
| 增量备份 | 每小时 | 7 天 |
| 二进制日志 | 实时 | 7 天 |
### 4.4 故障处理
### 5.4 故障处理
#### 4.4.1 常见故障及处理
#### 5.4.1 常见故障及处理
| 故障现象 | 可能原因 | 处理方案 |
|----------|----------|----------|
@ -660,7 +861,7 @@ aws s3 cp $BACKUP_DIR/${DB_NAME}_${DATE}.sql.gz s3://fundplatform-backup/mysql/
| 接口超时 | 下游服务慢 | 检查依赖服务,增加熔断 |
| Redis 连接失败 | 连接数超限 | 增加连接池,检查连接泄露 |
#### 4.4.2 应急处理流程
#### 5.4.2 应急处理流程
```
1. 故障发现
@ -679,9 +880,9 @@ aws s3 cp $BACKUP_DIR/${DB_NAME}_${DATE}.sql.gz s3://fundplatform-backup/mysql/
6. 故障复盘
```
### 4.5 性能优化
### 5.5 性能优化
#### 4.5.1 JVM 调优
#### 5.5.1 JVM 调优
```bash
# 生产环境 JVM 参数
@ -696,7 +897,7 @@ java -server \
-jar app.jar
```
#### 4.5.2 MySQL 调优
#### 5.5.2 MySQL 调优
```ini
# my.cnf
@ -723,7 +924,7 @@ slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 2
```
#### 4.5.3 Redis 调优
#### 5.5.3 Redis 调优
```bash
# redis.conf
@ -735,9 +936,9 @@ timeout 0
---
## 、附录
## 、附录
### 5.1 常用命令
### 6.1 常用命令
```bash
# 查看服务状态
@ -746,37 +947,99 @@ systemctl status redis
systemctl status nginx
# 查看日志
tail -f /var/log/fundplatform/app.log
tail -f /var/log/nginx/access.log
tail -f logs/fund-gateway/info.log
tail -f logs/fund-sys/aop.log
# 查看进程
ps -ef | grep java
netstat -tlnp | grep 8080
netstat -tlnp | grep 8000
# 数据库操作
mysql -u root -p
redis-cli -a password
mysql -u root -p'zjf@123456'
redis-cli -a 'zjf@123456'
# Nacos 管理
curl http://localhost:8848/nacos/v1/ns/instance/list?serviceName=fund-sys
# Docker 操作
docker ps
docker logs fund-gateway
docker-compose restart fund-sys
```
### 5.2 端口清单
### 6.2 端口清单
| 服务 | 端口 | 说明 |
|------|------|------|
| Nginx | 80/443 | Web 服务 |
| Gateway | 8080 | API 网关 |
| fund-sys | 8081 | 系统服务 |
| fund-cust | 8082 | 客户中心 |
| fund-proj | 8083 | 项目中心 |
| fund-req | 8084 | 需求中心 |
| fund-exp | 8085 | 支出中心 |
| fund-receipt | 8086 | 收款中心 |
| MySQL | 3306 | 数据库 |
| Redis | 6379 | 缓存 |
| Nacos | 8848 | 服务注册 |
| Nacos 控制台 | 8048 | 配置中心 |
| 服务 | 本地开发端口 | Docker端口 | 说明 |
|------|-------------|------------|------|
| fund-admin | 3000 | 80 | 管理后台前端 |
| fund-mobile | 5174 | 81 | 移动端H5 |
| Gateway | 8000 | 8000 | API网关 |
| fund-sys | 8100 | 8100 | 系统管理服务 |
| fund-sys-vip001 | - | 8101 | 系统服务VIP实例 |
| fund-cust | 8200 | 8200 | 客户管理服务 |
| fund-proj | 8300 | 8300 | 项目管理服务 |
| fund-req | 8400 | 8400 | 需求工单服务 |
| fund-exp | 8500 | 8500 | 支出管理服务 |
| fund-receipt | 8600 | 8600 | 收款管理服务 |
| fund-report | 8700 | 8700 | 报表服务 |
| fund-file | 8800 | 8800 | 文件服务 |
| MySQL | 3306 | 3306 | 数据库 |
| Redis | 6379 | 6379 | 缓存 |
| Nacos API | 8848 | 8848 | 服务注册 |
| Nacos 控制台 | 8048 | - | 配置中心 |
| Prometheus | 9090 | 9090 | 监控 |
| Grafana | 3001 | 3000 | 可视化 |
### 6.3 环境变量配置
项目使用 `.env` 文件管理环境变量:
```bash
# ============================================
# 资金服务平台环境配置
# ============================================
# MySQL 配置
MYSQL_HOST=localhost
MYSQL_PORT=3306
MYSQL_USERNAME=root
MYSQL_PASSWORD=zjf@123456
MYSQL_AUTH_PLUGIN=caching_sha2_password
# Redis 配置
REDIS_HOST=localhost
REDIS_PORT=6379
REDIS_PASSWORD=zjf@123456
# Nacos 配置
NACOS_HOST=localhost
NACOS_PORT=8848
NACOS_USERNAME=nacos
NACOS_PASSWORD=nacos
NACOS_CONSOLE_PORT=8048
# Grafana 配置
GRAFANA_PASSWORD=admin123
```
### 6.4 访问地址汇总
| 服务 | 本地开发 | Docker部署 |
|------|----------|------------|
| 管理后台 | http://localhost:3000 | http://localhost:80 |
| 移动端H5 | http://localhost:5174 | http://localhost:81 |
| API网关 | http://localhost:8000 | http://localhost:8000 |
| Nacos控制台 | http://localhost:8048/nacos | http://localhost:8848/nacos |
| Prometheus | http://localhost:9090 | http://localhost:9090 |
| Grafana | http://localhost:3001 | http://localhost:3000 |
### 6.5 默认账号
| 系统 | 用户名 | 密码 |
|------|--------|------|
| Nacos | nacos | nacos |
| Grafana | admin | admin123 |
| 管理后台 | admin | 123456 |
---