部署 Spring Cloud Blade

关于 Spring Cloud Blade

  • 采用前后端分离的模式,前端开源两个框架:Sword (基于 React、Ant Design)、Saber (基于 Vue、Element-UI)
  • 后端采用SpringCloud全家桶,并同时对其基础组件做了高度的封装,单独开源出一个框架:BladeTool
  • BladeTool已推送至Maven中央库,直接引入即可,减少了工程的臃肿,也可更注重于业务开发
  • 集成Sentinel从流量控制、熔断降级、系统负载等多个维度保护服务的稳定性。
  • 注册中心、配置中心选型Nacos,为工程瘦身的同时加强各模块之间的联动。
  • 极简封装了多租户底层,用更少的代码换来拓展性更强的SaaS多租户系统。
  • 借鉴OAuth2,实现了多终端认证系统,可控制子系统的token权限互相隔离。
  • 借鉴Security,封装了Secure模块,采用JWT做Token认证,可拓展集成Redis等细颗粒度控制方案。
  • 项目分包明确,规范微服务的开发模式,使包与包之间的分工清晰。

模块说明

  1. SpringBlade
  2. ├── blade-auth -- 授权服务提供
  3. ├── blade-common -- 常用工具封装包
  4. ├── blade-gateway -- Spring Cloud 网关
  5. ├── blade-ops -- 运维中心
  6. ├── blade-admin -- spring-cloud后台管理
  7. ├── blade-develop -- 代码生成
  8. ├── blade-resource -- 资源管理
  9. ├── blade-seata-order -- seata分布式事务demo
  10. ├── blade-seata-storage -- seata分布式事务demo
  11. ├── blade-service -- 业务模块
  12. ├── blade-desk -- 工作台模块
  13. ├── blade-log -- 日志模块
  14. ├── blade-system -- 系统模块
  15. └── blade-user -- 用户模块
  16. ├── blade-service-api -- 业务模块api封装
  17. ├── blade-desk-api -- 工作台api
  18. ├── blade-dict-api -- 字典api
  19. ├── blade-system-api -- 系统api
  20. └── └── blade-user-api -- 用户api

通过源码部署 Spring Cloud Blade

本文档教程基于 Spring Cloud Blade v3.5.0 版本部署

一、部署 Nacos

通过开源应用商店部署 Nacos,在开源应用商店中搜索 Nacos单机 并选择安装 2.1.2 版本。

二、部署 Redis

通过开源应用商店部署 Redis,在开源应用商店中搜索 Redis 并选择安装 5.0.7 版本。

三、部署 Sentinel Dashboard

通过开源应用商店部署 Sentinel Dashboard,在开源应用商店中搜索 Sentinel-Dashboard 并选择安装 1.8.6 版本。

四、初始化数据库

从开源应用商店安装的 Nacos 自带了 Mysql 组件,进入该组件中 -> 端口 -> 打开对外服务,通过客户端工具连接。

  1. 创建 blade 数据库。
  2. 初始化表结构和数据:Blade SQL

五、部署 Blade 后端服务

  1. 基于源码创建组件,填写以下信息:
内容
组件名称自定义
组件英文名称自定义
仓库地址https://gitee.com/smallc/SpringBlade
代码版本: Tagv3.5.0
  1. 检测出多模块构建,进入多模块构建页面

部署 Spring Cloud Blade - 图1tip

  1. 创建前,在多模块构建页面 -> 右侧修改按钮 -> 修改每个模块的启动命令,如下。
  2. 创建后,删除每个组件的默认端口,为每个组件添加对应的新端口和端口别名并打开端口的对内服务,如下。
  3. 修改完成后构建组件。
组件端口启动命令
blade-auth8100web: java $JAVA_OPTS -jar blade-auth/target/blade-auth.jar
blade-gateway80web: java $JAVA_OPTS -jar blade-gateway/target/blade-gateway.jar
blade-admin7002web: java $JAVA_OPTS -jar blade-ops/blade-admin/target/blade-admin.jar
blade-develop7007web: java $JAVA_OPTS -jar blade-ops/blade-develop/target/blade-develop.jar
blade-report8108web: java $JAVA_OPTS -jar blade-ops/blade-report/target/blade-report.jar
blade-resource8010web: java $JAVA_OPTS -jar blade-ops/blade-resource/target/blade-resource.jar
blade-swagger18000web: java $JAVA_OPTS -jar blade-ops/blade-swagger/target/blade-swagger.jar
blade-desk8105web: java $JAVA_OPTS -jar blade-service/blade-desk/target/blade-desk.jar
blade-log8103web: java $JAVA_OPTS -jar blade-service/blade-log/target/blade-log.jar
blade-system8106web: java $JAVA_OPTS -jar blade-service/blade-system/target/blade-system.jar
blade-user8102web: java $JAVA_OPTS -jar blade-service/blade-user/target/blade-user.jar
  1. 编辑依赖关系,切换到 编排模式 拖动组件进行依赖关系建立。

