环境部署
# 环境部署
# 准备工作
# 后端运行所需的基础设施
设施 | 当前版本 | 说明 |
---|---|---|
Nacos | 2.0.3 | 分布式版本使用的Nacos作为配置中心和服务发现中心,所以需要安装Nacos。不管本地运行还是Docker,K8S环境都需要。 |
Redis | 3.2.100+ | 运行的必须组件,分布式版本,单体版本;本地运行还是还是Docker,K8S环境都需要 |
Kafka | 2.6.0+ | 运行的必须组件,分布式版本,单体版本;本地运行还是还是Docker,K8S环境都需要。(虽然本系统使用的是spring cloud bus同时兼容RabbitMQ和Kafka,由于使用Debezium来支持工作流,ElasticSearch数据同步,所以如果没有特殊的使用需求还是建议使用Kafka) |
PostgreSQL 数据库 | 建议使用最新版,其它版本也可以运行 | 个人多年项目经验,感觉PostgreSQL更好用和顺手,所以默认数据为PostgreSQL。基础代码都是使用spring data jpa(Mybatis Plus也支持),所以其它数据库也支持,修改一下配置就行 |
MySQL 数据库 | 5.6.5+ | Nacos 运行需要依赖数据库,长久运行需要依赖于MySQL(目前Nacos不支持其它数据库,虽说Nacos RoadMap有多数据库支持,不知道什么时候开发完成)。本地运行为了省事,也可以用Nacos的内置数据库,这样减少本地运行资源占用 |
Sentinel Dashboard | 1.8.2 | 本地调试运行可以不需要 |
Skywalking | 8.7.0 | 本地运行可以不需要 |
ELK | 7.0.0 + | 日志中心中心所需基础环境,本地运行可以不需要,需要在配置关闭日志收集 |
- (1) 后端本地运行所需标准最小环境
Nacos >= 1.1.0 (推荐使用最新版Nacos)
Redis >= 3.0.0
Kafka >= 2.6.0 (目前Kafka运行还需要依赖Zookeeper)
PostgreSQL >= 10
2
3
4
- (2) 开发环境
IDEA 或 Eclipse (推荐IDEA)
JDK >= 1.8 (推荐1.8版本)
Maven >= 1.3
Git 使用最新版
2
3
4
- (3) 环境配置
参见:本地开发环境搭建
# 前端运行所需的基础设施
设施 | 当前版本 | 说明 |
---|---|---|
Nodejs | 16.13.0 + | 运行前端Vue工程必须依赖,如果不需要运行前端可以忽略 |
Yarn | 1.22.10 | 前端包管理工具,如果习惯使用Yarn,用Npm或其它工具也都可以 |
- (1) 前端端本地运行所需标准最小环境
Nodejs >= 14
Yarn >= 1.22.10 (Yarn2 目前会有很多问题,劣势太多不建议使用)
2
- (2) 开发环境
Visual Studio Code (Vscode)或其它 (推荐Vscode)
- (3) 环境配置
参见:本地开发环境搭建
# 后端运行
说明
开展以下各项工作以前,请确保数据库应用,Redis,Nacos,Kafka,ELK 套件已经正确安装和运行。
# [1]检出代码创建工程
# 方式一
前往Gitee下载页面 (opens new window)下载解压到工作目录
打开IDE导入工程
Eclipse
,菜单File -> Import
,然后选择Maven -> Existing Maven Projects
,点击Next
按钮,选择工作目录,然后点击Finish
按钮,即可成功导入。IDEA
,菜单File -> Open
,然后选择已解压工程所在的目录,点击OK
即可。
IDE会自动加载相关的依赖包,具体要依据网络以及个人本地Maven缓存情况而定。配置 Maven 本地仓库,参见:本地开发环境配置
# 方式二
IDEA
菜单 File -> New -> Project From Version Control...
, 在弹出框中输入本工程Git地址:https://gitee.com/herodotus/eurynome-cloud.git (opens new window),然后设置放置目录,点击 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;
2
3
警告
要分步,一条一条地执行,不要全部复制,一把全部执行。一定要注意每个语句结尾要以“;”结束。
说明
- 这里不管是用户名,用户密码还是数据库名均使用herodotus是为了方便,请根据自己实际情况修改。
- 这里没有进行分库(即:所有的服务使用同一个数据库),如不满足需求,请在整体部署完成可以正常运行后,再结合自己的实际情况修改。
- 以上是均是以
PostgreSQL
作为默认数据库进行说明,如果要使用其它数据库,具体安装和建库步骤请自行探索。
提示
系统默认使用 PostgreSQL
数据库,如果想要使用其它数据库,建议详细全面阅读本章节,对整体部署过程有了详细了解之后,再来了解如何切换数据库。参阅:更换数据库
提示
Linux
环境下在命令行中,以管理员账号登录 PostgreSQL
数据库
# [3]创建或导入Nacos配置
说明
再进行以下操作之前,请确保对Nacos中 Namespace,Group等基础概念和具体操作有所了解。【官方文档】 (opens new window)
# 方式一:手动创建Nacos配置信息
工程的 ${project_home}/platform/eurynome-cloud-monitor/resources/configs
目录下,放置着所有需要导入到 Nacos
中的默认配置。开始其它工作之前,需要先在Nacos中创建所有配置
访问
Nacos
后台管理,默认本机地址 (opens new window), 使用默认账号nacos/nacos
登录。在
Nacos
后台中,在配置管理 --> 配置列表
功能中,点击添加按钮,手动添加所有配置文件,操作如下图所示:
注意
- 创建配置之前,请提前规划配置放置的命名空间(Namespace)。默认是放到 Nacos
public
命名空间中,如果不符合您的需求,可以在新建命名空间之后,再进行配置的创建。 ${project_home}/platform/eurynome-cloud-monitor/resources/configs
目录下,还有一级目录。这级目录的名称,是配置文件对应Nacos
中的Group
名称。所以在Nacos
中新建配置时,一定要注意Group
的创建和匹配。切勿全部新建到DEFAULT
组下,这样会导致无法正常运行。
提示
本项目所有Nacos
配置,均是采用yaml
格式。如需使用其它格式请自行修改
# 方式二:批量导入Nacos配置
手动方式创建Nacos配置,比较繁琐和容易出错。为了使用提升使用的便捷性,在工程 ${project_home}/platform/eurynome-cloud-monitor/resources/imports
目录下提供可以直接导入的配置包。可以方便的完成导入配置,创建Group
等操作。
访问
Nacos
后台管理,默认本机地址 (opens new window), 使用默认账号nacos/nacos
登录。在
Nacos
后台中,在配置管理 --> 配置列表
功能中,点击导入配置按钮,选择配置导入包即可,完成配置文件导入和Group的创建,操作如下图所示:
注意
- 创建配置之前,请提前规划配置放置的命名空间(Namespace)。默认是放到 Nacos
public
命名空间中,如果不符合您的需求,可以在新建命名空间之后,再进行配置的创建。
# [4]修改Nacos配置
上一步所导入的配置信息均是使用默认的,本地化的配置,需要根据自己搭建的基础设施环境,对相关的配置进行修改。
访问
Nacos
后台管理,默认本机地址 (opens new window), 使用默认账号nacos/nacos
登录。找到对应的配置文件进行修改。常用的设置在
eurynome-cloud-environment.yaml
中即可修改完成,如果不满足您实际需求,可再到其它的配置文件中详细修改。
说明
为了方便使用,Eurynome Cloud 所有的配置采用**“共享式,统一化多环境配置模式”**设计,大多数配置在对应 多环境
的 eurynome-cloud-environment.yaml
配置中就可以完成修改。例如,您当前使用的是 development
环境,那么在Nacos后台管理中,找到 Group 是 development
的 eurynome-cloud-environment.yaml
配置修改。
Eurynome Cloud 多环境配置设计及使用,参阅:多环境配置
# [5]修改pom.xml配置
在工程根目录下,找到 pom.xml
, 修改对应 profile
中参数。由于使用的多环境,所以在该文件中,需要找到应环境的配置,修改该环境下的对应的配置信息。主要结构如下所示:
<!-- 开发 -->
<profile>
<id>development</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<profile.name>development</profile.name>
<database.type>postgresql</database.type>
<skip.build.source.package>false</skip.build.source.package>
<skip.copy.docker.resource>false</skip.copy.docker.resource>
<skip.build.git.commit.info>false</skip.build.git.commit.info>
<config.server-addr>127.0.0.1:8848</config.server-addr>
<config.namespace></config.namespace>
<discovery.server-addr>127.0.0.1:8848</discovery.server-addr>
<sentinel.server-addr>127.0.0.1:8858</sentinel.server-addr>
</properties>
</profile>
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
必须要修改的参数涉及以下几项:
- config.server-addr:配置中心地址,即Nacos服务端地址
- config.namespace:Nacos 命名空间ID。如果要使用的是默认的命名空间,该参数不设置任何值。
- discovery.server-addr:服务发现地址,即Nacos服务端地址
- sentinel.server-addr:Sentinel Dashborad 地址
详细参数说明,参阅:多环境配置
# [6]编译代码
# 编译方式一
用命令行进入到工程代码所在根据目录,通过执行下面命令进行编译
mvn install
或
mvn package
2
3
4
5
提示
推荐使用install
命令,进行编译。使用该命令编译完成之后,会在Maven
本地缓存中,生成响应的包,这样eurynome-cloud-athena
功能就可以直接使用。
注意
在第一次编译的时候,因为在本地缓存缺少相关的包,所以在执行 mvn clean
操作时会提示错误。因此,在第一次编译时只使用 mvn package
或 mvn install
。第一次编译完成之后,就可以使用 mvn clean package
或 mvn clean install
命令进行编译。IDE界面操作也是同理。
# 编译方式二
在IDE工程中,利用IDE提供的界面操作进行编译。
以IDEA
为例,在右侧Maven Panel
中,选择eurynome-cloud(root)
节点,点击Lifecycle节点下的install
或者 package
进行编译。参考下图:
# [7]数据库创建和数据初始化
具体操作方法,参阅:数据初始化
# [8]运行服务模块
说明
各个服务的启动顺序并没有严格的要求,启动的先后顺序并不影响实际的使用,但是部分核心代码逻辑以及组件存在“时机性”问题,启动顺序的不同会略有时机差异性。
如果您对时机性没有要求,那么请忽略启动顺序问题,随意启动。
如果您对时机性有较高要求,那么请详细阅读各个服务对应的备注说明。
- ManagementApplication (监控中心服务 可选。)
提示
本质上 ManagementApplication
服务先启动还是后启动,并不影响平台的实际使用。仅有的影响是
- 先启动
ManagementApplication
服务,然后再启动其它服务,Spring Boot Admin
会马上收到服务的运行监控信息,进行及时的展示; - 如果后启动
ManagementApplication
服务,其它在ManagementApplication
之前运行服务的监控信息会间隔一段时间才会展现。
如果要使用该服务中的
Spring Boot Admin
监控,建议最先启动该服务。
- UpmsApplication (用户中心服务 必须)
- GatewayApplication (服务网关服务 必须)
- UaaApplication (统一认证服务 必须)
- BpmnApplication (分布式工作流 可选)
# [9]运行ELK(可选)
完整运行本套微服务架构,需要搭建 ELK
套件,作为日志中心以及 Skywalking
链路追踪的数据存储介质。
目前已有基础功能尚未涉及到搜索,只有日志中心和链路追踪功能涉及到 Elasticsearch
。如果本地开发不要相关功能,就不需要安装和运行ELK
套件。
提示
如果本地不想使用 ELK
,那么需要关闭微服务的日志收集功能。
修改你所使用 多环境
对应的 eurynome-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-ability,collector.backend_service=192.168.101.10:11800
操作界面如下图所示,IDEA版本不同配置方式会有差异
# [11]以Docker方式部署(可选)
参见:容器化部署
# [12]部署验证
以上步骤完成之后,工程后端整体搭建部署完成。可以通过运行前端界面进行操作或者用 Postman
调用接口的方式进行验证。
如果界面操作正常,或者接口调用正常,则说明工程已经正确部署。更多验证,参阅:OAuth2授权标准
# 前端运行
# [1]检出代码
在合适位置上,使用Git检出前端工程代码。项目地址 (opens new window)
# [2]修改配置
在前端工程 ${project_home}/packages/@herodotus/ui
录下,找到 .env.development
或者 .env.production
文件。修改其中的参数
参数说明
- NODE_ENV:当前多环境名称
- VUE_APP_SYSTEM_NAME:界面显示的系统名称
- VUE_APP_GATEWAY:服务网关访问地址
- VUE_APP_PROJECT:地址切换名称。通过该参数以动态修改域名以外的地址,以实现单体版等使用同一套操作界面。
eurynome
指定是微服务版,其它任意值指定是单体版 - VUE_APP_OAUTH_CLIENT_ID:OAuth2 密码模式 Client Id。
- VUE_APP_OAUTH_CLIENT_SECRET:OAuth2 密码模式 Client 密码
- VUE_APP_OAUTH_GRANT_TYPE:OAuth2 授权模式
- VUE_APP_SECRET_KEY:前端关键信息 AES 加密秘钥
注意
VUE_APP_SECRET_KEY
秘钥,并不是本系统前后端数据加密传输使用的秘钥,只是对前端临时存储的关键信息加密的秘钥。
本系统前后端数据加密传输,是基于自主设计的自定义数据传输 Session,实现 AES 加密秘钥的动态生成,加密传输,一人一钥机制。每次使用系统都会动态重新生成,采用 RSA 前后端加密传输,临时存储至前端。缓存时间与 OAuth 2 Token
设置时间相同,正常退出系统后,会清除前端临时存储数据。
并没有绝对安全的加密措施,前后端数据加密传输也仅仅是相对提升安全性。毕竟不管如何处理,前端都要存储一定的关键信息,而且前端是最容易破解的。正式环境使用还是要配合
Https
以及其它安全防护措施。
# [3]前端运行命令
// 进入目录
cd eurynome-cloud-ui
// 安装依赖
yarn install
// 如果要使用 `.env.development` 中的配置值,使用下面命令
yarn e:ui dev
// 如果要使用 `.env.production` 中的配置值,使用下面命令
yarn e:ui prod
2
3
4
5
6
7
8
9
10
11
12
13
# [4]运行验证
打开浏览器,输入:http://localhost:3000 (opens new window) 默认账户/密码 system/123456
若能正确展示登录页面,并能成功登录,菜单及页面展示正常,则表明环境搭建成功