一二三应用开发平台部署文档——开发环境搭建手册

背景

开源平台在ReadMe文档中简要描述了如何部署与启动以及重要注意事项,有小伙伴私信我希望提供一个详细具体的部署说明,然后联想到自己出于学习或研究目的,去搭建一些开源项目时,面对简要的说明也经常遇到障碍,比如报错了难以定位原因,反复尝试花费大量时间精力,甚至于发生折腾半天发现最终无法正常运行起来而最终放弃的情况……

基于上述原因,今天来详细说说平台如何搭建开发环境,包括注意事项,这部分内容不仅适用于本平台,也适用于大部分基于主流开源技术栈构建出来的平台。

如在搭建开发环境时遇到问题,请留言评论,我会及时回复。

环境准备

MySQL

早期的时候使用的是5.7.36,随着官方停止运维,更换到了8.0+,平滑升级,未发现需要调整的地方,当前我本地的版本是8.2.0.

Redis

当前平台使用Redis对数据字典进行了缓存,没有使用redis某些版本特别是高版本的特性,理论上对Redis版本无严格要求,我本地的Redis是一个较低的版本3.0.504。

导航到Redis安装目录下,运行redis-cli.exe,可以输入命令info server来确认已安装的Redis实际的版本号。
image.png

IDE

IDE属于基本功,就没必要详说了。
前端推荐使用VSCode,后端推荐IDEA。
后续操作以这二者为例进行说明。

nodejs

nodejs得好好说说。
前端相对后端比较灵活,也比较杂乱,规范性不是那么强。前端的js库、组件对nodejs依赖性比较强,如出现版本不兼容情况,报的错误也乱七八糟,难以排查。
此外,不同的前端框架和项目对nodejs的版本需求是不一样的,并且nodejs的高版本往往与低版本兼容。
这种情况下,开发环境存在使用不同nodejs版本的需求,此时,不建议直接安装nodejs,通过卸载安装方式来实现版本的切换,过于繁琐。
对于以上问题,已有应对方案,即nvm。
nvm全英文也叫node.js version management,是一个nodejs的版本管理工具,为了解决node.js各种版本存在不兼容现象的问题,可以通过它可以安装和切换不同版本的node.js。

下载页面https://github.com/coreybutler/nvm-windows/releases
最新版本1.1.12,建议直接下载windows安装包,下载地址https://github.com/coreybutler/nvm-windows/releases/download/1.1.12/nvm-setup.exe,安装过程会自动配置环境变量。如果在安装nvm之前电脑上已经装过nodejs,则会自动检测并提示是否要纳入nvm管理。

安装完成后,打开命令窗口,执行 nvm,会显示版本信息及使用说明(我本地装的是1.1.11版)。
image.png
只介绍几条常用的命令
设置国内镜像
默认情况下,是连接国外的源,下载安装会比较慢,需要调整为国内的镜像,具体如下操作:

nvm node_mirror  https://npm.taobao.org/mirrors/node/
nvm npm_mirror  https://npm.taobao.org/mirrors/npm/

以上两条命令也可以通过直接修改配置文件的方式实现,具体如下:
在nvm安装目录下,找到setting.txt,打开编辑,指向国内淘宝镜像地址

root: e:\tool\nvm
path: e:\tool\nodejs
node_mirror:https://npm.taobao.org/mirrors/node/
npm_mirror:https://npm.taobao.org/mirrors/npm/

下载nodejs版本
nvm install lastest
image.png

显示已安装版本清单
nvm list,列出电脑上已安装的nodejs版本,如下图所示
image.png
同时清晰地展现了当前生效的是哪个版本的nodejs。
切换生效的nodejs版本
nvm use 【version】,结合list命令,查看有哪些版本,然后使用use命令切换生效。
image.png
我本地环境使用的是16.14.2。

克隆项目

本地已安装git和图形化客户端TortoiseGit工具,版本无限制。
访问平台开源地址主页面,https://gitee.com/popsoft/abc-development-platform,点击下图的克隆/下载,选择https模式,点击复制,将仓库地址https://gitee.com/popsoft/abc-development-platform.git复制到剪贴板,如下图所示:
image.png

