兼容性修改记录

2023年 8月 15日 32.7k 0

最初飞腾+麒麟+达梦+金蝶部署

信创机如果可以搭建Java、nodejs、redis、数据库的开发环境,部署就没问题,环境搭建和部署文档见下方

之前低代码只支持mysql方言,此次调整主要是对flowable的生成act表、低代码建表、配置表生成页面做了针对达梦数据库的兼容。此后部署别的数据库(可能客户会要求Oracle、SQL Server、人大金仓等)可以参考此文档修改记录进行数据库支持和sql方言调整。另外针对打war包、金蝶部署做了调整。

如果还没攻克多~~~~数据源~~~~,比较好的解决办法还是一个数据库一个分支,~~~~低代码~~~~就核心功能开发后镜像库推送git到别的数据库版本,因为数据库分支基本是新增包,所以一般不会有代码冲突,可以放心同步更新。

目前舍弃多数据源,采用一个数据源一套配置文件,在yml换配置直接可用。

修改记录(已完成)

一、启动报错

1、flowable的核心工程没达梦支持

AbstractEngineConfiguration 保留路径拉到本地重写,加上dm。(flowable只改了一个类,引用麻烦就放本地。

2、修改liquibase源码

新建DM8Database

重写fastFetchQuery

重写bulkFetchQuery

新增queryDameng方法

重写ChangeParameterMetaDataTest

liquibase改的文件较多,所以重新打新版本jar包在pom引用。

二、能正常启动之后一半页面报错

1、npm启动有一些菜单加载不出来是linux对启动文件数量做了限制

echo fs.inotify.max_user_watches = 524288 | sudo tee -a /etc/sysctl.conf

sudo sysctl -p

2、重写mybatisplus的拦截器过滤反引号,基本解决掉sql语句增删改查报错

3、执行DDL语句报错,在TableServiceImpl加上对数据源的判断,重写达梦的建表和修改表语句

(新增重新写mapper,删除列的语句直接改成了循环执行,修改也重写mapper循环执行)

4、数据库已有表 点配置表报错,mysql的information_schema.columns表专门用来存储列信息,DM没有

   需要针对各数据库列存储特色重新整理列信息,重写mapper用新的sql能正常运行(目前已没有把数据库已有表拉进低代码配置的功能)

三、打包部署金蝶

   1、在web模块下加war包配置,本地包依赖

   2、低代码项目使用的undertow容器(中间件 类似tomcat),部署时有两个中间件

   因此在pom文件下undertow加了provided,打war包不放入启动lib

   3、打包部署后启动报错redis连接池与pool2版本不符,加入老版本redis依赖

   4、金蝶在windows部署不能修改工作流设计

   原因是windows复制流文件会在开头加入表示符破坏xml格式,导致工作流的源文件解析失败

四、打包部署东方通

  问题基本和金蝶一致,war包问题不再赘述。要进行的操作有 改端口、改url上下文、对PUT和DELETE请求的支持。

麒麟操作系统部署

以下操作先sudo -i切换root用户再执行,文档里不再添加sudo授权

jdk和redis默认服务器有网,用包管理器来安装。没网就需要拷包配环境了。

升级包管理器

sudo apt-get update

允许打开的文件视图数(安装达梦或者nodejs启动前端可能会被限制,所以提前打开)

echo fs.inotify.max_user_watches = 524288 | sudo tee -a /etc/sysctl.conf

sudo sysctl -p

关闭Kysec(开启Kysec可能会出现shell脚本或可执行程序无法运行等情况)

setstatus -p disable

打开Kysec(环境部署完成、端口整理好之后正式环境可以打开Kysec保证安全性)

security-switch --set default

jdk

sudo apt-get install openjdk-8-jdk

redis

sudo apt-get install redis

nodejs

把本地包传到服务器

tar -xvf node-v14.21.1-linux-arm64.tar.gz

mv node-v14.21.1-linux-arm64 /usr/local/node

环境变量添加 vi /etc/profile

export PATH=$PATH:/usr/local/node/bin

软链接

ln -s /usr/local/node/bin/node /usr/local/bin/

ln -s /usr/local/node/bin/npm /usr/local/bin/

暂用淘宝镜像/也可以直接把module包拷过来不用重新安装依赖

npm --registry registry.npm.taobao.org install

达梦数据库

把安装包传到服务器双击解压进入iso目录挂载

mount dm8_20221025_FTarm_kylin10_sp1_64.iso /mnt

cd /mnt

./DMInstall.bin

图形化安装弹出页面后一直下一步最终弹出初始化数据库

命令行只需./DMInstall.bin -i 按照提示设置时区路径即可安装

注意初始化的时候关闭大小写敏感 不出所料会初始化超时,这是因为新建表文件等过程结束后,一些东西由于权限问题需要管理员执行一遍,打开shell:

允许服务

systemctl enable DmServiceDMSERVER

允许dmdba角色操纵data文件

chown -R dmdba:dinstall /opt/dmdbms/data

启动服务

systemctl start DmServiceDMSERVER

金蝶

把金蝶压缩包解压到opt下,用新的license内容替换掉license.xml里的文件

vi /opt/AAS-V9.0/domains/mydomain/config/vm.options

将 apusic.http.disabledMethods=DELETE,PUT,TRACE,OPTIONS 注释掉

vi /opt/AAS-V9.0/domains/mydomain/config/apusic.conf

将 6888改成自己想要的端口比如8888

将war包放在/opt/AAS-V9.0/domains/mydomain/applications里

/opt/AAS-V9.0/domains/mydomain/bin目录下启动

./startapusic

初次启动需要设置密码,开发密码建议Admin1234,启动后会对应用生成配置文件

vi /opt/AAS-V9.0/domains/mydomain/config/server.xml

将default的base-context改成别的,例如"/a"

将easycode-web.war的base-context改成"/"

这样就保留了低代码之前没有上下文的设定(端口和上下文可根据需求改,前后端能连接即可)

war包部署生成代码后不能热加载

热部署文件DynamicJavaCompiler里,linux部署加载jar包用的是冒号需要改。

指定路径,目前写成了从yml文件加载,一个是biz路径,一个是文件war包里的lib路径。

把lombok的 provided 去掉即可打包进lib,在webapp下将java的tools包放进去也可打包进lib,这样就可以把热加载需要的jar包都集齐在lib路径下。

easycode
  hot-load:
    file-path: /home/zhangsan/Desktop/TongWeb7.0.4.7_Enterprise_Linux/bin/easycode-biz
    lib-path: /home/zhangsan/Desktop/TongWeb7.0.4.7_Enterprise_Linux/deployment/easycode-web/WEB-INF/lib

东方通可以用相对路径,金蝶会报错,所以还用的绝对路径。

数据库兼容补丁化

按照低代码目前状况

可以将做过代码修改的包重命名也deploy到本地仓库,用mysql就正常用,用兼容别的库就引这些包

相关文章

服务器端口转发,带你了解服务器端口转发
服务器开放端口,服务器开放端口的步骤
产品推荐:7月受欢迎AI容器镜像来了,有Qwen系列大模型镜像
如何使用 WinGet 下载 Microsoft Store 应用
百度搜索:蓝易云 – 熟悉ubuntu apt-get命令详解
百度搜索:蓝易云 – 域名解析成功但ping不通解决方案

发布评论