部署 Spring Cloud Blade - 图2

  1. 进入 Nacos 组件内 -> 端口 -> 打开 8848 端口的对外服务,访问 Nacos 并登录,默认用户密码 nacos/nacos,创建以下配置文件。

创建 blade.yaml 配置文件

blade.yaml

  1. #服务器配置
  2. server:
  3. undertow:
  4. # 以下的配置会影响buffer,这些buffer会用于服务器连接的IO操作,有点类似netty的池化内存管理
  5. buffer-size: 1024
  6. # 是否分配的直接内存
  7. direct-buffers: true
  8. # 线程配置
  9. threads:
  10. # 设置IO线程数, 它主要执行非阻塞的任务,它们会负责多个连接, 默认设置每个CPU核心一个线程
  11. io: 16
  12. # 阻塞任务线程池, 当执行类似servlet请求阻塞操作, undertow会从这个线程池中取得线程,它的值设置取决于系统的负载
  13. worker: 400
  14. #spring配置
  15. spring:
  16. cloud:
  17. sentinel:
  18. eager: true
  19. devtools:
  20. restart:
  21. log-condition-evaluation-delta: false
  22. livereload:
  23. port: 23333
  24. #feign配置
  25. feign:
  26. sentinel:
  27. enabled: true
  28. okhttp:
  29. enabled: true
  30. httpclient:
  31. enabled: false
  32. #对外暴露端口
  33. management:
  34. endpoints:
  35. web:
  36. exposure:
  37. include: "*"
  38. endpoint:
  39. health:
  40. show-details: always
  41. #knife4j配置
  42. knife4j:
  43. #启用
  44. enable: true
  45. #基础认证
  46. basic:
  47. enable: false
  48. username: blade
  49. password: blade
  50. #增强配置
  51. setting:
  52. enableSwaggerModels: true
  53. enableDocumentManage: true
  54. enableHost: false
  55. enableHostText: http://localhost
  56. enableRequestCache: true
  57. enableFilterMultipartApis: false
  58. enableFilterMultipartApiMethodType: POST
  59. language: zh-CN
  60. enableFooter: false
  61. enableFooterCustom: true
  62. footerCustomContent: Copyright © 2022 SpringBlade All Rights Reserved
  63. #swagger配置信息
  64. swagger:
  65. title: SpringBlade 接口文档系统
  66. description: SpringBlade 接口文档系统
  67. version: 3.5.0
  68. license: Powered By SpringBlade
  69. licenseUrl: https://bladex.vip
  70. terms-of-service-url: https://bladex.vip
  71. contact:
  72. name: smallchill
  73. email: smallchill@163.com
  74. url: https://gitee.com/smallc
  75. #blade配置
  76. blade:
  77. token:
  78. sign-key: 请配置32位签名提高安全性
  79. xss:
  80. enabled: true
  81. skip-url:
  82. - /weixin
  83. secure:
  84. skip-url:
  85. - /test/**
  86. client:
  87. - client-id: sword
  88. path-patterns:
  89. - /sword/**
  90. - client-id: saber
  91. path-patterns:
  92. - /saber/**
  93. tenant:
  94. column: tenant_id
  95. tables:
  96. - blade_notice

创建 blade-dev.yaml 配置文件

blade-dev.yaml

  1. #spring配置
  2. spring:
  3. redis:
  4. ##redis 单机环境配置
  5. host: 127.0.0.1
  6. port: 6379
  7. password:
  8. database: 0
  9. ssl: false
  10. #项目模块集中配置
  11. blade:
  12. #通用开发生产环境数据库地址(特殊情况可在对应的子工程里配置覆盖)
  13. datasource:
  14. dev:
  15. url: jdbc:mysql://127.0.0.1:3306/blade?useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&tinyInt1isBit=false&allowMultiQueries=true&serverTimezone=GMT%2B8
  16. username: root
  17. password: root

部署 Spring Cloud Blade - 图3info

更新或重启除 Nacos Mysql Redis Sentinel Dashboard 之外的所有组件。

六、部署 Blade 前端 Saber

  1. 基于源码创建组件,填写以下信息:
内容
组件名称自定义
组件英文名称自定义
仓库地址https://gitee.com/zhangbigqi/Saber.git
代码版本v3.5.0

部署 Spring Cloud Blade - 图4caution

这里使用了我的仓库地址,修改了 Nginx 配置。

  1. 进入 Saber 组件内 -> 端口 -> 删除默认端口,新增 8080 端口并打开对外服务。
  2. 编辑依赖关系,切换到 编排模式 拖动组件进行依赖关系建立,将 Saber 依赖 blade-gateway 并更新组件。
  3. 使用默认域名访问 Saber UI 并登录。

最终部署拓扑图

部署 Spring Cloud Blade - 图5