然后在本地磁盘空白处,右键菜单,选择Clone
image.png
弹出如下窗口,剪贴板中的url会自动填充,其他保持默认即可,点击ok即开始把代码从远程Gitee仓库拉取到本地磁盘。
image.png
成功完成如下图所示:
image.png

初始化数据库

去本地磁盘目录,如E:\dev\remote\abc-development-platform\resource下,找到
init.sql,这是一个包括创建数据库、创建表和初始化表数据的完整脚本。
放到你熟悉的任意一个MySQL客户端工具里执行,我用的是HeidiSQL。
执行完成后会出现一个名为“abc”的数据库。
image.png

前端搭建

使用VSCode,打开文件夹,在弹出对话框中选择platform-web目录,如下图所示:
image.png
这里并没有使用npm,而用的是pnpm,如果尚未安装,需要执行npm install pnpm -g,安装pnpm包,如已安装,该步跳过。
vscode加载完目录后能智能识别和解析,在左侧npm脚本面板里选择第一条命令,则会执行pnpm install命令
image.png
这个时间略长,报出来一些组件版本过时等警告可以忽略,前端的组件依赖版本比较混乱。
image.png
执行结束会提示如上图中的红框标记的错误,不用理会,因为我把husky主动移除导致的,不影响系统正常运行。
接下来进行前端最后一步,点击npm脚本面板中的第二行,执行dev命令即可
image.png
image.png
使用浏览访问localhost:4000,出现如下登录页面,说明前端搭建完成,正常运行。
image.png
此时点击登录会报错,因为后端还没有搭建和启动。

后端搭建

使用IDEA打开根目录下的pom.xml,自动加载模块。
打开Project Structure,确认下jdk版本是否变成了空,如为空,则选择一个本地的jdk1.8版本。
image.png
打开settring,导航到maven设置,确定本地库位置与自己开发环境一致,否则修改。
image.png
然后使用maven面板,点击重新加载所有项目,则maven去远程仓库里拉取依赖的jar包。
image.png
然后执行下maven的install命令。
image.png

打开abc-development-platform\platform-boot-starter-demo\src\main\resources目录下的application-dev.yml文件,确认里面的数据库连接、账号、密码以及redis的端口和密码与自己本地环境一致。

server:port: 8080
#数据连接
spring:datasource:# 数据库设置url: jdbc:mysql://localhost:3306/abc?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai&allowMultiQueries=trueusername: rootpassword: root# redis设置redis:host: localhostport: 6379password:

最后一步,启动platform-boot-starter-demo\src\main\java\tech\abc\platform\boot目录下的PlatformBootApplication类的main方法,中间如有报错,无非是数据库连接账号密码、redis密码有误,或者是端口冲突,参照错误提示调整即可。
最后,成功启动如下:
image.png
补充说明
系统的下拉数据源,也即数据字典使用redis缓存,按上述步骤构建后,部分查询界面不显示中文名称,可在系统登录后,访问系统管理-》系统维护菜单下的“重建缓存”按钮,系统会自动将数据库的字典数据写入到redis中。

接口平台对接客户端

cip-client是一个模拟的接口平台客户端,是一个独立的springboot,相当于第三方系统,有自己独立的数据库,数据库脚本参见\cip-client\src\main\resources\init.sql

minio启用说明

平台对于文件存储除了支持本地磁盘模式外,还实现了minio对象存储组件的集成。如需启用,需安装minio服务端,版本2021-04-22T15-44-28Z(最后一个基于apache 2.0开源协议的版本),并修改平台配置文件。

开源平台资料

平台名称:一二三开发平台
简介: 企业级通用开发平台
设计资料:csdn专栏
开源地址:Gitee
开源协议:MIT
欢迎收藏、点赞、评论,你的支持是我前行的动力。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/283428.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL | 往数据库中插入时间时,差了八个小时(时区设置)

