1.19.冰刀:部署
冰缩寒流,川凝冻霭,前回鹭渚冬晚。燕阁红炉,驼峰翠釜,曾忆花柔酒软。――刘天游《氐州第一》
本篇为实战总结帖,主要用于多个项目同时运行时的统一文档,目前Zero上已经运行了几个比较重量级的项目,本文主要针对几个平台从环境搭建、开发、运行、测试到部署进行基于实战的讲解,以Step-By-Step的方式让开发人员能更加流畅搭建Zero的企业实战开发环境。本文内容和原始教程中的内容略微有些出入,是因为引用了更多Zero Extension中的模块来辅助开发,所以此文算是Zero Core和Zero Extension的交叉参考教程。
「壹」开发环境
1.1. 环境介绍
1.1.1. 基础环境
最新的依赖库版本如下:
NodeJs
前端
16.14.0
Yarn
前端
1.22.17
Ant Design
前端
3.26.19
React
前端
16.14.0
JDK
后端
11
Maven
后端
3.8.5
Zero
后端
0.8.1 ~
Vertx
后端
4.2.6
ElasticSearch
集成(全文检索)
7.x ~
Neo4j
集成(拓扑图)
4.x ~
Camunda
集成(工作流)
7.x ~
MySQL
数据库
5.x
Oracle
数据库
12.x
TiDB
数据库
5.x
1.1.2. 特殊说明
基础环境部分
JDK的版本推荐使用ZuLu的开源JDK:https://www.azul.com/downloads/
Maven推荐使用mvnd工具:https://github.com/apache/maven-mvnd/releases
Maven的仓库推荐使用中心仓库,以防止部分jar包无法从代理仓库下载。
可选扩展部分
如果使用了动态建模 (zero-atom)功能,则需要根据您的数据库下载相关依赖库:https://github.com/silentbalanceyh/vertx-zero/tree/master/vertx-pin/zero-vista ,若是其他类型数据库需参考内置源代码自己写一套基础插件。
集成部分的ElasticSearch、Neo4j、Camunda、Redis根据您自身项目情况而定。
动态建模/动态路由功能根据您自身项目情况而定。
Zero的基础版本是支持微服务和K8S(Istio)的,而此功能受限于目前项目,处于实验性版本阶段,需启用
vertx-istio
项目。
1.1.3. 脚手架数据
本教程假设您的基本环境如下:
Maven仓库
x
依赖库目录
~/.m2/repository
本地开发
x
工作目录
~/runtime/develop
生产存储
可选
工作目录
~/runtime/zero-store/(文档管理专用)
生产部署
x
工作目录
~/server(前后端一致)
DB_UP
x
数据表
数据库中的主库
DB_UP_WF
可选
数据表
数据库中工作流专用库(Camunda库)
DB_UP_HIS
可选
数据表
数据库中的删除历史库
DB_XX
可选
数据表
动态建模专用库
注:可选部分根据您搭建环境过程中选择的zero extension模块进行相关定义,最新版的模块化会自动化部署相关模块已经环境内容,详细部分参考后续章节,从0.8.1
的版本开始,zero extension扩展模块引入了OOB——Out Of Box开箱即用的配置数据,若您启用了OOB功能,即使您的系统内没有任何内容,这些配置数据都会跟随本教程的发布流程进入到您的主库中。
1.1.4. 默认登录
默认账号:falcon(开发者)
默认密码:11111111
1.2. zero主框架
如果您不关注最新版的功能,直接使用0.8.1
版本,则可跳过该步骤,由于zero本身是一个跟着项目成长很迅速的项目,所以在1.0
版本发布之前,个人推荐紧跟最新版本走。虽然最新版本是X-SNAPSHOT
,基础功能已经经过了生产环境验证,所以该版本是可靠的;再者,最新版本会包含一部分重用性极高的新功能,如0.9.0-SNAPSHOT
中引入的:
文档管理平台(FTP、SSH)
模块化管理平台(License、Modulat)
工作流标准化平台(ITSM、ISO)
WebSocket功能(正在开发中,用于提醒)
短信邮件集成
zero框架导入的操作步骤如下:
进入目录
~/runtime/develop/
中,下载vertx-zero
代码到环境中:下载完成后
~/runtime/develop
中会有一个vertx-zero
目录,使用IDEA导入该目录中的项目:2.1. 启动IDEA
2.2. 选中下载的
vertx-zero
目录中的pom.xml
文件(自动导入成Maven类型的项目)2.3. 在弹出的对话框中选择
Open as Project
(以项目方式打开)2.4. 如果弹出下边对话框,直接勾选
Trust projects in ~/runtime/develop
,然后点击Trust Project
2.5. 等待右下角的项目初始化完成
2.6. 若您点开进度条会看到正在执行的后台任务,请等待后台任务全部完成后再执行下一步
导入完成后,检查IDE中的JDK运行环境是否符合:File -> Project Structure...,推荐11。
此处注意Language level(语言级别),从
zero
的0.7.x
版本开始,框架引入了Camunda
工作流引擎,该引擎最新版本最低要求支持JDK11,基于这一点出发,zero
也将JDK从8升级到了11,所以从该版本开始所有的Java环境以11为准。打开Terminal终端,使用内置脚本(mvnd环境)编译
vertx-zero
:zero-compile.sh内容如:
上述步骤的编译不会触发zero的测试流程,如果使用mvnd clean package install
方式处理,会触发zero的测试流程,使得整个框架编译的时间拉长,所以不推荐clean package install
方式,这种方式仅留给zero的研发人员 使用。编译成功后,您的开发环境Maven库中就安装了最新的zero版本,目前是0.9.0-SNAPSHOT
。
1.3. zero插件环境(可选)
如果您在项目中使用了动态建模功能(启用zero-atom
),此步骤是必须的,动态建模为高级功能,只有在引入主框架的场景下可使用,直接从中心仓库下载的依赖库中并不包含动态建模部分,此功能目前依然处于研发阶段,只有最新版可支持。
操作步骤如:
执行Oracle依赖库的安装脚本(动态建模编译必须,运行可根据您的项目情况而定)
install-oracle-jar.sh
的内容如:在IDEA的Maven窗口中添加新项目:
导入项目
vertx-zero/vertx-pin/zero-vista/
(选择pom.xml文件)导入项目后直接编译
zero-vista
:如此您就可以直接在项目中使用动态建模的SQL DDL插件了,使用时只需要在
pom.xml
中引入下边片段即可(根据您使用的数据库选择合适的插件):zero中的数据库支持以MySQL和TiDB为主,目前开放的支持的数据库种类基于项目需求。
1.4. GitHub安全设置
注:当您作为协作者Coordinator提交代码时必须此步骤!
由于Github站点升级,当你作为Coordinator加入到项目开发时,新版本已不推荐使用用户名/密码方式拉取代码,而是需要在您的账号中生成个人的access_token
,拉取项目代码时使用该access_token
拉取。
其操作步骤如下:
登录您的Github个人账号空间,右上角选择Settings菜单:
选择左边菜单中最下边的Developer Settings:
选择左边菜单Personal access tokens,然后点击Generate new token按钮
勾选好您所需的权限后直接点击Genarate token按钮:
在结果页记录下您的个人token:
进入您的项目环境中,执行如下操作步骤进行库关联,先查看目前的远程库版本:
您的远程库名称为
origin
,执行如下命令:注意上述命令格式,token的位置介于
https://
和github.com
之间,并且以@
结尾。再次查看您的远程库,库路径已发生改变:
完成上述步骤之后,基本设置就完成了,当然在后续步骤中您可以直接使用git clone https://<Token>@<Repo>
的方式拉取代码,则 6 ~ 8 步骤可省略 ,即下边命令:
1.5. 项目后端
如果从头搭建zero脚手架,使用新建流程,若是导入已经搭建好的项目则使用导入流程。
1.5.1. 新建
新建项目可直接下载最新的脚手架版本:https://github.com/silentbalanceyh/scaffold-zero,然后根据自身项目修改如下内容:
其中数据部分需修改Excel数据文件中的内容,这部分教程在配置章节讲解,上述修改部分参考本教程的配置篇来详细修改,一旦搭建好环境后就不用再变更,为一次性操作。
1.5.2. 导入
导入项目时如果作为Coordinator需更改项目内容,参考《1.4.Github安全设置》先配置个人token,导入的操作步骤执行如下:
为了区分标准脚手架和新项目,从
scaffold-zero
中下载的项目在此章节为smave
名称,从新建到配置完成的部分参考后续各配置章节。
从仓库下载代码(带token安全下载):
参考《1.3.zero插件环境》直接添加一个新的Maven项目到IDEA环境中,添加完成后效果如:
注:vertx-zero和smave共存于一个IDEA窗口中。
打开终端,执行根目录的编译脚本
编译成功后可以看到如下截图(如此后端基本开发环境就搭建完成了)
1.5.3. 初始化
Zero脚手架的初始化流程操作步骤如下:
为了团队协作开发,先在自己本地开发环境中追加如下hosts映射(部署时另外配置):
为您的应用创建MySQL数据库账号:
执行数据库建库脚本
账号密码位于脚本 database-reinit.sh,请自行修改,按第二步创建的账号更改即可,推荐团队开发账号统一。
重建完成后,可以看到空库(文中仅演示了最小配置,不带工作流库、动态库、删除历史备份库,其他库的配置参考后续配置章节处理):
执行初始化脚本,zero中的初始化使用liquibase完成,直接运行如下脚本:
执行完初始化脚本后可以在数据库看到生成的表结构:
「重要!」执行下边命令备份最新表结构用于生产发布:
表创建好过后,执行数据导入专用程序:
cn.vertxup.SvLoader
「重要!」从此处开始,所有直接从IDEA中运行的主程序都必须配置好运行目录,否则无法以正确路径的方式加载数据,该步骤在生产环境中是不需要的,先点击
SvLoader
的运行配置:「重要!」点开运行配置后设置您的主程序的运行目录并保存该配置:
重要的事情说三遍:
注意第二个红色框,这一步对开发人员十分重要!*
注意第二个红色框,这一步对开发人员十分重要!*
注意第二个红色框,这一步对开发人员十分重要!*
然后点击运行或调试运行执行数据初始化主程序
运行完成后可看到如下日志:
如此,数据初始化就完成了,这个SvLoader
可以在您更改了任何/init/oob
中的数据过后执行反复初始化操作,属于高频使用的主程序,而本小节的初始化流程 也会在开发过程中反复使用。
1.5.3. 启动
容器启动流程操作步骤如下:
初始化完成后,直接运行主程序:
cn.vertxup.SvAgent
:看到如下界面,后端zero容器就启动成功了:
1.6. 项目前端
如果是自己从头搭建zero-ui脚手架,则使用新建流程,若是导入已经搭建好的项目则使用导入流程。
1.6.1. 新建
新建zero-ui项目先安装zero的脚本工具:https://www.vertxai.cn/,安装好工具之后直接运行如下命令:
新建项目后根据自身项目修改如下内容:
1.6.2. 导入/启动
前端导入使用WebStorm,操作步骤如下:
从仓库下载代码(带token安全下载):
将代码导入WebStorm或其他前端工具IDE中:
选中您下载的项目打开
弹出框中选择
安装本地依赖库,基于
yarn
,一次性执行,生产部署之前也需执行脚本内容如下
上述脚本运行完成后可看到如下截图:
运行启动脚本
最终运行后可看到如下截图
使用
falcon/11111111
登录可进入主界面。
「贰」生产环境准备
2.1. JDK
2.1.1. Open JDK
直接使用Ubuntu工具安装JDK 11:
执行过后会有如下截图
验证Java是否安装成功
最终安装路径:
/usr/lib/jvm/java-11-openjdk-amd64
,后续设置JAVA_HOME
。
2.1.2. ZuLu JDK 11(推荐配置)
安装Azul APT仓库:
执行包安装的截图如下:
执行命令安装Zulu JDK 11:
本地安装Zulu JDK 11:
安装截图如:
检查Java版本
最终安装地址:
/usr/lib/jvm/zulu-11-amd64
,后续设置JAVA_HOME
。
2.2. Git
直接使用Ubuntu工具安装Git:
验证Git是否安装完成
2.3. Mvnd
下载安装包:
执行截图
对安装包执行解压:
重命名目录
2.4. 环境变量
该章节为2.2、2.3的补充章节。
Java环境变量
Mvnd环境变量
执行下边命令打开环境变量文件:
追加如下片段(按
i
键编辑):截图参考
编辑完成后执行
Esc
,使用wq
退出vim
工具并保存,然后执行下边命令在当前会话中生效检查Java和Mvnd
Java环境检查:
java -version
Mvnd环境检查:
mvnd -v
2.5. MySQL
执行命令安装MySQL
验证安装好的服务
新版本操作系统安装
5.7
(参考引用中教程先设置,然后执行此步骤的命令):配置root密码
配置mysql
追加下边配置
为了兼容Oracle数据库,zero对数据库的要求是大小写敏感的,且以大写为主,所有SQL关键字、数据库相关的内容都一律使用大写。
重启MySQL服务
验证MySQL服务和端口
连接MySQL
创建您的应用所需账号:
2.6. NodeJs
下载NodeJs安装包:
解压
重命名目录(为后续方便):
环境变量配置
追加下边内容
保存后执行下边命令让环境生效
验证环境:
安装yarn,yarn在安装过程请使用全局模式安装
-g
参数。
2.7. Zero Ai安装
Zero Ai是自研发的开发辅助工具
(仅Linux环境)参考文档:http://www.vertxai.cn
执行安装命令
检查安装结果:
2.8. Httpd
执行命令安装服务器:
查看服务器运行状态
修改端口和根目录
进入默认配置目录
/etc/apache2/
在文件
ports.conf
中修改内容追加下边配置
创建默认目录
修改默认配置
修改开始配置以及中间配置(注意此处目录不可使用
root
账号目录,否则)为防止403错误,需要在
/etc/apache2/apache2.conf
配置文件中追加此步骤是因为在配置过程中我们更改了apache2的默认目录,从
/var/www/html
修改到了/home/localadmin/server
中,如果您没有更改默认目录则可忽略这一步。生产环境部署时,有时候会遇到刷新界面404的问题,该问题解决方案如下:
在您的部署目录下追加
.htaccess
文件,该文件内容如下:
最后重启apache2服务
「叄」部署应用
以 smave 为例,基本结构和在线的 scaffold-zero 一致。
3.1. 后端部署
在后端服务器中追加数据库配置,先添加hosts映射:
(本地打包忽略)下载代码到生产环境
(本地打包忽略)执行下边命令编译打包:
(本地打包忽略)查看编译结果
本地编译后直接跳过 2 ~ 4 步骤,拷贝下边目录到容器启动目录
查看
server
目录结构在
server
目录中创建启动命令工具和容器启动的脚本程序更新脚本如下:
如果您更改了
conf
部分的配置,请在更新时注意先备份,更新过后再还原,如下截图:表结构初始化脚本:
命令行启动脚本如下:
容器启动脚本如:
更改配置文件
更改跨域配置:
将最后一行内容更改为(注意域名小写,浏览器会自动转。):
文件管理地址更改:
将内容更改为:
3.2. 数据初始化
database-reinit.sh
脚本在开发章节已经存在,此处不再重复,可以将该部分脚本拷贝到~/server/script/
中。
(第一次或表变更)执行数据库初始化
(第一次或表变更)执行建库操作,开发过程中已经导出了表结构的SQL,直接执行上边的建表的脚本
启动命令行工具
执行命令:
r
,l
导入数据(Zero Ai命令)启动容器:
启动容器后可从日志查看容器启动状态:
最终输出如下:
同时在
logs/
目录中可以看到日志清单:zero-epic-fabric目录中是核心框架日志
zero-epic-extension目录中是扩展框架日志
zero-epic-fabric.log是汇总后的日志
在运行日志中确认两个配置以证明
conf
目录下的内容已生效执行下边命令可看到运行的java进程:
3.3. 前端部署
下载代码到前端服务器中
安装前端依赖库
由于生产环境的环境变量已经提前设置了,在
./env.production
文件中,所以安装好依赖库后,前端可直接打包最后将
build
中的所有内容拷贝到~/server
中。使用浏览器打开,您就可以看到如下界面:
「肆」配置调整
4.1. hosts映射配置
本章节主要解析几个常用的内置映射域名相关信息,需注意的是此处的域名只是为了团队协作开发,并不是真实存在的域名,zero系统中包含三个核心域名:
ox.engine.cn
访问数据库专用域名。
Ok
Ok
ox.server.cn
访问后端容器专用域名。
Ok
x
ox.integration.cn
访问集成服务专用域名。
Ok
x
这三个域名映射需要您添加到本地hosts映射中:
三个域名的使用结构图如下:
特殊说明:
使用域名访问服务可以保证不同的开发人员直接通过调整本地域名映射访问外置服务,主要处理以下几种核心场景:
开发数据库/测试数据库/生产数据库在不改变代码的情况下自由切换。
不同的集成服务在不改变代码的情况下自由切换。
不同开发人员访问这些服务时在不改变代码的情况下自由切换。
一般在生产环境部署时,前端
zero ui
和后端zero
只有在同一台服务器上运行时,不需要更改ox.server.cn
的域名配置,通常部署时候我们会采用两台以上的机器分离部署,所以生产部署时会单独配置ox.server.cn
。一般在生产环境部署时,后端
zero
和所有的集成服务在同一台服务器上运行时,不需要更改ox.integration.cn
的域名配置,但往往生产环境部署时这些集成服务和后端zero
都是分离的,也会单独配置。后端
zero
以及开发工具访问所有数据库时统一使用了ox.engine.cn
的域名访问,除非生产环境部署时数据库和后端zero
分离,否则不需要更改ox.engine.cn
的域名配置。
4.1.1. 服务域名
4.1.1.1. 程序访问
数据库域名统一在vertx-jooq.yml
中配置:
在脚手架配置中您会看到下边几段配置代码(省掉数据库连接参数):
4.1.1.2. Liquibase访问
zero中使用使用liquibase执行数据库初始化,它的数据库配置位于文件:
该配置是一个属性文件,内容通常如:
4.1.1.3. Jooq代码生成访问
zero中的Jooq代码生成配置位于领域模型定义的项目中,它的数据库配置位于文件:
该配置文件是一个XML文件,内容通常如:
4.1.2. 容器域名
4.1.2.1. 跨域CORS
CORS跨域访问的域名一般位于vertx-jooq.yml
配置文件的尾端,其片段如下:
4.1.2.2. 前端Endpoint
当您的zero-ui前端访问后端zero容器时,前端的访问配置位于环境变量文件中:
环境变量文件主要有两个:
.env.development:开发环境专用
.env.production:生产环境专用
4.1.3. 集成域名
所有集成域名目前也位于vertx-jooq.yml
配置文件中,只是在脚手架项目里被注释掉了,需要使用时直接打开即可:
细心的读者已经发现,后端配置所有的域名的位置比较集中:
除开Jooq/Liquibase工具使用的域名需要单独配置,这两个工具主要是开发过程中使用,生产部署时不会使用,可理解成一次性配置,配置好过后不需要更改。
生产部署专用的域名配置全部位于
vertx-jooq.yml
文件中,这样设计的目的也是为了方便修改以及执行DevOps配置流程。
4.2. Maven项目标识
本来这个章节是Maven的基础知识,应该是不需要教程就可以过的知识点,但为了照顾初学者,本小节可以帮助您从零开始搭建一个scaffold-zero
的脚手架基础项目,在看章节步骤之前,先看看几个项目的作用:
zo-core
pom
您项目模块核心层父项目。
zo-core/zo-business
jar
您项目模块的业务逻辑层。
zo-core/zo-domain
jar
您的项目模块的领域模型层。
zo-driver
pom
您项目的启动器容器。
zo-driver/ix-starter
jar
您项目的启动器(主项目)。
特殊说明:
数据访问层?整个项目结构中没有数据访问层是因为
zo-domain
中的静态领域模型是使用Jooq代码生成工具生成,生成过程中已经带有Dao层的代码,并且在编程过程中,借用zero提供的抽象数据层以及查询引擎,不需要使用任何多余代码就可以完成数据库的底层访问,所以丢弃了传统项目中的数据访问层。接口/控制层?整个项目结构中也不存在控制层和接口部分,由于zero以及将上层逻辑全部压缩到一起了,这部分内容根据您项目的复杂度可以有所差异,您也可以自行扩展。
多启动器?
zo-driver
中可以包含一个以上的启动器,您可以书写不同种类的main
函数作为程序入口,通常:开发过程中会使用双入口:
Loader/Agent
,一个负责数据导入,另外一个负责容器启动。生产部署过程中会使用单入口:
Entry
,该入口根据不同参数可打开命令行工具和容器,参考前文部署教程。
Maven标识更改操作步骤如下(附带新建项目步骤):
删除下载下来的
scaffold-zero
中的.git
目录,将代码推送到自己的代码仓库中。在IDEA中选中项目,点击右键:Refactor -> Rename...,下图中选择最后一个:Rename module and directory
在弹出框中输入您的主项目标识信息
在所有子项目中重复步骤 2 ~ 3(合计五次):
注:一般在IDEA做rename的时候,Maven的配置并不会随着IDEA发生更改。
更改所有的POM文件:
POM文件在更改过程中需根据您自己的项目设置
项目本身的三个核心属性:
groupId, artifactId, name
需酌情更改:父子结构调整,子项目中(除开从
vertx-import
继承的项目需调整继承部分:父子结构调整,父项目中调整
module
部分name
的调整则是为IDE量身打造的,调整过后可以在Maven窗口中看到更改结果若窗口无变化点击截图中的刷新按钮看到该改变
变更完成后,保证编译通过,直接运行根目录:
build.bat/build.sh
脚本,见到下边截图则您的Maven设置就完成了:
4.3. 数据库
4.1中已经说明,数据库配置部分主要在vertx-jooq.yml
中,其中Camunda, 历史库,主库
的配置结构基本一致,如下:
需要更改的属性表如下:
driverClassName
JDBC连接专用的数据库驱动类名
instance
数据库名,和JDBC连接字符串同步修改
hostname
默认使用ox.engine.cn
username
数据库访问账号
password
数据库访问口令/密码
jdbcUrl
JDBC连接字符串
port
端口号,整数,不配置使用默认的 3306
options
JsonObject结构,额外的连接池配置
category
数据库种类,默认值:MYSQL5
特殊说明:
options配置的内容关联到连接池属性,系统默认使用了
HikariDataPool
连接池。category目前系统中支持六种最基本的值
MYSQL5
MYSQL8
MYSQL(旧版专用)
ORACLE(旧版专用)
ORACLE11
ORACLE12
(保留)TIDB4
(保留)TIDB5
默认的jdbcUrl中带的MySQL配置参数如下表格:
serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&failOverReadOnly=false&useSSL=false
属性名默认值含义serverTimezone
Asia/Shanghai
数据库运行时区
useUnicode
true
是否启用Unicode
characterEncoding
UTF-8
数据库使用的默认编码
autoReconnect
true
是否自动重连
useSSL
false
是否启用SSL
failOverReadOnly
false
自动重连成功后,连接是否设置为只读
数据库的category
属性实际并不是数据库访问过程中必须的,最新的JDBC可以根据您提供的driverClassName
以及jdbcUrl
反向分析数据库类型,而此处的category
主要设计如下:
在执行Jooq持久化过程中为数据库提供更好的Dialect方言以适配不同数据库。
zero在对数据库执行DDL动态建模/动态路由实施过程中,可根据category执行特定的组件选择以处理不同种类数据库的兼容性问题。
如果您启用了动态建模(zero-atom)功能,则额外的动态数据库会存储在您的X_SOURCE
表中,表结构和配置一致,而前端开发中心您可以看到目前四个库的启用禁用情况,如下图只启用了主库,并且可以在该界面更改动态建模库的信息:
4.4. 容器端口
容器端口的配置主要分两部分:后端端口和前端端口。
后端端口的配置如下图:
此处的
name
在微服务环境和云端环境作为节点部署时需要特别注意,单体应用(本教程中)中可根据自己的项目进行设置。host
设置成0.0.0.0
其含义在于任意IP地址都可访问,不限制主机的运行IP。此处的
port
就是您需要配置的端口号,Scaffold的默认端口为6000,Zero框架中的默认端口为6083,此处为了做Demo改成了6086。
前端端口的配置如下图:
前端端口号使用
NODE
的环境变量PORT
进行指定,.env.development
负责开发环境端口号,.env.production
负责生产环境端口号。后端配置前端的跨域必须和浏览器中访问的地址一致,一般位于
vertx-jooq.yml
文件中,如:其中
origin
的配置意味着您最终会在浏览器中输入http://ox.server.cn:6001
来访问前端程序,而服务端只允许从这个路径的JS请求发生,这样就防止其他模式的脚本攻击,关于跨域更多信息可参考在线的跨域配置相关文档。前端跨域的基本环境变量配置如:
使用前后端分离配置的核心结构图如下:
所以生产部署过程中,对外的两台服务器必须开放对应的端口,如图后端开放7000,前端开放6002。
如果搭建了Nginx的反向代理则可跳过上述步骤。
CORS会拦截掉所有请求源非法的请求,这种情况请求本身不会进入到后端应用中。
此处提到的请求主要是JS脚本级的请求,通常应用容器为浏览器,如果是直接使用程序发送请求方法除外。
4.5. 初始化登录账号
zero脚手架中的初始化登录账号位于启动器中:
打开该Excel文件:
主要添加的记录有三张表:
O_USER
OAuth认证模式的专用数据表,每个用户一条记录,包含了发放的唯一密钥。
S_USER
账号表,包括账号名、密码等。
R_USER_ROLE
账号角色关联表,存储了角色和用户的关联信息。
特别说明:
密钥是一个64位的随机字符串,可使用Zero Ai命令生成:
主键一般是UUID格式,可直接使用Zero Ai命令生成:
密码是MD5的加密格式,可直接使用Zero Ai命令生成(
0.3.20
版本之后):
如果是MacOs的系统,执行完命令之后可直接使用Cmd + V
快捷键粘贴刚刚生成的字符串。
修改完成后,直接运行
Loader
程序(前文提到的数据加载程序),默认会加载init/oob
中的所有Excel数据文件,可反复加载,加载完成后重新启动容器,则新的账号密码就会生效。
4.6. 租户应用信息
租户信息在整个zero
环境中以sigma
为标识,带有租户的系统结构概念图如下:
特殊说明:
如图所示,每一个彩色小方块表示一个独立的Docker容器,这个容器中可能包含独立数据库、存储、服务也可能多个小方块组合到一起使用,从应用层的数据去标识,每个小方块都拥有一个独立的
appId
和appKey
。appId
用于读取基础应用数据appKey
用于读取敏感数据
每一种颜色则表示一个租户信息,拥有唯一的
sigma
值,最终从系统层可以看到,一个租户会有多个应用信息,而此处我们部署的前后端就充当了一个彩色小方块的Docker结构。
租户信息的区分主要体现在部分信息的数据导入过程:
如果您要启用Zero中提供的命令行,则需设置如下配置:
runtime目录中的
configuration.json
是命令行专用配置,它的内容实际是引用租户文件:有了上述配置后,您就可以使用如下代码:
init/environment.json
中的存储的数据就是租户的基本数据,格式如:配置中有三个核心节点和租户信息相关,他们的用途分别为:
global
:该节点提供了当前租户的基本全局信息,用于Excel数据导入过程中的默认值赋予,有了该设置后,Excel数据文件中的数据就不需任何和应用、租户、语言相关的信息,只包含业务数据,最终形成如下结构图:即:应用数据包 + environment.json = 租户数据包。
application
:PartyA专用配置数据,包括(应用数据X_APP
,数据库配置X_SOURCE
)等。integration
:PartyB专用配置数据,主要是集成数据,用于构造Integration
类专用。
4.7. 前端配置
本章节旧事重提,主要用于配置前端环境变量:
4.7.1. 项目名称
项目的npm名称存储于package.json
中,该名称会在ai init
命令中直接设置:
4.7.2. 远程集成配置
集成配置环境变量如:
4.7.3. 风格配置
4.7.4. 开发配置
4.8. 应用配置
应用配置在前端和后端必须对应上,前端依旧是环境变量部分:
后端配置位于下边文件中:
表格中的数据如下
「伍」小结
本章主要介绍了zero新脚手架的基本配置以及开发环境和生产环境的详细部署流程,根据教程中的内容开发人员可完成如下任务:
搭建项目的开发环境(从零起步以及直接导入)
部署项目到生产环境
Last updated