环境部署
环境部署
声明
部署是了解本项目和微服务的第一步,建议一定要在系统可以正常运行之后再进行修改。
- 如果你完全可以掌控微服务并且对本项目有所了解,只要遵从 Apache 2.0 开源协议,可以随意修改代码;
- 如果你还不足以掌控微服务并且是初次接触本项目,最好按照文档说明进行操作,不要随意进行修改。在不懂的情况下进行大量修改,搞不定了就以“一句话、一张图”的方式来问问题,这就是在浪费时间。大家都是搞 IT 的成年人应该都懂。
提示
如果急于部署只是为了看看界面长个什么样子,尝个鲜。建议直接部署单体版,搭个数据库和 Nodejs 环境即可,省时省力快捷。
[一]准备工作
后端运行所需的基础设施
- (1) 后端本地运行所需标准最小环境
序号 | 设施 | 说明 |
---|---|---|
1 | Nacos | 分布式版本使用的 Nacos 作为配置中心和服务发现中心,所以需要安装 Nacos。不管本地运行还是 Docker,K8S 环境都需要。 |
2 | Redis | 运行的必须组件,分布式版本,单体版本;本地运行还是还是 Docker,K8S 环境都需。 |
3 | Kafka | 运行的必须组件,分布式版本,单体版本;本地运行还是还是 Docker,K8S 环境都需要。(虽然本系统使用的是 spring cloud bus 同时兼容 RabbitMQ 和 Kafka,由于使用 Debezium 来支持工作流,ElasticSearch 数据同步,所以如果没有特殊的使用需求还是建议使用 Kafka)。 |
4 | PostgreSQL 数据库 | 建议使用最新版,其它版本也可以运行个人多年项目经验,感觉 PostgreSQL 更好用和顺手,所以默认数据为 PostgreSQL。基础代码都是使用 spring data jpa(Mybatis Plus 也支持),所以其它数据库也支持,修改一下配置就行。 |
5 | MySQL 数据库 | Nacos 运行需要依赖数据库,长久运行需要依赖于 MySQL(目前 Nacos 不支持其它数据库,虽说 Nacos RoadMap 有多数据库支持,不知道什么时候开发完成)。本地运行为了省事,也可以用 Nacos 的内置数据库,这样减少本地运行资源占用。 |
6 | ELK | 日志中心、Skywalking 监控所需基础环境,本地开发运行可以不需要,需要在配置关闭日志收集。 |
- (2) 后端代码开发环境
IDE : IDEA 或 Eclipse (推荐使用IDEA)
JDK : Dante Cloud 2.7.X (JDK 1.8+), Dante Cloud 3.0.X (JDK 17+)。(推荐使用 Liberica JDK)
Git : 推荐使用最新版 Git
Maven : 推荐使用最新版 Maven
- (3) 后端环境系统配置
参见:本地开发环境搭建
前端运行所需的基础设施
说明
Dante Cloud 自基于 Vue3 + Vite4 + Typescript + Monorepo 新版前端推出之后,已经不再使用 yarn 作为前端包管理工具,转而使用 Pnpm 作为默认的包管理
- (1) 前端端本地运行所需标准最小环境
设施 | 当前版本 | 说明 |
---|---|---|
Nodejs | >=12.0.0 | 运行前端 Vue 工程必须依赖,如果不需要运行前端可以忽略, |
Pnpm | latest | 前端包管理工具,Npm、PNPM 或其它工具也都可以, 推荐使用 Yarn |
- (2) 前端代码开发开发环境
Visual Studio Code (Vscode)或其它 (推荐Vscode)
- (3) 前端环境系统配置
参见:本地开发环境搭建
[二]后端运行
注意
开展以下各项工作以前,请确保 Git,数据库,Redis,Nacos,Kafka,ELK 套件已经正确安装和运行。
确保相关基础设施组件正确安装和运行的含义,不仅是指相关组件已经可以运行,还包括可以正常连接、访问或操作。例如:Kafka,在软件安装完成之后,可以结合自己的部署方式和部署架构,找一个自己熟悉的可视化工具进行连接测试。连接测试成功之后,再进行后续操作。
微服务架构与单体架构最大的不同点之一就是涉及的基础设施较多,任何一个点出问题都会导致系统运行异常。连通性测试未通过之前,不要急于部署系统。很多朋友就是急于部署,折腾一圈下来发现系统运行不正常,又花费大量的时间和精力排查代码、交流群里面咨询、发 ISSUE,后来发现是某项基础设施组件单独用工具访问都联不通。
说明
如果觉得安装 Nacos,Kafka,ELK 比较麻烦,建议使用容器进行安装,参见章节:容器化部署。数据库和 Redis 还是建议本地安装。
[1]检出代码创建工程
IDEA
菜单 File -> New -> Project From Version Control...
, 在弹出框中输入本工程 Git 地址:https://gitee.com/dromara/dante-cloud.git,然后设置放置目录,点击 OK 即可
[2]创建数据库
进入PostgreSQL
的SQL Shell(psql)
(在 Windows 的菜单中可以找到),使用超级管理员账号和密码登录进入数据库,执行以下脚本:
// 以下要分步,一条一条地执行,不要全部复制,一把全部执行。一定要注意每个语句结尾要以“;”结束。
CREATE USER herodotus WITH PASSWORD 'herodotus';
CREATE DATABASE herodotus OWNER herodotus;
GRANT ALL PRIVILEGES ON DATABASE herodotus TO herodotus;
说明
- 这里不管是用户名,用户密码还是数据库名均使用 herodotus 是为了方便,请根据自己实际情况修改。
- 这里没有进行分库(即:所有的服务使用同一个数据库),如不满足需求,请在整体部署完成并且可以正常运行后,再结合自己的实际情况修改。
- 以上是均是以
PostgreSQL
作为默认数据库进行说明。 Linux
环境下在命令行中,以管理员账号登录PostgreSQL
数据库
提示
系统默认使用 PostgreSQL
数据库,如果想要使用其它数据库,建议详细全面阅读本章节,对整体部署过程有了详细了解之后,再来了解如何切换数据库。参阅:更换数据库
[3]创建或导入 Nacos 配置
提示
在进行以下操作之前,建议对 Nacos 中 Namespace,Group 等基础概念和具体操作先行做一定的了解。【官方文档】
方式一:手动创建 Nacos 配置信息
工程的 ${project_home}/platform/dante-cloud-monitor/resources/configs
目录下,放置着所有需要导入到 Nacos
中的默认配置。开始其它工作之前,需要先在 Nacos 中创建所有配置
访问
Nacos
后台管理,默认本机地址, 使用默认账号nacos/nacos
登录。在
Nacos
后台中,在配置管理 --> 配置列表
功能中,点击添加按钮,手动添加所有配置文件,操作如下图所示:

