fundplatform/doc/单机部署文档.md
zhangjf 645056eaf0 添加服务启动方式说明文档
更新内容:
1. 在单机部署文档中增加 4.8 节,详细说明服务启动方式
2. 在部署运维文档中增加 1.5 节,说明开发环境和生产环境的启动方式

关键约束:
- 明确说明不能使用 java -jar 方式启动(瘦包打包导致)
- 开发环境:使用 mvn spring-boot:run 或 IDE 直接运行
- 生产环境:使用 bin/start.sh 脚本启动
- 解释技术原因:Maven Assembly Plugin 瘦包打包、Manifest 配置缺失、类加载机制

调试建议:
- 开发环境推荐使用 IDE 或 Maven 插件
- 生产环境始终使用启动脚本
- 提供日志查看、进程检查等调试方法
2026-03-01 19:05:04 +08:00

968 lines
29 KiB
Markdown
Raw Permalink 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.

# 资金服务平台单机部署文档
> 版本: v2.2
> 更新日期: 2026-02-13
> 作者: zhangjf
---
## 一、部署概述
### 1.1 部署架构
```
┌─────────────────────────────────────────────────────────────────┐
│ 单机部署架构 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ 前端服务 │ │
│ │ fund-admin (/fadmin/) fund-mobile (/fmobile/) │ │
│ └─────────────────────────┬───────────────────────────────┘ │
│ │ │
│ ┌─────────────────────────▼───────────────────────────────┐ │
│ │ Gateway (8000) │ │
│ │ API网关 + Token验证 │ │
│ └─────────────────────────┬───────────────────────────────┘ │
│ │ │
│ ┌─────────────────────────┼───────────────────────────────┐ │
│ │ │ │ │
│ │ ┌────────┬────────┬───┴───┬────────┬────────┐ │ │
│ │ ▼ ▼ ▼ ▼ ▼ ▼ │ │
│ │ ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐ │ │
│ │ │ sys │ │ cust │ │ proj │ │ req │ │ exp │ │rcpt │ │ │
│ │ │:8100 │ │:8200 │ │:8300 │ │:8400 │ │:8500 │ │:8600 │ │ │
│ │ └──────┘ └──────┘ └──────┘ └──────┘ └──────┘ └──────┘ │ │
│ │ │ │
│ │ ┌──────┐ ┌──────┐ │ │
│ │ │report│ │ file │ │ │
│ │ │:8700 │ │:8800 │ │ │
│ │ └──────┘ └──────┘ │ │
│ │ │ │
│ │ 业务微服务集群 │ │
│ └──────────────────────────────────────────────────────────┘ │
│ │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ 基础设施服务 │ │
│ │ MySQL(3306) Redis(6379) Nacos(8848/8048) │ │
│ └──────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
```
### 1.2 服务清单
| 服务名称 | 端口 | 说明 |
|----------|------|------|
| fund-gateway | 8000 | API网关 |
| fund-sys | 8100 | 系统管理服务 |
| fund-cust | 8200 | 客户管理服务 |
| fund-proj | 8300 | 项目管理服务 |
| fund-req | 8400 | 需求工单服务 |
| fund-exp | 8500 | 支出管理服务 |
| fund-receipt | 8600 | 收款管理服务 |
| fund-report | 8700 | 报表服务 |
| fund-file | 8800 | 文件服务 |
### 1.3 目录结构
```
/opt/fundplatform/ # 应用根目录
├── deploy/ # 部署目录
│ ├── fund-gateway/ # Gateway服务
│ │ ├── bin/ # 脚本目录
│ │ │ ├── start.sh # 启动脚本
│ │ │ ├── stop.sh # 停止脚本
│ │ │ ├── restart.sh # 重启脚本
│ │ │ └── status.sh # 状态查看脚本
│ │ ├── lib/ # 依赖JAR目录
│ │ │ └── fund-gateway.jar # 服务JAR包
│ │ └── conf/ # 配置文件目录
│ │ └── application.yml # 服务配置文件
│ ├── fund-sys/ # 系统服务
│ │ ├── bin/
│ │ ├── lib/
│ │ └── conf/
│ ├── fund-cust/ # 客户服务
│ ├── fund-proj/ # 项目服务
│ ├── fund-req/ # 需求服务
│ ├── fund-exp/ # 支出服务
│ ├── fund-receipt/ # 收款服务
│ ├── fund-report/ # 报表服务
│ ├── fund-file/ # 文件服务
│ ├── start-all.sh # 一键启动所有服务
│ ├── stop-all.sh # 一键停止所有服务
│ ├── restart-all.sh # 一键重启所有服务
│ └── status.sh # 查看所有服务状态
├── packages/ # 发布包目录
│ ├── fund-gateway.tar.gz # Gateway服务发布包
│ ├── fund-sys.tar.gz # 系统服务发布包
│ ├── fund-cust.tar.gz # 客户服务发布包
│ ├── fund-proj.tar.gz # 项目服务发布包
│ ├── fund-req.tar.gz # 需求服务发布包
│ ├── fund-exp.tar.gz # 支出服务发布包
│ ├── fund-receipt.tar.gz # 收款服务发布包
│ ├── fund-report.tar.gz # 报表服务发布包
│ ├── fund-file.tar.gz # 文件服务发布包
│ ├── fund-admin.zip # 管理后台前端发布包
│ └── fund-mobile.zip # 移动端H5发布包
├── sql/ # 数据库脚本
│ ├── fund_platform_schema.sql # 表结构
│ └── fund_platform_init.sql # 初始化数据
└── config/ # 公共配置
└── env.properties # 环境变量配置
/datacfs/applogs/ # 日志根目录
├── fund-gateway/ # Gateway日志
│ ├── info.log
│ ├── error.log
│ └── aop.log
├── fund-sys/ # 系统服务日志
├── fund-cust/ # 客户服务日志
├── fund-proj/ # 项目服务日志
├── fund-req/ # 需求服务日志
├── fund-exp/ # 支出服务日志
├── fund-receipt/ # 收款服务日志
├── fund-report/ # 报表服务日志
└── fund-file/ # 文件服务日志
```
---
## 二、环境安装与配置
### 2.1 环境要求
| 组件 | 版本要求 | 说明 |
|------|----------|------|
| 操作系统 | CentOS 7+ / Ubuntu 18+ | Linux服务器 |
| JDK | 21+ | Java运行环境 |
| MySQL | 8.0+ | 数据库 |
| Redis | 7.0+ | 缓存服务 |
| Nacos | 3.0+ | 服务注册中心 |
### 2.2 安装 JDK 21
```bash
# 方式一:使用包管理器安装 (Ubuntu)
sudo apt update
sudo apt install openjdk-21-jdk
# 方式二:使用包管理器安装 (CentOS)
sudo yum install java-21-openjdk java-21-openjdk-devel
# 方式三:手动安装
cd /opt
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
ln -s /opt/jdk-21 /opt/java
# 配置环境变量
cat >> /etc/profile << 'EOF'
export JAVA_HOME=/opt/java
export PATH=$JAVA_HOME/bin:$PATH
EOF
source /etc/profile
# 验证安装
java -version
```
### 2.3 安装 MySQL 8.0
```bash
# Ubuntu 安装
sudo apt update
sudo apt install mysql-server-8.0
# CentOS 安装
sudo yum install mysql-server
# 启动MySQL
sudo systemctl start mysql
sudo systemctl enable mysql
# 配置root密码
sudo mysql -e "ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'zjf@123456';"
# 创建数据库用户(可选,用于应用连接)
sudo mysql -u root -p'zjf@123456' << 'EOF'
CREATE USER 'fund_user'@'%' IDENTIFIED BY 'Fund@123456';
GRANT ALL PRIVILEGES ON *.* TO 'fund_user'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
EOF
```
### 2.4 安装 Redis 7.0
```bash
# Ubuntu 安装
sudo apt update
sudo apt install redis-server
# CentOS 安装 (需要EPEL源)
sudo yum install epel-release
sudo yum install redis
# 配置密码
sudo sed -i 's/# requirepass foobared/requirepass zjf@123456/' /etc/redis/redis.conf
# 配置持久化
sudo sed -i 's/appendonly no/appendonly yes/' /etc/redis/redis.conf
# 启动Redis
sudo systemctl restart redis
sudo systemctl enable redis
# 验证安装
redis-cli -a 'zjf@123456' ping
```
### 2.5 安装 Nacos 3.0
```bash
# 下载Nacos
cd /opt
wget https://github.com/alibaba/nacos/releases/download/3.0.0/nacos-server-3.0.0.tar.gz
tar -xzf nacos-server-3.0.0.tar.gz
mv nacos nacos-server
# 配置端口可选默认8848
cd /opt/nacos-server/conf
sed -i 's/server.port=8848/server.port=8848/' application.properties
# 配置MySQL持久化推荐生产环境使用
cat >> application.properties << 'EOF'
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://localhost:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=Asia/Shanghai
db.user.0=root
db.password.0=zjf@123456
EOF
# 创建Nacos数据库
mysql -u root -p'zjf@123456' << 'EOF'
CREATE DATABASE IF NOT EXISTS nacos_config CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
EOF
# 导入Nacos表结构
mysql -u root -p'zjf@123456' nacos_config < /opt/nacos-server/conf/mysql-schema.sql
# 启动Nacos单机模式
cd /opt/nacos-server/bin
sh startup.sh -m standalone
# 查看启动日志
tail -f /opt/nacos-server/logs/start.out
# 访问控制台
# http://服务器IP:8848/nacos
# 默认账号密码nacos / nacos
```
### 2.6 创建Nacos命名空间
```bash
# 登录Nacos控制台或使用API创建命名空间
curl -X POST 'http://localhost:8848/nacos/v1/console/namespaces' \
-d 'customNamespaceId=fund-platform' \
-d 'namespaceName=资金服务平台' \
-d 'namespaceDesc=资金服务平台命名空间'
```
---
## 三、数据库创建和初始化
### 3.1 创建数据库
```bash
# 登录MySQL
mysql -u root -p'zjf@123456'
# 执行创建数据库脚本
```
```sql
-- 创建各服务数据库
CREATE DATABASE IF NOT EXISTS fund_sys
CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE DATABASE IF NOT EXISTS fund_cust
CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE DATABASE IF NOT EXISTS fund_proj
CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE DATABASE IF NOT EXISTS fund_req
CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE DATABASE IF NOT EXISTS fund_exp
CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE DATABASE IF NOT EXISTS fund_receipt
CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE DATABASE IF NOT EXISTS fund_report
CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE DATABASE IF NOT EXISTS fund_file
CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- 查看数据库
SHOW DATABASES;
```
### 3.2 初始化表结构
```bash
# 上传SQL脚本到服务器
cd /opt/fundplatform
mkdir -p sql
# 执行表结构脚本
mysql -u root -p'zjf@123456' fund_sys < sql/fund_sys_schema.sql
mysql -u root -p'zjf@123456' fund_cust < sql/fund_cust_schema.sql
mysql -u root -p'zjf@123456' fund_proj < sql/fund_proj_schema.sql
mysql -u root -p'zjf@123456' fund_req < sql/fund_req_schema.sql
mysql -u root -p'zjf@123456' fund_exp < sql/fund_exp_schema.sql
mysql -u root -p'zjf@123456' fund_receipt < sql/fund_receipt_schema.sql
mysql -u root -p'zjf@123456' fund_report < sql/fund_report_schema.sql
mysql -u root -p'zjf@123456' fund_file < sql/fund_file_schema.sql
# 执行初始化数据脚本
mysql -u root -p'zjf@123456' fund_sys < sql/fund_sys_init.sql
```
---
## 四、服务部署
### 4.1 创建部署目录
```bash
# 创建应用目录
mkdir -p /opt/fundplatform/deploy
mkdir -p /opt/fundplatform/sql
mkdir -p /opt/fundplatform/config
# 创建日志目录
mkdir -p /datacfs/applogs/fund-gateway
mkdir -p /datacfs/applogs/fund-sys
mkdir -p /datacfs/applogs/fund-cust
mkdir -p /datacfs/applogs/fund-proj
mkdir -p /datacfs/applogs/fund-req
mkdir -p /datacfs/applogs/fund-exp
mkdir -p /datacfs/applogs/fund-receipt
mkdir -p /datacfs/applogs/fund-report
mkdir -p /datacfs/applogs/fund-file
```
### 4.2 编译打包
项目使用 **Maven Assembly Plugin** 实现标准化打包,每个服务打包为一个独立的 `tar.gz` 文件。
#### 4.2.1 后端服务打包
```bash
# 在开发机上编译打包
mvn clean package -DskipTests
# 打包结果位于各模块的target目录
# fund-gateway/target/fund-gateway.tar.gz
# fund-sys/target/fund-sys.tar.gz
# fund-cust/target/fund-cust.tar.gz
# fund-proj/target/fund-proj.tar.gz
# fund-req/target/fund-req.tar.gz
# fund-exp/target/fund-exp.tar.gz
# fund-receipt/target/fund-receipt.tar.gz
# fund-report/target/fund-report.tar.gz
# fund-file/target/fund-file.tar.gz
```
#### 4.2.2 打包结构说明
每个服务的 `tar.gz` 包解压后包含以下目录结构:
```
fund-sys/
├── bin/ # 脚本目录统一从项目根目录scripts引用
│ ├── start.sh # 启动脚本(自动识别服务名)
│ ├── stop.sh # 停止脚本
│ ├── restart.sh # 重启脚本
│ └── status.sh # 状态查看脚本
├── lib/ # 依赖JAR目录
│ └── fund-sys.jar # 服务JAR包包含所有依赖
└── conf/ # 配置文件目录排除docker相关配置
├── env.properties # 统一配置(所有服务共用)
├── service.properties # 个性化配置(每服务独立)
├── application.yml # 主配置文件
├── application-*.yml # 环境配置文件
└── logback-spring.xml # 日志配置文件
```
#### 4.2.3 Assembly打包配置
项目使用统一的Assembly配置脚本统一管理在项目根目录
```
fundplatform/
├── assembly/
│ └── assembly.xml # 统一的Assembly配置
├── scripts/ # 统一的脚本目录
│ ├── start.sh # 启动脚本(自动识别服务名)
│ ├── stop.sh # 停止脚本
│ ├── restart.sh # 重启脚本
│ ├── status.sh # 状态查看脚本
│ ├── env.properties # 环境变量配置模板
│ ├── start-all.sh # 一键启动所有服务
│ ├── stop-all.sh # 一键停止所有服务
│ ├── restart-all.sh # 一键重启所有服务
│ └── status-all.sh # 查看所有服务状态
└── ...各服务模块
```
**Assembly配置特点**
- 脚本从项目根目录 `scripts/` 引用,避免重复
- 配置文件排除 `application-docker.yml` 等Docker相关配置
- 统一配置 `env.properties` 和个性化配置 `service.properties` 分离
- 个性化配置覆盖统一配置,支持多租户部署
#### 4.2.4 前端打包
前端项目采用 Nginx 子路径部署方式:
- **管理后台** (fund-admin): 部署路径 `/fadmin/`
- **移动端H5** (fund-mobile): 部署路径 `/fmobile/`
- **API网关前缀**: `/fund`
```bash
# 使用部署脚本打包(推荐)
./scripts/deploy-frontend-nginx.sh admin # 管理后台
./scripts/deploy-frontend-nginx.sh mobile # 移动端H5
# 或手动打包
# 管理后台打包
cd fund-admin
npm install
npm run build
# 生成 dist 目录,打包为 fund-admin.zip
zip -r fund-admin.zip dist/
# 移动端H5打包
cd fund-mobile
npm install
npm run build
# 生成 dist 目录,打包为 fund-mobile.zip
zip -r fund-mobile.zip dist/
```
### 4.3 上传部署文件
```bash
# 创建发布包目录
mkdir -p /opt/fundplatform/packages
# 上传后端服务发布包
scp fund-gateway/target/fund-gateway.tar.gz user@server:/opt/fundplatform/packages/
scp fund-sys/target/fund-sys.tar.gz user@server:/opt/fundplatform/packages/
scp fund-cust/target/fund-cust.tar.gz user@server:/opt/fundplatform/packages/
scp fund-proj/target/fund-proj.tar.gz user@server:/opt/fundplatform/packages/
scp fund-req/target/fund-req.tar.gz user@server:/opt/fundplatform/packages/
scp fund-exp/target/fund-exp.tar.gz user@server:/opt/fundplatform/packages/
scp fund-receipt/target/fund-receipt.tar.gz user@server:/opt/fundplatform/packages/
scp fund-report/target/fund-report.tar.gz user@server:/opt/fundplatform/packages/
scp fund-file/target/fund-file.tar.gz user@server:/opt/fundplatform/packages/
# 上传前端发布包
scp fund-admin.zip user@server:/opt/fundplatform/packages/
scp fund-mobile.zip user@server:/opt/fundplatform/packages/
```
### 4.4 解压部署
```bash
# 解压后端服务到deploy目录
cd /opt/fundplatform/packages
tar -xzf fund-gateway.tar.gz -C /opt/fundplatform/deploy/
tar -xzf fund-sys.tar.gz -C /opt/fundplatform/deploy/
tar -xzf fund-cust.tar.gz -C /opt/fundplatform/deploy/
tar -xzf fund-proj.tar.gz -C /opt/fundplatform/deploy/
tar -xzf fund-req.tar.gz -C /opt/fundplatform/deploy/
tar -xzf fund-exp.tar.gz -C /opt/fundplatform/deploy/
tar -xzf fund-receipt.tar.gz -C /opt/fundplatform/deploy/
tar -xzf fund-report.tar.gz -C /opt/fundplatform/deploy/
tar -xzf fund-file.tar.gz -C /opt/fundplatform/deploy/
# 解压前端发布包
mkdir -p /opt/fundplatform/web
unzip fund-admin-nginx.zip -d /opt/fundplatform/web/admin/
unzip fund-mobile-nginx.zip -d /opt/fundplatform/web/mobile/
# 复制Nginx配置
cp /opt/fundplatform/web/admin/nginx.conf /etc/nginx/conf.d/fadmin.conf
cp /opt/fundplatform/web/mobile/nginx.conf /etc/nginx/conf.d/fmobile.conf
```
### 4.5 Nginx 配置
前端采用子路径部署Nginx 配置示例:
```nginx
# /etc/nginx/conf.d/fundplatform.conf
server {
listen 80;
server_name localhost;
# 管理后台 (部署路径: /fadmin/)
location /fadmin/ {
alias /opt/fundplatform/web/admin/;
try_files $uri $uri/ /fadmin/index.html;
}
# 移动端H5 (部署路径: /fmobile/)
location /fmobile/ {
alias /opt/fundplatform/web/mobile/;
try_files $uri $uri/ /fmobile/index.html;
}
# API代理 (网关前缀: /fund)
location /fund/ {
proxy_pass http://127.0.0.1:8000/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
```
**访问地址**
- 管理后台: `http://服务器IP/fadmin/`
- 移动端H5: `http://服务器IP/fmobile/`
```bash
# 上传一键管理脚本到deploy目录在解压服务包后执行
# 一键管理脚本位于项目根目录scripts目录需要单独上传
cp scripts/start-all.sh /opt/fundplatform/deploy/
cp scripts/stop-all.sh /opt/fundplatform/deploy/
cp scripts/restart-all.sh /opt/fundplatform/deploy/
cp scripts/status-all.sh /opt/fundplatform/deploy/
```
### 4.6 配置文件修改
各服务配置文件需要根据实际环境修改以下配置:
```yaml
# MySQL配置
spring:
datasource:
url: jdbc:mysql://数据库IP:3306/fund_sys?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai
username: fund_user
password: Fund@123456
# Redis配置
data:
redis:
host: Redis服务器IP
port: 6379
password: zjf@123456
# Nacos配置
cloud:
nacos:
discovery:
server-addr: Nacos服务器IP:8848
namespace: fund-platform
```
### 4.7 服务管理脚本
每个服务的 `bin` 目录下包含以下脚本:
| 脚本 | 说明 |
|------|------|
| start.sh | 启动服务 |
| stop.sh | 停止服务 |
| restart.sh | 重启服务 |
| status.sh | 查看服务状态 |
#### 4.6.1 单服务管理
```bash
# 启动单个服务
/opt/fundplatform/deploy/fund-sys/bin/start.sh
# 停止单个服务
/opt/fundplatform/deploy/fund-sys/bin/stop.sh
# 重启单个服务
/opt/fundplatform/deploy/fund-sys/bin/restart.sh
# 查看服务状态
/opt/fundplatform/deploy/fund-sys/bin/status.sh
```
#### 4.6.2 一键管理所有服务
```bash
# 一键启动所有服务
/opt/fundplatform/deploy/start-all.sh
# 一键停止所有服务
/opt/fundplatform/deploy/stop-all.sh
# 一键重启所有服务
/opt/fundplatform/deploy/restart-all.sh
# 查看所有服务状态
/opt/fundplatform/deploy/status.sh
```
### 4.8 服务启动方式说明(重要)
**⚠️ 重要提示:** 为了打包发布的需要,每个服务 JAR 都采用瘦包方式打包(依赖分离),因此**不能**使用 `java -jar fund*.jar` 方式执行。
#### 4.8.1 正确的启动方式
**方式一:使用启动脚本(推荐)**
```bash
# 使用服务自带的启动脚本
cd /opt/fundplatform/deploy/fund-sys
./bin/start.sh
# 或使用一键启动脚本
cd /opt/fundplatform/deploy
./start-all.sh
```
**方式二:使用 Maven Spring Boot 插件**
```bash
# 开发环境下,可以使用 Maven 插件启动
cd fund-sys
mvn spring-boot:run
```
**方式三:手动指定类路径(不推荐)**
```bash
# 如果必须手动启动,需要指定完整的类路径
cd /opt/fundplatform/deploy/fund-sys
java -cp "lib/*:conf/" com.fundplatform.sys.SysApplication
```
#### 4.8.2 错误的启动方式
**❌ 错误示例:**
```bash
# 以下方式是错误的,会导致 ClassNotFoundException
cd /opt/fundplatform/deploy/fund-sys/lib
java -jar fund-sys.jar
# 或在开发环境
cd fund-sys/target
java -jar fund-sys-0.0.1-SNAPSHOT.jar
```
#### 4.8.3 为什么不能使用 java -jar
1. **瘦包打包方式**:项目使用 Maven Assembly Plugin 将依赖 JAR 分离到 `lib/` 目录
2. **Manifest 配置**:主 JAR 包的 MANIFEST.MF 中没有 Class-Path 属性
3. **类加载机制**JVM 无法自动找到 `lib/` 目录下的依赖
#### 4.8.4 调试建议
**开发环境调试:**
- 使用 IDE 直接运行 Application 类
- 或使用 `mvn spring-boot:run` 命令
- 避免使用 `java -jar` 命令
**生产环境调试:**
- 始终使用 `bin/start.sh` 脚本启动
- 查看日志:`tail -f /datacfs/applogs/fund-sys/info.log`
- 检查进程:`ps aux | grep fund-sys`
- 查看端口:`netstat -tlnp | grep 8100`
## 五、部署操作指南
### 5.1 首次部署
```bash
# 1. 创建目录
mkdir -p /opt/fundplatform/deploy
mkdir -p /datacfs/applogs
# 2. 上传部署包
# 将deploy目录上传到/opt/fundplatform/
# 3. 赋予执行权限
chmod +x /opt/fundplatform/deploy/*/start.sh
chmod +x /opt/fundplatform/deploy/*/stop.sh
chmod +x /opt/fundplatform/deploy/*/restart.sh
chmod +x /opt/fundplatform/deploy/*.sh
# 4. 修改配置文件
# 编辑各服务的application.yml配置数据库、Redis、Nacos地址
# 5. 启动所有服务
/opt/fundplatform/deploy/start-all.sh
# 6. 检查服务状态
/opt/fundplatform/deploy/status.sh
```
### 5.2 服务管理
```bash
# 启动单个服务
/opt/fundplatform/deploy/fund-sys/start.sh
# 停止单个服务
/opt/fundplatform/deploy/fund-sys/stop.sh
# 重启单个服务
/opt/fundplatform/deploy/fund-sys/restart.sh
# 一键启动所有服务
/opt/fundplatform/deploy/start-all.sh
# 一键停止所有服务
/opt/fundplatform/deploy/stop-all.sh
# 一键重启所有服务
/opt/fundplatform/deploy/restart-all.sh
# 查看服务状态
/opt/fundplatform/deploy/status.sh
```
### 5.3 日志查看
```bash
# 查看实时日志
tail -f /datacfs/applogs/fund-sys/info.log
# 查看错误日志
tail -f /datacfs/applogs/fund-sys/error.log
# 查看API请求日志
tail -f /datacfs/applogs/fund-sys/aop.log
# 查看所有服务日志
tail -f /datacfs/applogs/*/info.log
```
### 5.4 服务更新
```bash
# 1. 备份旧版本
cp /opt/fundplatform/deploy/fund-sys/fund-sys.jar /opt/fundplatform/deploy/fund-sys/fund-sys.jar.bak
# 2. 上传新版本JAR包
scp fund-sys.jar user@server:/opt/fundplatform/deploy/fund-sys/
# 3. 重启服务
/opt/fundplatform/deploy/fund-sys/restart.sh
# 4. 检查服务状态
/opt/fundplatform/deploy/status.sh
tail -f /datacfs/applogs/fund-sys/info.log
```
---
## 六、常见问题处理
### 6.1 服务无法启动
```bash
# 检查端口占用
netstat -tlnp | grep 8100
# 检查Java进程
ps -ef | grep fund-sys
# 查看启动日志
tail -100 /datacfs/applogs/fund-sys/info.log
# 检查配置文件
cat /opt/fundplatform/deploy/fund-sys/application.yml
```
### 6.2 服务注册失败
```bash
# 检查Nacos是否运行
curl http://localhost:8848/nacos/v1/console/health/readiness
# 检查服务注册状态
curl http://localhost:8848/nacos/v1/ns/instance/list?serviceName=fund-sys&namespaceId=fund-platform
# 检查Nacos命名空间
curl http://localhost:8848/nacos/v1/console/namespaces
```
### 6.3 数据库连接失败
```bash
# 检查MySQL是否运行
systemctl status mysql
# 测试数据库连接
mysql -h localhost -u fund_user -p'Fund@123456' -e "SELECT 1"
# 检查数据库是否存在
mysql -u root -p'zjf@123456' -e "SHOW DATABASES LIKE 'fund_%'"
```
### 6.4 Redis连接失败
```bash
# 检查Redis是否运行
systemctl status redis
# 测试Redis连接
redis-cli -a 'zjf@123456' ping
```
---
## 七、附录
### 7.1 配置文件说明
#### 7.1.1 配置文件架构
项目采用**统一配置 + 个性化配置**分离架构:
| 配置文件 | 位置 | 用途 |
|----------|------|------|
| `env.properties` | scripts/ | 统一配置(所有服务共用) |
| `service.properties` | 各服务 src/main/resources/ | 个性化配置(每服务独立) |
**加载顺序**: 先加载 `env.properties`,后加载 `service.properties`(个性化覆盖统一)
#### 7.1.2 统一配置 (env.properties)
```properties
# /opt/fundplatform/deploy/fund-sys/conf/env.properties
# Nacos配置
NACOS_SERVER_ADDR=localhost:8848
NACOS_NAMESPACE=fund-platform
NACOS_GROUP=DEFAULT_GROUP
NACOS_USERNAME=nacos
NACOS_PASSWORD=nacos
# Redis配置
REDIS_HOST=localhost
REDIS_PORT=6379
REDIS_PASSWORD=zjf@123456
REDIS_DATABASE=0
# 日志配置
LOG_PATH=/datacfs/applogs
LOG_LEVEL_ROOT=INFO
LOG_LEVEL_APP=DEBUG
# 多租户路由配置
TENANT_ROUTING_ENABLED=true
DEFAULT_TENANT_ID=1
```
#### 7.1.3 个性化配置 (service.properties)
```properties
# /opt/fundplatform/deploy/fund-sys/conf/service.properties
# 服务名称
APP_NAME=fund-sys
# 实例名称(多租户场景)
INSTANCE_NAME=fund-sys
# 租户标识(空值=共享实例,有值=VIP实例
TENANT_ID=
```
### 7.2 多租户部署示例
#### 共享实例
```properties
# service.properties
APP_NAME=fund-sys
INSTANCE_NAME=fund-sys
TENANT_ID=
```
#### VIP专属实例
```properties
# service.properties
APP_NAME=fund-sys
INSTANCE_NAME=fund-sys-vip001
TENANT_ID=vip001
```
### 7.3 环境变量配置(旧版兼容)
```bash
# /opt/fundplatform/config/env.properties
# MySQL配置
MYSQL_HOST=localhost
MYSQL_PORT=3306
MYSQL_USERNAME=fund_user
MYSQL_PASSWORD=Fund@123456
# Redis配置
REDIS_HOST=localhost
REDIS_PORT=6379
REDIS_PASSWORD=zjf@123456
# Nacos配置
NACOS_HOST=localhost
NACOS_PORT=8848
NACOS_NAMESPACE=fund-platform
NACOS_USERNAME=nacos
NACOS_PASSWORD=nacos
```
### 7.2 端口清单
| 服务 | 端口 | 协议 |
|------|------|------|
| MySQL | 3306 | TCP |
| Redis | 6379 | TCP |
| Nacos API | 8848 | HTTP |
| Nacos 控制台 | 8048 | HTTP |
| fund-gateway | 8000 | HTTP |
| fund-sys | 8100 | HTTP |
| fund-cust | 8200 | HTTP |
| fund-proj | 8300 | HTTP |
| fund-req | 8400 | HTTP |
| fund-exp | 8500 | HTTP |
| fund-receipt | 8600 | HTTP |
| fund-report | 8700 | HTTP |
| fund-file | 8800 | HTTP |
### 7.3 访问地址
| 服务 | 地址 |
|------|------|
| API网关 | http://服务器IP:8000 |
| Nacos控制台 | http://服务器IP:8848/nacos |
| 管理后台 | http://服务器IP:80 |
### 7.4 默认账号
| 系统 | 用户名 | 密码 |
|------|--------|------|
| Nacos | nacos | nacos |
| 管理后台 | admin | 123456 |
---
**文档结束**