环境部署

码匠君 ... 2021-10-28 大约 14 分钟

# 环境部署

# 准备工作

# 后端运行所需的基础设施

设施 当前版本 说明
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
1
2
3
4
  • (2) 开发环境
IDEA 或 Eclipse (推荐IDEA)
JDK >= 1.8 (推荐1.8版本)
Maven >= 1.3
Git 使用最新版
1
2
3
4
  • (3) 环境配置

参见:本地开发环境搭建

# 前端运行所需的基础设施

设施 当前版本 说明
Nodejs 16.13.0 + 运行前端Vue工程必须依赖,如果不需要运行前端可以忽略
Yarn 1.22.10 前端包管理工具,如果习惯使用Yarn,用Npm或其它工具也都可以
  • (1) 前端端本地运行所需标准最小环境
Nodejs >= 14
Yarn >= 1.22.10 (Yarn2 目前会有很多问题,劣势太多不建议使用)
1
2
  • (2) 开发环境
Visual Studio Code (Vscode)或其它 (推荐Vscode)
1
  • (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]创建数据库

进入PostgreSQLSQL Shell(psql) (在Windows的菜单中可以找到),使用超级管理员账号和密码登录进入数据库,执行以下脚本:

CREATE USER herodotus WITH PASSWORD 'herodotus';
CREATE DATABASE herodotus OWNER herodotus;
GRANT ALL PRIVILEGES ON DATABASE herodotus TO herodotus;
1
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中创建所有配置

  1. 访问 Nacos 后台管理,默认本机地址 (opens new window), 使用默认账号nacos/nacos登录。

  2. 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等操作。

  1. 访问 Nacos 后台管理,默认本机地址 (opens new window), 使用默认账号nacos/nacos登录。

  2. Nacos 后台中,在 配置管理 --> 配置列表 功能中,点击导入配置按钮,选择配置导入包即可,完成配置文件导入和Group的创建,操作如下图所示:

导入Nacos配置

注意

  • 创建配置之前,请提前规划配置放置的命名空间(Namespace)。默认是放到 Nacos public命名空间中,如果不符合您的需求,可以在新建命名空间之后,再进行配置的创建。

# [4]修改Nacos配置

上一步所导入的配置信息均是使用默认的,本地化的配置,需要根据自己搭建的基础设施环境,对相关的配置进行修改。

  1. 访问 Nacos 后台管理,默认本机地址 (opens new window), 使用默认账号nacos/nacos登录。

  2. 找到对应的配置文件进行修改。常用的设置在 eurynome-cloud-environment.yaml 中即可修改完成,如果不满足您实际需求,可再到其它的配置文件中详细修改。

说明

为了方便使用,Eurynome Cloud 所有的配置采用**“共享式,统一化多环境配置模式”**设计,大多数配置在对应 多环境eurynome-cloud-environment.yaml 配置中就可以完成修改。例如,您当前使用的是 development 环境,那么在Nacos后台管理中,找到 Group 是 developmenteurynome-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>
1
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
1
2
3
4
5

提示

推荐使用install命令,进行编译。使用该命令编译完成之后,会在Maven本地缓存中,生成响应的包,这样eurynome-cloud-athena功能就可以直接使用。

注意

在第一次编译的时候,因为在本地缓存缺少相关的包,所以在执行 mvn clean 操作时会提示错误。因此,在第一次编译时只使用 mvn packagemvn install。第一次编译完成之后,就可以使用 mvn clean packagemvn 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链路追踪的数据存储介质。正式环境运行建议使用 DockerK8S 的方式运行 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
1

操作界面如下图所示,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

1
2
3
4
5
6
7
8
9
10
11
12
13

# [4]运行验证

打开浏览器,输入:http://localhost:3000 (opens new window) 默认账户/密码 system/123456

若能正确展示登录页面,并能成功登录,菜单及页面展示正常,则表明环境搭建成功

上次编辑于: 2021年12月27日 16:38
贡献者: herodotus , 码匠君