应用部署
中间件及资源要求
用Oinone开发的业务工程后端本质是一个Springboot工程,其部署方式与其他Springboot工程类似;
中间件及版本
- Oinone支持的操作系统和中间件版本参考:https://doc.oinone.top/install/middleware/20713.html
- Oinone启动最小集 包括:Java, MySQL、zk,redis和nginx(或其他httpserver)
中间件 | 版本 | 说明 |
---|---|---|
Java(jdk) | 1.8 | 1.8_221+,低于这个版本需要覆盖JCE |
Reids | 4.x、5.x | |
Nginx | 版本无特殊要求 | |
MySQL | 5.7.x, 8.0.x | |
zk | 3.4.x, 3.5.x | |
RocketMQ | 4.x,推荐4.7+ | 按需安装 |
硬件资源建议
- 总体说明:线上资源中间件推荐使用云资源 或者 公司提供的公共资源
- 推荐指标:考虑系统余量(内存使用率<=85%,硬盘使用量<=80%)
- Oinone业务应用部署,所需要的中间件与用标准的SpringBoot工程相比,并无多大的区别(对Redis性能要求稍等高点,其他的中间件参考项目部署的资源就可以)。下面列举出来的资源是预估值,实际项目可以根据访问量等做对应的调整。
组件 | CPU核数 | 内存 | 硬盘 | 实例数 | 说明 |
---|---|---|---|---|---|
Nginx | – | – | 5G | 2 | 静态资源 |
zk | 2c | 1.5G+ | 20G | 3 | 集群版安装 |
Redis | 2c | 8G+ | 20G | 1 | 可以使用云上资源 |
MySQL | 4c | 8G+ | 300G+ | 1 | 使用已有资源/云资源 |
OSS | 2c | 4G | – | 1. | 使用云上资源或搭建MINIO |
Oinone业务应用 | 4c | 8G | 50G | 部署包数 * 2+ |
后端部署
设计器页面数据导出
若项目中没有用到界面设计器设计器页面,则忽略该步骤。
1、项目中有用到界面设计器设计器页面,首先需要把设计页面导出
1.1 通过接口的方式执行导出, 并把调用页面导出的结果JSON数据保存下来;
-
先执行登录
mutation { pamirsUserTransientMutation { login(user: { login: "admin", password: "admin" }) { needRedirect broken errorMsg errorCode errorField } } }
-
执行界面数据导出,请求示例:
mutation { uiDesignerExportReqMutation { export( data: { module: "demo_core", fileName: "demo_meta", moduleBasics: false } ) { jsonUrl } } }
-
更多导出方式(如:按菜单导出、按页面导出),参考: https://doc.oinone.top/designer/uidesigner/7294.html
1.2 在应用中心执行导出
导出成功后,在应用环境
的设计导出中找到导入记录,把到处结果的JSON文件保存下来;
目标环境有设计器
数据数据在应用中心可视化的方式进行设计数据的导入和导出
业务工程中导入设计页面数据
后端工程中把界面设计器的页面数据导入,若无通过界面设计器设计页面时忽略
-
把上面导出的页面数据(JSON文件)放入到resources目录下,如防止的位置:resources/install/hr_demo_ui.json
-
业务工程中导入示例代码
package pro.shushi.pamirs.hr.core.init;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;
import pro.shushi.pamirs.boot.common.api.command.AppLifecycleCommand;
import pro.shushi.pamirs.boot.common.extend.MetaDataEditor;
import pro.shushi.pamirs.core.common.InitializationUtil;
import pro.shushi.pamirs.hr.api.HrSimpleModule;
import pro.shushi.pamirs.meta.annotation.fun.extern.Slf4j;
import pro.shushi.pamirs.meta.api.dto.meta.Meta;
import pro.shushi.pamirs.metadata.manager.core.helper.DesignerInstallHelper;
import pro.shushi.pamirs.metadata.manager.core.helper.WidgetInstallHelper;
import java.util.Map;
@Slf4j
@Order(Integer.MAX_VALUE-1)
@Component
public class DemoAppMetaInstall implements MetaDataEditor {
@Autowired
private ApplicationContext applicationContext;
@Override
public void edit(AppLifecycleCommand command, Map<String, Meta> metaMap) {
//关闭导入
if (!doImport()) {
return;
}
log.info("[设计器业务元数据导⼊]");
InitializationUtil bizInitializationUtil = InitializationUtil.get(metaMap, HrSimpleModule.MODULE_MODULE/***改成⾃⼰的Module*/,
HrSimpleModule.MODULE_NAME/***改成⾃⼰的Module*/);
DesignerInstallHelper.mateInitialization(bizInitializationUtil, "install/hr_demo_ui.json");
log.info("[⾃定义组件元数据导⼊]");
// 写法1: 将组件元数据导⼊到⻚⾯设计器. 只有在安装设计器的服务中执⾏才有效果
WidgetInstallHelper.mateInitialization(metaMap, "install/hr_demo_ui.json");
}
private boolean doImport() {
// ⾃定义导⼊判断. 避免⽤于设计的开发环境执⾏导⼊逻辑
// 开发环境即设计器页面的源环境不要安装
// 开发环境即设计器页面的源环境不要安装
/**
String[] envs = applicationContext.getEnvironment().getActiveProfiles();
List<String> envList = Lists.newArrayList(envs);
return CollectionUtils.isNotEmpty(envList) && (envList.contains("prod"));
**/
return Boolean.FALSE;
}
}
后端打包部署
1、后端工程是标准的Springboot工程,部署方式也是类似
2、部署方式
- 可通过
java -jar
的方式部署 - 可通过
Docker
方式部署 - 可打成
war包
部署在tomcat或者国产化的TongWeb上
3、后端工程也接入到自动化部署工具中,如Jenkins中;
前端部署
前端本质上就是一个VUE工程,对应的部署方式跟通用的用VUE写的前端工程类似。部署的步骤:
1、打包,在前端boot工程下(如:ss-boot)执行打包命令:pnpm run build
2、将打包好的dist包上传到服务器上,用nginx启动即可
3、用nginx启动情况下,nginx的配置如下:
server {
# 根据实际详情修改
listen 8090;
# 根据实际详情修改
server_name 127.0.0.1;
location / {
# 根据实际详情修改(前端dist文件对应的路径)
root /Users/wangxian/nginx/html/mis/v3/dist;
try_files $uri $uri/ /index.html;
index index.html index.htm;
}
location /pamirs {
# 根据实际详情修改(后端接口地址)
proxy_pass http://127.0.0.1:8191;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
4、配置修改保存后,执行启动或者重启生效
应用升级
后端升级
1、从版本更新日志:https://doc.oinone.top/version/16232.html 中获取对应的版本信息;更新日志中的后端版本包信息
获取后端版本信息;通常只用关注oinone-bom的版本号
<!-- 平台基础 -->
<oinone.version>5.7.4.6</oinone.version>
2、后端工程修改主POM中的oinone.version,修改后重新执行maven的更新即可
前端升级
1、从版本更新日志:https://doc.oinone.top/version/16232.html 中获取对应的版本信息。更新日志中的前端版本包信息
获取前端版本信息;
2、升级步骤
修改package.json
中依赖oinone
的包的版本号,并重新安装。
- 将
ss-admin-widget
、ss-boot
、ss-oinone
、ss-project
(或者更多自定义扩展的工程)中的package.json
中@kunlun
前缀的包,修改为要升级的版本。
3、后在最外层的包ss-front-modules
执行pnpm run clean
清除依赖,pnpm install
重新安装依赖
设计器升级
1、从版本更新日志:https://doc.oinone.top/version/16232.html 中获取对应的版本信息。更新日志中的镜像说明
和 镜像拉取
获取镜像信息;
2、在服务器找到Docker启动的结构包,通常是oinone-op-ds-all-full
或者 oinone-op-ds-all-mini
,修改startup.sh中的镜像版号,示例代码如下:
#!/bin/bash
configDir=$(pwd)
version=5.2.21.4
IP=192.168.0.121
docker run -d --name designer-allinone \
-e DUBBO_IP_TO_REGISTRY=$IP \
-e DUBBO_PORT_TO_REGISTRY=20880 \
-p 8099:8091 \
-p 88:80 \
-p 15555:15555 \
-p 20880:20880 \
-v $configDir/config/:/opt/pamirs/ext \
-v $configDir/nginx:/opt/pamirs/nginx/vhost \
-v $configDir/logs:/opt/pamirs/logs \
-v $configDir/lib:/opt/pamirs/outlib harbor.oinone.top/oinone/oinone-designer-mini-v5.2:$version
3、设计器的yml文件,结构包中的 config/application.yml; 绝大多数情况升级不需要修改application.yml;只有在极少的情况下可能需要改application.yml,比如:新增加了模块。此时在设计器的版本更新日志中会有明确说明;
4、实际项目中,设计器所链接的中间件都要求外置到容器外部,即部署oinone-op-ds-all-mini版本;
5、如果包镜像名已经存在,还需要删除掉老版本的镜像;
6、执行startup.sh
Oinone社区 作者:望闲原创文章,如若转载,请注明出处:https://doc.oinone.top/install/20693.html
访问Oinone官网:https://www.oinone.top获取数式Oinone低代码应用平台体验