3.1.2 环境准备(windows版)

一、后端基础环境准备

安装JDK1.8 ,高于1.8_221以上(下载地址见书籍【附件一】

  1. 打开Windows环境变量配置页

    此电脑 => 右键属性 => 系统高级设置 => 环境变量

  2. 配置环境变量

    在用户环境变量中新建变量为JAVA_HOME的项,值为JDK安装之后的路径

3.1.2 环境准备(windows版)

图3-1-27 新建环境变量JAVA_HOM

编辑变量为Path的项添加一个值%JAVA_HOME%\bin

3.1.2 环境准备(windows版)

图3-1-28 添加一个环境变量值%JAVA_HOME%\\bin

  1. PowerShell或者CMD中验证,输出类似信息为安装配置成功

3.1.2 环境准备(windows版)

图3-1-29 验证JAVA是否安装成功

安装 Apache Maven 3.8+ (下载地址见书籍【附件一】

  1. 删除Maven安装目录下的conf/settings.xml

  2. 配置mvn的settings,下载附件settings-open.xml,并重命名为settings.xml,建议直接放在【C:\Users\你的用户名.m2】下面。下载地址见oinone开源社区群公告,也可以联系oinone合作伙伴或服务人员

  3. 配置环境变量 在用户环境变量中新建变量为M2_HOME的项,值为Maven安装路径

3.1.2 环境准备(windows版)

图3-1-30 新建变量M2_HOME

编辑变量为Path的项添加一个值%M2_HOME%\bin

3.1.2 环境准备(windows版)

图3-1-31 添加一个值%M2_HOME%\\bin

  1. 验证

3.1.2 环境准备(windows版)

图3-1-32 验证Maven是否安装成功

安装 Jetbrains IDEA (下载地址见书籍【附件一】

  1. 插件安装 下载地址 密码: mdji

  2. 如果IDEA安装了Lombok插件,请禁用Lombok插件

  3. 点击菜单项File => Settings => Plugins

3.1.2 环境准备(windows版)

图3-1-33 插件管理页面操作示意

下载插件包 (联系Oinone官方客服)

3.1.2 环境准备(windows版)

图3-1-35 操作指引

3.1.2 环境准备(windows版)

图3-1-36 操作指引

安装MySQL 8 (下载地址见书籍【附件一】)

  1. 解压下载的ZIP安装包, 复制到自定义安装目录

  2. 设置环境变量 MYSQL_BASE_DIR

提换成MySQL安装目录路径

  1. 把 %MYSQL_BASE_DIR%\bin 加入到系统环境变量中

在PowerShell中可以使用 Get-Command mysqld 命令验证环境变量是否配置成功,执行成功输出mysqld的所在路径

  1. 初始化

在命令行中执行 mysqld --initialize-insecure --user=mysql

  1. 安装

    mysqld -install

  2. 启动MySQL服务

    mysqld -install

  3. 设置root用户密码

    alter user \'root\'@\'localhost\' identified with mysql_native_password by \'oinone\'; flush privileges;

安装DB GUI工具

Datagrip、MySQLWorkbench、DBEaver 选其一 ### 安装Git (下载地址见书籍【附件一】)

安装GraphQL测试工具Insomnia(下载地址见书籍【附件一】)

安装RocketMQ(下载地址见书籍【附件一】)

  1. 修改安装目录下bin中对应文件的默认配置

    a. runserver.cmd文件内容 -Xms2g -Xmx2g为 -Xms1g -Xmx1g

    b. runbroker.cmd文件内容 -Xms2g -Xmx2g为 -Xms1g -Xmx1g,以及-XX:G1HeapRegionSize=1m

  2. 启动RocketMQ NameServer命令 RocketMQ安装目录\bin\mqnamesrv.cmd start

  3. 启动RocketMQ Broker命令 RocketMQ安装目录\bin\mqbroker.cmd -n localhost:9876

  4. 停止 RocketMQ命令 mqshutdown.cmd broker mqshutdown.cmd namesrv

安装ElasticSearch 版本 8.4.1(下载地址见书籍【附件一】) (非必须)

ES运行时需要JDK18及以上版本JDK运行环境, ES安装包中包含了一个JDK18版本

set JAVA_HOME=ES安装路径\jdk

  1. 启动

ES安装路径\bin\elasticsearch.bat

  1. 停止 ctrl+c 或者关闭cmd、PowerShell的窗口

安装Redis (下载地址见书籍【附件一】)

  1. 解压安装包到安装目录

  2. 在PowerShell进入到Redis安装目录

  3. 在PowerShell中执行.\redis-server.exe,输出图中类似信息(如下图3-35所示):

3.1.2 环境准备(windows版)

图3-1-37 验证redis是否安装成功

  1. 新开PowerShell窗口, 进入到Redis安装目录, 执行 .\redis-cli.exe回车,输入 ping 回车输出 PONG即表示Redis安装成功

3.1.2 环境准备(windows版)

图3-1-38 验证redis是否安装成功

Zookeeper安装(下载地址见书籍【附件一】)

  1. 解压安装, 在 PowerShell中执行 tar zxvf 安装包路径(tar.gz包) -C Zk安装目录

  2. 进入 Zk安装目录\conf\ 复制 zoo_sample.cfg文件为 zoo.cfg

  3. 修改zoo.cfg文件的内容 (其中dataDir需要自己设定)

tickTime=2000
initLimit=10
syncLimit=5
clientPort=2181
dataDir=需要设置路径用来保存zk数据
maxClientCnxns=120
autopurge.snapRetainCount=3
autopurge.purgeInterval=1
admin.enableServer=false

图3-1-39 配置zk参数

  1. 进入 Zk安装目录\bin\执行 zkServer.cmd 5新开PowerShell窗口, 进入到Zk安装目录, 执行 zkCli.cmd, 连接成功后输入 ls /输出类似信息即安装成功

3.1.2 环境准备(windows版)

图3-1-40 验证zk是否安装成功

二、前端环境准备

  1. 安装nodejs 版本12.12.0 (下载地址见书籍【附件一】)

a.下载zip包之后解压到安装目录

b. 配置环境变量

ⅰ. 添加NODE_HOME环境变量

3.1.2 环境准备(windows版)

图3-1-41 添加NODE_HOME环境变量

ⅱ. 编辑PATH环境变量

3.1.2 环境准备(windows版)

图3-1-42 编辑PATH环境变量

c. 打开PowerShell输入

node --version
npm --version

图3-1-43 验证node和npm是否安装成功

输出类似信息,即为成功安装node与npm

3.1.2 环境准备(windows版)

图3-1-44 验证node和npm是否安装成功

  1. 安装vue-cli
npm install @vue/cli@4.5.17 -g

图3-1-45 安装vue-cli

安装完成之后执行vue --version,输出类似信息,即为成功安装vue-cli

3.1.2 环境准备(windows版)

图3-1-46 验证vue-cli是否安装成功

  1. 配置NPM源
npm config set registry http://nexus.shushi.pro/repository/kunlun/

图3-1-47 配置NPM源

  1. 登录NPM源账
npm login --registry "http://nexus.shushi.pro/repository/kunlun/"
# username、password、email 请见oinone开源社区群公告,也可以联系oinone合作伙伴或服务人员
npm info underscore

图3-1-48 登入NPM源的账号指令

3.1.2 环境准备(windows版)

图3-1-49 登入NPM源是否成功

3.1.2 环境准备(windows版)

图3-1-50 登入NPM源是否成功

  1. 安装cnpm (参见https://www.npmjs.com/package/cnpm
    npm install cnpm -g --registry=https://registry.npmmirror.com
    cnpm.cmd --version

    图3-1-51 安装cnpm

3.1.2 环境准备(windows版)

图3-1-51 验证cnpm安装是否成功

Oinone社区 作者:史, 昂原创文章,如若转载,请注明出处:https://doc.oinone.top/oio4/9226.html

访问Oinone官网:https://www.oinone.top获取数式Oinone低代码应用平台体验

(3)
史, 昂的头像史, 昂数式管理员
上一篇 2024年5月23日
下一篇 2024年5月23日

相关推荐

  • 3.5.6 DSL配置大全(略)

    因为默认视图很难满足客户的个性化需求,所以日常开发中view的配置是避免不了的。本系列篇是比较全面地介绍View配置的各个方面涉及:视图、字段、动作、布局等

  • 5.2 CDM之工程模式

    两种工程模式介绍 oinone推荐的两种工程模式都保留互联网特性,如跟业务无关的基础平台还是采用平台化思路建设。二种侧重点差异如下 第一种:比较适合企业采用多供应商联合开发场景,先以业务区分,各个业务线有独立的领域平台,最大限度保持不同业务线的独立性,有利于各个业务线独立发展(目前oinone上层星空系列产品采用这种工程模式,因为我们期望的时候帮助企业构建软件生态,必然要考虑不同供应商联合开发场景) 第二种:比较接近传统互联网架构,先按平台领域区分,如商品领域:商品平台做总工程,但里面按业务区分模块分子工程来保持业务相互独立,相对于第一种把领域的代码放一起,带来好处强化大家思考模型通用性。但不适用于跨公司主体间配合。 图5-2-1 Oinone-CDM的两种工程模式 注意事项: oinone兼容传统互联网架构 不管哪种模式,都需要解决CDM的维护问题 CDM维护的常见问题: Q:CDM层缺少模型怎么办? A:CDM层模型是逐步完善和丰富的。如果是特定业务自己需要的模型,这类模型无通用性。则加到自己的工程中;如果是通用的,则架构组确定是否需要纳入到CDM。 Q:CDM层已有的模型缺少字段怎么办? A:CDM层模型的字段也是逐步完善和丰富的,通用的字段在架构组确定后也会被吸收进来 Q:CDM层不同业务线相互影响怎么办? A:扩展字段最好带上自有前缀标志,如果觉得通用则提交架构组走模型缺少字段加入 Q:CDM层某模型新增加了的字段,但原先业务线已经加了相同含义字段 A:业务线可以把自己的字段related到CDM增加的新字段,并做数据迁移

    2024年5月23日
    1.1K00
  • 4.2.5 框架之网络请求-Request

    在中后台业务场景中,大部分的请求时候是可以被枚举的,比如创建、删除、更新、查询。在上文中,我们讲了httpClient如何自定义请求,来实现自己的业务诉求。本文中讲到的Request是离业务更近一步的封装,他提供了开箱即用的API,比如insertOne、updateOne,它是基于HttpClient做的二次封装,当你熟悉Request时,在中后台的业务场景中,所有的业务接口自定义将事半功倍。 一、Request详细介绍 元数据-model 获取模型实例 import { getModel } from '@kunlun/dependencies' getModel('modelName'); 图4-2-5-1 获取模型实例 清除所有缓存的模型 import { cleanModelCache } from '@kunlun/dependencies' cleanModelCache(); 图4-2-5-2 清除所有缓存的模型 元数据-module 获取应用实例,包含应用入口和菜单 import { queryModuleByName } from '@kunlun/dependencies' queryModuleByName('moduleName') 图4-2-5-3 获取应用实例 查询当前用户所有的应用 import { loadModules } from '@kunlun/dependencies' loadModules() 图4-2-5-4 查询当前用户所有的应用 query 分页查询 import { queryPage } from '@kunlun/dependencies' queryPage(modelName, { pageSize: 15, // 一次查询几条 currentPage, 1, // 当前页码 condition?: '' // 查询条件 maxDepth?: 1, // 查几层模型出来,如果有2,会把所有查询字段的关系字段都查出来 sort?: []; // 排序规则 }, fields, variables, context) 图4-2-5-5 分页查询 自定义分页查询-可自定义后端接口查询数据 import { customQueryPage } from '@kunlun/dependencies' customQueryPage(modelName, methodName, { pageSize: 15, // 一次查询几条 currentPage, 1, // 当前页码 condition?: '' // 查询条件 maxDepth?: 1, // 查几层模型出来,如果有2,会把所有查询字段的关系字段都查出来 sort?: []; // 排序规则 }, fields, variables, context) 图4-2-5-6 自定义分页查询 查询一条-根据params匹配出一条数据 import { queryOne } from '@kunlun/dependencies' customQueryPage(modelName, params, fields, variables, context) 图4-2-5-7 根据params匹配出一条数据 自定义查询 import { customQuery } from '@kunlun/dependencies' customQuery(methodName, modelName, record, fields, variables, context) 图4-2-5-8 自定义查询 update import { updateOne } from '@kunlun/dependencies' updateOne(modelName, record, fields, variables, context) 图4-2-5-9 update insert import { insertOne } from '@kunlun/dependencies' insertOne(modelName, record, fields, variables, context) 图4-2-5-10 insert delete import { deleteOne } from '@kunlun/dependencies'…

    2024年5月23日
    1.1K00
  • 3.5.1 构建第一个Menu

    在前面章节中我们也涉及到菜单,因为菜单我们模块就是地图、导航,没有地图、导航就无法畅游模块并进行相关业务操作。在3.3.4【模块的继承】一文关于多表继承的内容就有涉及到菜单的初始化,本文将展开介绍初始化Menu的两种方式分别是:注解式、数据初始化式。 注解式(举例) Step1 分析现有菜单注解 用@UxMenus声明DemoMenus为菜单初始化入口,同时该类在DemoModule配置扫描路径中,那么通过DemoMenus初始化的菜单都挂在demo_core这个模块上。 如果采用这种模式,建议同一个模块的菜单都只配置在一处 package pro.shushi.pamirs.demo.core.init; import pro.shushi.pamirs.boot.base.constants.ViewActionConstants; import pro.shushi.pamirs.boot.base.ux.annotation.action.UxRoute; import pro.shushi.pamirs.boot.base.ux.annotation.navigator.UxMenu; import pro.shushi.pamirs.boot.base.ux.annotation.navigator.UxMenus; import pro.shushi.pamirs.demo.api.model.*; import pro.shushi.pamirs.demo.api.proxy.PetShopProxy; import pro.shushi.pamirs.demo.api.proxy.PetShopProxyA; import pro.shushi.pamirs.demo.api.proxy.PetShopProxyB; @UxMenus public class DemoMenus implements ViewActionConstants { @UxMenu("商店管理")@UxRoute(PetShopProxy.MODEL_MODEL) class PetShopProxyMenu{} @UxMenu("商店管理A")@UxRoute(PetShopProxyA.MODEL_MODEL) class PetShopProxyAMenu{} @UxMenu("商店管理B")@UxRoute(PetShopProxyB.MODEL_MODEL) class PetShopProxyBMenu{} @UxMenu("商品管理")@UxRoute(PetItem.MODEL_MODEL) class ItemMenu{} @UxMenu("宠狗商品")@UxRoute(PetDogItem.MODEL_MODEL) class DogItemMenu{} @UxMenu("萌猫商品")@UxRoute(PetCatItem.MODEL_MODEL) class CatItemMenu{} @UxMenu("宠物品种")@UxRoute(PetType.MODEL_MODEL) class PetTypeMenu{} @UxMenu("萌猫品种")@UxRoute(PetCatType.MODEL_MODEL) class CatTypeMenu{} @UxMenu("宠狗品种")@UxRoute(PetDogType.MODEL_MODEL) class DogTypeMenu{} @UxMenu("宠物达人")@UxRoute(PetTalent.MODEL_MODEL) class PetTalentMenu{} } 图3-5-1-1 菜单注解 Step2 改造现有菜单注解 菜单的层级关系通过@UxMenu的嵌套进行描述 菜单点击效果有三种分别对应不同的Action的类型,关于Action的类型详见3.5.3【Action的类型】一文。 通过@UxRoute定义一个与菜单绑定的viewAction,@UxMenu("创建商店")@UxRoute(value = PetShop.MODEL_MODEL,viewName = "redirectCreatePage",viewType = ViewTypeEnum.FORM),其中viewName代表视图的name(其默认值为redirectListPage,也就是跳转到列表也),value代码视图所属模型的编码,viewType代表view类型(其默认值为ViewTypeEnum.TABLE) @UxServer定义一个与菜单绑定的serverAction,@UxMenu("UxServer")@UxServer(model = PetCatItem.MODEL_MODEL,name = "uxServer") ,其中name代表serverAction的name,model或value代码serverAction所属模型的编码 @UxLink定义一个与菜单绑定的UrlAction,@UxMenu("Oinone官网")@UxLink(value = "http://www.oinone.top”,openType= ActionTargetEnum.OPEN_WINDOW) ,其中value为跳转url,openType为打开方式默认为ActionTargetEnum.ROUTER,打开方式有以下几种 ROUTER("router", "页面路由", "页面路由") DIALOG("dialog", "页面弹窗", "页面弹窗") DRAWER("drawer", "打开抽屉", "打开抽屉") OPEN_WINDOW("openWindow", "打开新窗口", "打开新窗口") 配合菜单演示,PetCatItemAction增加一个uxServer的ServerAction package pro.shushi.pamirs.demo.core.action; ……包引用 @Model.model(PetCatItem.MODEL_MODEL) @Component public class PetCatItemAction extends DataStatusBehavior<PetCatItem> { ……省略其他代码 @Action(displayName = "uxServer") public PetCatItem uxServer(PetCatItem data){ PamirsSession.getMessageHub().info("uxServer"); return data; } } 图3-5-1-2 示例代码 新的菜单初始化代码如下 package pro.shushi.pamirs.demo.core.init; import pro.shushi.pamirs.boot.base.constants.ViewActionConstants; import pro.shushi.pamirs.boot.base.enmu.ActionTargetEnum; import pro.shushi.pamirs.boot.base.ux.annotation.action.UxLink; import pro.shushi.pamirs.boot.base.ux.annotation.action.UxRoute; import pro.shushi.pamirs.boot.base.ux.annotation.action.UxServer; import pro.shushi.pamirs.boot.base.ux.annotation.navigator.UxMenu; import pro.shushi.pamirs.boot.base.ux.annotation.navigator.UxMenus; import pro.shushi.pamirs.demo.api.model.*; import pro.shushi.pamirs.demo.api.proxy.PetShopProxy; import pro.shushi.pamirs.demo.api.proxy.PetShopProxyA; import pro.shushi.pamirs.demo.api.proxy.PetShopProxyB; import pro.shushi.pamirs.meta.enmu.ViewTypeEnum; @UxMenus public class DemoMenus implements ViewActionConstants { @UxMenu("商店") class ShopMenu{ @UxMenu("UxServer")@UxServer(model = PetCatItem.MODEL_MODEL,name = "uxServer") class ShopSayHelloMenu{ } @UxMenu("创建商店")@UxRoute(value = PetShop.MODEL_MODEL,viewName = "redirectCreatePage",viewType = ViewTypeEnum.FORM) class ShopCreateMenu{ }…

    2024年5月23日
    1.2K00
  • 3.4.3 函数的相关特性

    本小章会从oinone的函数拥有三方面特性,展开介绍 面向对象,继承与多态 面向切面编程,拦截器 SPI机制,扩展点

    Oinone 7天入门到精通 2024年5月23日
    1.0K00

Leave a Reply

登录后才能评论