# 资金服务平台单机部署文档 > 版本: v2.0 > 更新日期: 2026-02-22 > 作者: zhangjf --- ## 一、部署概述 ### 1.1 部署架构 ``` ┌─────────────────────────────────────────────────────────────────┐ │ 单机部署架构 │ ├─────────────────────────────────────────────────────────────────┤ │ │ │ ┌─────────────────────────────────────────────────────────┐ │ │ │ 前端服务 │ │ │ │ fund-admin (Nginx:80) fund-mobile (Nginx:81) │ │ │ └─────────────────────────┬───────────────────────────────┘ │ │ │ │ │ ┌─────────────────────────▼───────────────────────────────┐ │ │ │ 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/ # 脚本目录 │ ├── start.sh # 启动脚本 │ ├── stop.sh # 停止脚本 │ ├── restart.sh # 重启脚本 │ └── status.sh # 状态查看脚本 ├── lib/ # 依赖JAR目录 │ └── fund-sys.jar # 服务JAR包(包含所有依赖) └── conf/ # 配置文件目录 ├── application.yml # 主配置文件 ├── application-*.yml # 环境配置文件 └── logback-spring.xml # 日志配置文件 ``` #### 4.2.3 前端打包 ```bash # 管理后台打包 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/ # 上传一键管理脚本到deploy目录 cp /opt/fundplatform/packages/start-all.sh /opt/fundplatform/deploy/ cp /opt/fundplatform/packages/stop-all.sh /opt/fundplatform/deploy/ cp /opt/fundplatform/packages/restart-all.sh /opt/fundplatform/deploy/ cp /opt/fundplatform/packages/status.sh /opt/fundplatform/deploy/ ``` ### 4.5 配置文件修改 各服务配置文件需要根据实际环境修改以下配置: ```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.6 服务管理脚本 每个服务的 `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 ``` ## 五、部署操作指南 ### 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 环境变量配置 ```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 | --- **文档结束**