警告
- 创建配置之前,请提前规划配置放置的命名空间(Namespace)。默认是放到 Nacos
public
命名空间中,如果不符合您的需求,可以在新建命名空间之后,再进行配置的创建。 ${project_home}/platform/dante-cloud-monitor/resources/configs
目录下,还有一级目录。这级目录的名称,是配置文件对应Nacos
中的Group
名称。所以在Nacos
中新建配置时,一定要注意Group
的创建和匹配。切勿全部新建到DEFAULT_GROUP
组下,这样会导致无法正常运行。
提示
- 本项目所有
Nacos
配置,均是采用yaml
格式。如需使用其它格式请自行修改 - Dante Cloud 3.X 版本下,相关配置移动到
${project_home}/configurations/backup/alibaba
目录下
方式二:批量导入 Nacos 配置
手动方式创建 Nacos 配置,比较繁琐和容易出错。为了使用提升使用的便捷性,在工程 ${project_home}/platform/dante-cloud-monitor/resources/imports
目录下提供可以直接导入的配置包。可以方便的完成导入配置,创建Group
等操作。
访问
Nacos
后台管理,默认本机地址, 使用默认账号nacos/nacos
登录。在
Nacos
后台中,在配置管理 --> 配置列表
功能中,点击导入配置按钮,选择配置导入包即可,完成配置文件导入和 Group 的创建,操作如下图所示:

警告
- 创建配置之前,请提前规划配置放置的命名空间(Namespace)。默认是放到 Nacos
public
命名空间中,如果不符合您的需求,可以在新建命名空间之后,再进行配置的创建。
提示
Dante Cloud 3.X 版本下,相关配置移动到 ${project_home}/configurations/backup/alibaba
目录下
[4]修改 Nacos 配置
上一步所导入的配置参数均是使用默认的、本地化的配置,需要根据自己搭建的基础设施环境,对相关的配置进行修改。
访问
Nacos
后台管理,默认本机地址, 使用默认账号nacos/nacos
登录。找到对应的配置文件进行修改。常用的设置在
dante-cloud-environment.yaml
中即可修改完成,如果不满足您实际需求,可再到其它的配置文件中详细修改。
说明
为了方便使用,Dante Cloud 所有的配置采用**“共享式,统一化多环境配置模式”**设计,大多数配置在对应 多环境
的 dante-cloud-environment.yaml
配置中就可以完成修改。例如,您当前使用的是 development
环境,那么在 Nacos 后台管理中,找到 Group 是 development
的 dante-cloud-environment.yaml
配置修改。
Dante Cloud 多环境配置设计及使用,参阅:多环境配置
[5]修改 pom.xml 配置
在工程根目录下,找到 pom.xml
, 修改对应 profile
中参数。由于使用的多环境,所以在该文件中,需要找到应环境的配置,修改该环境下的对应的配置信息。主要结构如下所示:
<!-- 开发 -->
<profile>
<id>development</id>
<activation>
<!--默认激活配置-->
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<!--当前环境-->
<profile>development</profile>
<database>postgresql</database>
<!--基础设施:tencent、alibaba、spring-->
<facility>alibaba</facility>
<!--代码构建控制-->
<!--跳过构建源代码包-->
<skip.build.source.package>false</skip.build.source.package>
<!--不copy代码包到docker构建目录-->
<skip.copy.docker.resource>false</skip.copy.docker.resource>
<!--不执行git commit 构建-->
<skip.build.git.commit.info>false</skip.build.git.commit.info>
<!--Spring Cloud Alibaba配置中心命名空间,用于支持多环境.这里必须使用ID,不能使用名称,默认为空-->
<alibaba.namespace>2e4f5cf6-2ac8-4fe0-99be-b0562659c120</alibaba.namespace>
<!--Spring Cloud Alibaba配置中心地址-->
<alibaba.config.server-addr>192.168.101.10:8848</alibaba.config.server-addr>
<!--Spring Cloud Alibaba服务发现地址-->
<alibaba.discovery.server-addr>192.168.101.10:8848</alibaba.discovery.server-addr>
<alibaba.sentinel.server-addr>192.168.101.10:8858</alibaba.sentinel.server-addr>
<tencent.polaris.namespace>default</tencent.polaris.namespace>
<!--Spring Cloud Tencent 配置 【(8091)grpc/tcp,默认注册中心端口;(8090)http/tcp,默认注册中心端口】-->
<tencent.polaris.server-addr>192.168.101.10:8091</tencent.polaris.server-addr>
<!--Spring Cloud Tencent Config 配置 【(8093)grpc/tcp,默认配置中心端口】-->
<tencent.polaris.config-addr>192.168.101.10:8093</tencent.polaris.config-addr>
<!--Spring Cloud Tencent 本地缓存目录-->
<tencent.polaris.local.dir>./configurations/configs/tencent/backup/config</tencent.polaris.local.dir>
</properties>
必须要修改的参数涉及以下几项:
- alibaba.namespace:Nacos 命名空间 ID。如果要使用的是默认的命名空间,该参数不设置任何值。
- alibaba.config.server-addr:配置中心地址,即 Nacos 服务端地址
- alibaba.discovery.server-addr:服务发现地址,即 Nacos 服务端地址
- alibaba.sentinel.server-addr:Sentinel Dashborad 地址
详细参数说明,参阅:多环境配置
[6]编译代码
编译方式一
用命令行进入到工程代码所在根据目录,通过执行下面命令进行编译
mvn install
或
mvn package
提示
推荐使用install
命令,进行编译。使用该命令编译完成之后,会在Maven
本地缓存中,生成相应的包,这样dante-cloud-athena
功能就可以直接使用。
警告
在第一次编译的时候,因为在本地缓存缺少相关的包,所以在执行 mvn clean
操作时会提示错误。因此,在第一次编译时只使用 mvn package
或 mvn install
。第一次编译完成之后,就可以使用 mvn clean package
或 mvn clean install
命令进行编译。IDE 界面操作也是同理。
编译方式二
在 IDE 工程中,利用 IDE 提供的界面操作进行编译。
以IDEA
为例,在右侧Maven Panel
中,选择dante-cloud(root)
节点,点击 Lifecycle 节点下的install
或者 package
进行编译。参考下图:

