单体版启动
单体版的业务服务只有 boot-server 一个进程——它向内提供全部业务接口,供 Web 端(工作台/控制台/开发者中心)与移动端(mdp-app)调用,是绝大多数开发场景唯一需要启动的后端服务。
| 你要做什么 | 需要启动的 | 看哪篇 |
|---|---|---|
| 前后端对接(Web / App 业务) | boot-server(+ mysql、redis) | 本文 |
| 对外开放接口(第三方调 MDP) | sop-gateway-server + worker-server(+ 注册中心) | 开放平台启动 |
| 定时任务(事件/回调重试等) | PowerJob + worker-server | 定时任务启动 |
| 全功能自测 | 以上全部 | 三篇都看 |
测试、生产环境
本项目提到的单体版和微服务版只针对业务服务。实际上完整的单体版也需要至少启动 boot-server、sop-gateway-server、worker-server、PowerJob 4个服务。
一、公共准备
1. 准备中间件
| 中间件 | 版本 | 说明 |
|---|---|---|
| MySQL | 5.7 / 8.0(也支持达梦) | 必装,见环境准备 |
| Redis | 6.0+ | 必装 |
业务服务只需要这两样。单体版的配置全部在 jar 内,不接 Nacos 配置中心(Nacos 只在其余生产品链路里做注册中心,见开放平台启动)。
2. 建库、导入 SQL
CREATE DATABASE IF NOT EXISTS `mdp` CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;然后导入 docs/mdp.sql。
只需导入一次
mdp 库由 boot-server、worker-server、sop-gateway-server 三个服务共用。已导入过就不要重复导入,会覆盖表数据。
3. 编译根工程
在 IDEA 的 Maven 面板选择根工程 mdp 执行 install,或命令行执行:
# 若编译报错:找不到 mdp-parent ,可以先编译 mdp-parent ,然后再编译 根项目项目
mvn clean install
根工程聚合
mdp-parent、mdp-base、mdp-apps、mdp-sdk四个模块。第一次编译耗时较长,之后可只编译改动的模块。
4. 确认要改哪个配置文件
| 服务 | 要改的文件 | 该环境文件里有什么 |
|---|---|---|
| boot-server | mdp-apps/md-server/boot-server/src/main/resources/application-{env}.yml | 只有 Redis、数据源 |
{env} 取 dev / test / prod,由 application.yml 里的 spring.profiles.active: '@profile.active@' 决定——它是编译期由 Maven profile 注入的,默认 dev。worker-server、sop-gateway-server 的配置见开放平台启动与定时任务启动。
文件存储不在环境文件里
x-file-storage(含 storage-path)配在主 application.yml(boot-server 在 :317),不在 application-{env}.yml。要改文件存放目录,去主配置里改。
其余配置(缓存前缀、端口、MyBatis-Flex、sa-token 等)也都在主 application.yml,首次使用不建议修改。
编译期占位符的完整机制见编译期配置(filters)。
与其他服务的 Redis database 必须一致
如果后续还要启动 worker-server、sop-gateway-server:三者共用同一套缓存(mdp.cache.cachePrefix: mdp),spring.data.redis.database 必须一致,否则会出现「接口配好了却调不通」「缓存读了个空」这类很难定位的现象。
二、启动业务服务 boot-server
修改
boot-server/src/main/resources/application-dev.yml(只有 Redis、数据源两块):- Redis:
host、port、password、database按本地环境填写; - 数据源:
url、username、password按本地环境填写。若使用达梦、Oracle 等其他数据库,需同步修改driverClassName并替换pom.xml中的驱动。
spring: data: redis: host: <REDIS_HOST> port: <REDIS_PORT> password: '<REDIS_PASSWORD>' database: 6 # 与 worker-server、sop-gateway-server 保持一致 datasource: druid: driverClassName: com.mysql.cj.jdbc.Driver username: '<DB_USERNAME>' password: '<DB_PASSWORD>' url: jdbc:mysql://<DB_HOST>:3306/mdp?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useUnicode=true&useSSL=false&autoReconnect=true&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&nullCatalogMeansCurrent=true- Redis:
如需修改文件存放目录,改
application.yml的x-file-storage,只需动storage-path,其他参数不用改。开发环境默认本地存储方便调试,测试、生产环境务必换成 OSS如何将存储修改为其他OSS,参考文档: x-file-storeage
请注意,无论你切换为什么OSS,请务必配置2个 platform ,一个对应私有桶,一个对应公开桶。
# boot-server/src/main/resources/application.yml mdp: file: delFile: false suffix: doc,docx,gif,jpeg,jpg,pdf,png,rar,zip,xls,xlsx,txt,file,bin,egp,egpx,apk,xml,rpx,rpg,html,htm,wps,xbid,db,mp3,mp4 tempStoragePath: /Users/tangyh/data/mdp/temp/ # 公开桶(至少配置一个):桶内文件 URL 永久有效,用于富文本/markdown 插图等场景 publicBucket: PUBLIC_FILE dromara: x-file-storage: default-platform: localPlusExt # localPlusExt 是项目增强的配置 thumbnail-suffix: ".min.jpg" local-plus: - platform: localPlus domain: http://127.0.0.1:${server.port}/preview/ # 需与 path-patterns 保持一致,/ 结尾 base-path: local-plus/ path-patterns: /preview/** storage-path: /data/mdp/ # 文件存放根目录,例如 /data/mdp/、D:/data/mdp/ enableStorage: true enableAccess: true - platform: PUBLIC_FILE domain: http://127.0.0.1:${server.port}/preview/ base-path: PUBLIC_FILE/ # 基础路径 path-patterns: /preview/** # 访问路径 storage-path: /data/mdp/ enableStorage: true enableAccess: true启动
BootServerApplication:
验证:boot-server 监听 23455。前端切到单体模式即可访问,三端地址
http://localhost:7700(工作台)、7710(控制台)、7720(开发者中心)——前端默认就是boot模式,直接pnpm dev即可,步骤见前端启动。移动端的启动见移动端启动。
boot-server 的
pom.xml不引 Dubbo、不引 Nacos,也不做 Dubbo 注册——单体版核心业务链路是纯进程内调用,没有注册中心也能启动。
三、端口与启动类速查
| 服务 | 启动类 | 端口 | 属于哪条链路 |
|---|---|---|---|
| boot-server | BootServerApplication | 23455 | 业务服务(本文) |
| sop-gateway-server | SopGatewayServerApplication | 23456 | 开放平台 |
| worker-server | WorkerServerApplication | 23457 | 开放平台 / 定时任务 |
| zookeeper-server(内置) | ZookeeperRegistryServer | 2181 | 开放平台(仅 dev) |
| PowerJob 调度中心 | PowerJobServerApplication | 17700 | 定时任务 |
四、常见问题
| 现象 | 原因与处理 |
|---|---|
| 启动报数据源/Redis 连接失败 | 检查 application-dev.yml 两块配置;编译期 profile 决定读哪个环境文件,默认 dev |
| 前端请求 404 | VITE_GLOB_MODE 必须是 boot,且 VITE_PROXY 中 boot 那条的 target 端口与 boot-server 一致(23455),见前端配置 |
| 上传的文件打不开/预览 404 | x-file-storage 的 domain 与 path-patterns 不匹配,或 storage-path 目录无写权限(配置在主 application.yml) |
| 接口配好了却调不通、缓存像没生效 | 与其他服务的 spring.data.redis.database 不一致(见第一节末尾提醒) |