一:问题 在往数据库中插入(读取)时间的时候,会相差八个小时,这是常见的问题,原因是因为时区设置的问题 二:知识点 UTC:Coordinated Universal Time 协调世界时。 GMT:…

AttributeError: module ‘jax‘ has no attribute ‘Array‘解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。…

【JAVA】CyclicBarrier源码解析以及示例

文章目录 前言CyclicBarrier源码解析以及示例主要成员变量核心方法 应用场景任务分解与合并应用示例 并行计算应用示例 游戏开发应用示例输出结果 数据加载应用示例 并发工具的协同应用示例 CyclicBarrier和CountDownLatch的区别循环性:计数器的变化:用途…

I2C总线(二)注册控制器

一、i2c适配器 i2c适配器在硬件层面其实就是i2c控制器,因为跟芯片相关,一般内核会带对应厂商的芯片驱动,实现在i2c/busses中找好了。 我们直接看代码,以imx6为例。 1、平台总线匹配 imx6中是做了,驱动和设备树分离…

AIGC(生成式AI)试用 15 -- 小结

断断续续的尝试在实际的工作使用中理解和测试AIGC,运用会越来越多、越来越广范,但也是时候做个小结了。 没有太用热火的ChatGPT,只是拿了日常最容易用到的CSDN创作助手(每周写文章总是看到)和文心一言(…

检测头篇 | RT-DETR 添加 小目标检测头 (P2,P3,P4,P5)

往期推荐 百度 RT-DETR 算法原理解析 | 超越YOLO的目标检测新高度? 手把手教你使用云服务器训练 RT-DETR (Pytorch版) RT-DETR 项目【训练】【验证】【推理】脚本 | 最新更新🍀 直接打印 FPS,mAP50,mAP75,mAP95🍀 RT-DETR Bug 及解决方案汇总 【训练 & 断点续训】 …

YOLOv3-YOLOv8的一些总结

0 写在前面 这个文档主要总结YOLO系列的创新点,以YOLOv3为baseline。参考(抄)了不少博客,就自己看看吧。有些模型的trick不感兴趣就没写进来,核心的都写了。 YOLO系列的网络都由四个部分组成:Input、Backbone、Neck、Prediction…

数据分析为何要学统计学(4)——何为置信区间?它有什么作用?

置信区间是统计学中的一个重要工具,是用样本参数()估计出来的总体均值在某置信水平下的范围。通俗一点讲,如果置信度为95%(等价于显著水平a0.05),置信区间为[a,b],这就意味着总体均值落入该区间的概率为95%…

Kubernetes (k8s) 快速认知

应用部署方式 传统部署时代 早期的时候,各个组织是在物理服务器上运行应用程序。缺点 资源分配问题: 无法限制在物理服务器中运行的应用程序资源使用 维护成本问题: 部署多个物理机,维护许多物理服务器的成本很高 虚拟化部署时…

c++11--左值,右值,移动语义,引用折叠,模板类型推断,完美转发

1.移动语义 移动构造和移动赋值均属于移动语义范畴。 移动语义的实现依赖于右值概念&#xff0c;右值引用。 1.1.一个移动构造的实例 #include <iostream> using namespace std; class HasPtrMem{ public:HasPtrMem():d(new int(3)){cout << "Construct: &qu…

Redis Set类型

集合类型也是保存多个字符串类型的元素的&#xff0c;但和列表类型不同的是&#xff0c;集合中 1&#xff09;元素之间是无序的 2&#xff09;元素不允许重复 一个集合中最多可以存储2的32次方个元素。Redis 除了支持集合内的增删查改操作&#xff0c;同时还支持多个集合取交…

链表之带头双向循环链表(C语言版)

我们之前已经介绍过链表的知识了&#xff0c;这里我们直接开始实现带头双向循环链表 数据结构之单链表&#xff08;不带头单向非循环链表&#xff09;-CSDN博客 第一步&#xff1a;定义结构体 //定义结构体 typedef int SLTDateType; typedef struct Listnode {SLTDateType d…