[7]数据初始化
具体操作方法,参阅:数据初始化
[8]运行服务模块
因部分核心代码逻辑以及组件存在“时机性”问题,启动顺序的不同会略有时机差异性。所以请按照以下顺序启动服务
- UpmsApplication (用户中心服务 必需)
- UaaApplication (统一认证服务 必需)
- MessageApplication (平台消息服务 必需)
- GatewayApplication (服务网关服务 必需)
- MonitorApplication (监控中心服务 可选)
- BpmnApplication (分布式工作流 可选)
[9]运行 ELK(可选)
完整运行本套微服务架构,需要搭建 ELK
套件,作为日志中心以及 Skywalking
链路追踪的数据存储介质。
目前已有基础功能尚未涉及到搜索,只有日志中心和链路追踪功能涉及到 Elasticsearch
。如果本地开发不要相关功能,就不需要安装和运行ELK
套件。
如果已经安装了可运行的 ELK 套件,或者其它组合,请略过该步骤。如果觉得单独安装麻烦,建议以 Docker 的方式安装运行,本系统提供了 docker-compose 安装脚本,参见章节:容器化部署
提示
如果本地不想使用 ELK
,那么需要关闭微服务的日志收集功能。
修改你所使用 多环境
对应的 dante-cloud-environment.yaml
配置中的 herodotus.environment.logstash-server-addr
属性的值,将其值设置成 false
,即可关闭日志收集功能,就解除服务对 ELK
的依赖
[10]运行 Skywalking(可选)
完整运行本套微服务架构,需要搭建 ELK
套件,作为日志中心以及Skywalking
链路追踪的数据存储介质。正式环境运行建议使用 Docker
或 K8S
的方式运行 Skywalking
,并以 Docker
的形式运行服务。
如果仅是在本地运行调试服务与 Skywalking
的联动,可以在 IDE 中增加参数后,再运行服务即可。
以 IDEA 为例,点开 Edit Configurations...
,在对应服务的 VM Options
输入框中添加如下参数即可调试 Skywalking
-javaagent:D:/Workspaces/Java/herodotus-cloud/configurations/docker/context/agent/skywalking-agent-es7-8.6.0.jar=agent.service_name=herodotus-cloud-upms,collector.backend_service=192.168.101.10:11800
操作界面如下图所示,IDEA 版本不同配置方式会有差异

[11]以 Docker 方式部署(可选)
参见:容器化部署
[12]运行验证
以上步骤完成之后,工程后端整体搭建部署完成。可以通过运行前端界面进行操作或者用 Postman
调用接口的方式进行验证。
如果界面操作正常,或者接口调用正常,则说明工程已经正确部署。更多验证,参阅:OAuth2 授权标准
[三]前端运行
[1]检出代码
在合适位置上,使用 Git 检出前端工程代码。项目地址
[2]修改配置
在前端工程的 packages/ui 目录下,找到 .env.development
或者 .env.production
文件。修改其中的参数
参数说明
- NODE_ENV:当前多环境名称,不用修改
- VITE_PROJECT:工程名称,名称。通过该参数以动态修改域名以外的地址,以实现单体版等使用同一套操作界面。
dante
指定是微服务版,其它任意字符串或者空值指定是单体版 - VITE_PROJECT_NAME:界面显示的系统名称
- VITE_API_URL:后端服务网关访问地址
- VITE_WS_URL:后端服务 WebSocket 访问地址
- VITE_SECRET_KEY:前端关键信息 SM4 加密秘钥
- VITE_AUTO_REFRESH_TOKEN:开启自动刷新 Token 机制
- VITE_MULTI_TENANCY_ID:当前应用租户 ID,需要后台进行租户配置,空值为不启用租户模式。
- VITE_USE_CRYPTO:是否开启前后端数据加密
- VITE_USE_WEBSOCKET:是否开启 WebSocket
- VITE_USE_OIDC:是否使用 OpenID Connect(OIDC) 协议
- VITE_OAUTH_CLIENT_ID:OAuth2 密码模式 Client Id。
- VITE_OAUTH_CLIENT_SECRET:OAuth2 密码模式 Client 密码
- VITE_OAUTH_GRANT_TYPE:OAuth2 授权模式
注意
VITE_SECRET_KEY
秘钥,并不是本系统前后端数据加密传输使用的秘钥,只是对前端临时存储的关键信息加密的秘钥。
本系统前后端数据加密传输,是基于自主设计的自定义数据传输 Session,实现国密 SM4 加密秘钥的动态生成,加密传输,一人一钥机制。每次使用系统都会动态重新生成,采用 SM2 前后端加密传输,临时存储至前端。缓存时间与 OAuth 2 Token
设置时间相同,正常退出系统后,会清除前端临时存储数据。
并没有绝对安全的加密措施,前后端数据加密传输也仅仅是相对提升安全性。毕竟不管如何处理,前端都要存储一定的关键信息,而且前端是最容易破解的。正式环境使用还是要配合
Https
以及其它安全防护措施。
[3]前端运行命令
// 进入目录
cd dante-cloud-ui
// 安装依赖
pnpm install
// 可以自己编译一下组件库
pnpm shared:build
// 如果要使用 `.env.development` 中的配置值,使用下面命令
pnpm dev
// 如果要使用 `.env.production` 中的配置值,使用下面命令
pnpm prod
[4]运行验证
打开浏览器,输入:http://localhost:3000 默认账户/密码 system/123456
若能正确展示登录页面,并能成功登录,菜单及页面展示正常,则表明环境搭建成功