低代码开源项目Joget的研究——Joget8社区版安装部署
大纲
- 环境准备
- 安装必要软件
- 配置Java
- 配置JAVA_HOME
- 配置Java软链
- 安装三方库
- 获取源码
- 配置MySql数据库
- 创建用户
- 创建数据库
- 导入初始数据
- 配置数据库连接
- 配置sessionFactory(非必须,如果后续保存再配置)
- 编译
- 下载tomcat
- 启动
- 下载aspectjweaver
- 移动jw.war文件
- 编写脚本
- 运行
- 测试
- 参考资料
在《低代码开源项目Joget的研究——Joget7社区版安装部署》一文中,我们介绍了oget7的部署。本文我们将介绍Joget8.1社区版的编译部署。
环境准备
安装必要软件
We recommend the use of the LTS version of 11. Java 17 (LTS) is not supported at the moment.
# 更新系统包
sudo apt-get update# 安装Java
sudo apt-get install openjdk-11-jdk# 安装MySQL
sudo apt-get install mysql-server# Install Apache Maven 2.2.1 or above
sudo apt-get install maven# Install Git
sudo apt-get install git# 安装unzip
sudo apt-get install unzip
配置Java
配置JAVA_HOME
sudo vim /etc/environment
在上述文件中,新增如下内容
JAVA_HOME=“/usr/lib/jvm/java-11-openjdk-amd64”
重新加载环境,并检验环境
source /etc/environment
echo $JAVA_HOME
配置Java软链
sudo mv /usr/bin/java /usr/bin/java_bak
sudo ln -s /usr/lib/jvm/java-11-openjdk-amd64/bin/java /usr/bin/java
检测java版本
java -version
openjdk version “11.0.25” 2024-10-15
OpenJDK Runtime Environment (build 11.0.25+9-post-Ubuntu-1ubuntu124.04)
OpenJDK 64-Bit Server VM (build 11.0.25+9-post-Ubuntu-1ubuntu124.04, mixed mode, sharing)
安装三方库
wget https://dev.joget.org/community/download/attachments/19104566/install-libraries.zip
unzip -a install-libraries.zip
cd install-libraries
./install_linux.sh
cd ~
获取源码
mkdir joget_src
cd joget_src
git clone --branch 8.1-RELEASE https://github.com/jogetworkflow/jw-community.git
cd ~
配置MySql数据库
创建用户
- 使用
sudo登录MySql
sudo mysql
- 设置
root用户密码
在MySQL命令行中,执行以下命令来设置root用户的密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'pwd123';
FLUSH PRIVILEGES;
- 退出MySql
EXIT;
- 使用新密码登录MySql
mysql -u root -p
创建数据库
仍然以root用户登录MySql
CREATE DATABASE jwdb;
EXIT;
导入初始数据
mysql -uroot jwdb < joget_src/jw-community/wflow-install/src/main/resources/data/jwdb-empty.sql -p
输入之前创建的root密码(pwd123)
配置数据库连接
在根目录下下载配置文件包
cd ~
wget http://dev.joget.org/community/download/attachments/19104566/wflow.zip
unzip -a wflow.zip
修改数据库连接配置
cd wflow
sudo vim app_datasource-default.properties
由于我们之前给mysql的root用户设置的了密码pwd123,于是要将此更新到该文件中
#
#Thu Apr 16 17:47:42 MYT 2015
workflowDriver=com.mysql.jdbc.Driver
workflowUrl=jdbc\:mysql\://localhost\:3306/jwdb?characterEncoding\=UTF-8
workflowUser=root
profileName=
workflowPassword=pwd123
配置sessionFactory(非必须,如果后续保存再配置)
在wflow-commons/src/main/resources/commonsApplicationContext.xml文件的<property name="hibernateProperties">的下插入<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
如下图:

编译
cd ~/joget_src/jw-community/wflow-app/
mvn clean install
下载tomcat
cd ~# 从 Apache Tomcat 官方网站下载最新的 Tomcat 9 二进制发行版
wget https://downloads.apache.org/tomcat/tomcat-9/v9.0.98/bin/apache-tomcat-9.0.98.tar.gz# 解压缩下载的文件
tar xzf apache-tomcat-9.0.98.tar.gz
启动
下载aspectjweaver
aspectjweaver 是 AspectJ 的一个组件,AspectJ 是一个面向方面编程(AOP)的扩展,它用于在 Java 应用程序中实现横切关注点(如日志记录、事务管理、安全性等)。aspectjweaver 是 AspectJ 的织入器,它可以在编译时、类加载时或运行时将切面代码织入到目标代码中。
cd ~/wflow/
wget https://repo1.maven.org/maven2/org/aspectj/aspectjweaver/1.8.5/aspectjweaver-1.8.5.jar .
cd ~
移动jw.war文件
将jw.war拷贝到对应目录下
# 复制 WAR 文件到 Tomcat 的 webapps 目录
cp ~/joget_src/jw-community/wflow-consoleweb/target/jw.war ~/apache-tomcat-9.0.98/webapps/
编写脚本
编写运行脚本
vim tomcat9-run.sh
填入以下内容
#!/bin/shexport CATALINA_PID="$HOME/apache-tomcat-9.0.98/temp/tomcat.pid"
mkdir -p "$HOME/apache-tomcat-9.0.98/temp"
export JAVA_OPTS="-XX:MaxPermSize=128m -Xmx768M -Dwflow.home=./wflow/ -javaagent:./wflow/aspectjweaver-1.8.5.jar"apache-tomcat-9.0.98/bin/catalina.sh $*
运行
sh tomcat9-run.sh start
测试
使用下面命令查看服务所在机器的ip
ip addr show

使用该IP的8080端口访问该服务(http://localhost:8080/jw/web/login)

参考资料
- https://dev.joget.org/community/display/DX8/Build+Source+Code+on+Linux
- https://www.joget.org/product/features/
相关文章:
低代码开源项目Joget的研究——Joget8社区版安装部署
大纲 环境准备安装必要软件配置Java配置JAVA_HOME配置Java软链安装三方库 获取源码配置MySql数据库创建用户创建数据库导入初始数据 配置数据库连接配置sessionFactory(非必须,如果后续保存再配置)编译下载tomcat启动下载aspectjweaver移动jw…...
upload-labs关卡记录15
图片马,这里就可以看到任务和注意事项: 使用一个正常图片,然后拼接一个一句话木马即可实现。这里就用命令窗口进行实现: copy 111.png/b shell.php/a shell.png 注意这里的命令窗口要在存在图片和一句话木马的目录下打开&#…...
1.使用 Couchbase 数仓和 Temporal(一个分布式任务调度和编排框架)实现每 5 分钟的增量任务
在使用 Couchbase 数仓和 Temporal(一个分布式任务调度和编排框架)实现每 5 分钟的增量任务时,可以按照以下步骤实现,同时需要注意关键点。 实现方案 1. 数据层设计(Couchbase 增量存储与标记) 在 Couchb…...
matrix-breakout-2-morpheus
将这一关的镜像导入虚拟机,出现以下页面表示导入成功 以root身份打开kali终端,输入以下命令,查看靶机ip arp-scan -l 根据得到的靶机ip,浏览器访问进入环境 我们从当前页面没有得到有用的信息,尝试扫描后台 发现有一个…...
农历节日倒计时:基于Python的公历与农历日期转换及节日查询小程序
农历节日倒计时:基于Python的公历与农历日期转换及节日查询小程序 摘要 又是一年春节即将到来,突然想基于Python编写一个农历节日的倒计时小程序。该程序能够根据用户输入的农历节日名称,计算出距离该节日还有多少天。通过使用lunardate库进…...
【RabbitMQ的死信队列】
死信队列 什么是死信队列死信队列的配置方式死信消息结构 什么是死信队列 消息被消费者确认拒绝。消费者把requeue参数设置为true(false),并且在消费后,向RabbitMQ返回拒绝。channel.basicReject或者channel.basicNack。消息达到预设的TTL时限还一直没有…...
掌握软件工程基础:知识点全面解析【chap02】
chap02 软件项目管理 1.代码行度量与功能点度量的比较 1.规模度量 是一种直接度量方法。 代码行数 LOC或KLOC 生产率 P1L/E 其中 L 软件项目代码行数 E 软件项目工作量(人月 PM) P1 软件项目生产率(LOC/PM) 代码出错…...
公路边坡安全监测中智能化+定制化+全面守护的应用方案
面对公路边坡的安全挑战,我们如何精准施策,有效应对风险?特别是在强降雨等极端天气下,如何防范滑坡、崩塌、路面塌陷等灾害,确保行车安全?国信华源公路边坡安全监测解决方案,以智能化、定制化为…...
闲谭Scala(3)--使用IDEA开发Scala
1. 背景 广阔天地、大有作为的青年,怎么可能仅仅满足于命令行。 高端大气集成开发环境IDEA必须顶上,提高学习、工作效率。 开整。 2. 步骤 2.1 创建工程 打开IDEA,依次File-New-Project…,不好意思我的是中文版:…...
Go语言反射从入门到进阶
一、反射的基础概念 在 Go 语言中,反射是程序在运行时检查和修改自身状态的能力。通过反射,我们可以在运行时获取变量的类型信息、查看结构体的字段、调用方法等。Go 语言的反射功能主要通过 reflect 包实现。 1.1 反射的基本类型:Type 和 …...
【基于rust-wasm的前端页面转pdf组件和示例】
基于rust-wasm前端页面转pdf组件和示例 朔源多余的废话花哨的吹牛那点东西要不要拿来试试事到如今 做个美梦 我觉得本文的意义在于,wasm扩展了浏览器的边界,但是又担心如同java的web applet水土不服. 如同我至今看不出塞班和iOS的不同下载地址:在github的备份 朔源…...
ARM64 Windows 10 IoT工控主板运行x86程序效率测试
ARM上的 Windows 10 IoT 企业版支持仿真 x86 应用程序,而 ARM上的 Windows 11 IoT 企业版则支持仿真 x86 和 x64 应用程序。英创推出的名片尺寸ARM64工控主板ESM8400,可预装正版Windows 10 IoT企业版操作系统,x86程序可无需修改而直接在ESM84…...
开放世界目标检测 Grounding DINO
开放世界目标检测 Grounding DINO flyfish Grounding DINO 是一种开创性的开放集对象检测器,它通过结合基于Transformer的检测器DINO与基于文本描述的预训练技术,实现了可以根据人类输入(如类别名称或指代表达)检测任意对象的功…...
easegen将教材批量生成可控ppt课件方案设计
之前客户提出过一个需求,就是希望可以将一本教材,快速的转换为教学ppt,虽然通过人工程序脚本的方式,已经实现了该功能,但是因为没有做到通用,每次都需要修改脚本,无法让客户自行完成所有流程&am…...
2002 - Can‘t connect to server on ‘192.168.1.XX‘ (36)
参考:2002 - Can‘t connect to server on ‘192.168.1.XX‘ (36) ubantu20.04,mysql5.7.13 navicat 远程连接数据库报错 2002 - Can’t connect to server on ‘192.168.1.61’ (36) 一、查看数据库服务是否有启动,发现有启动 systemctl status mysql…...
【虚拟机网络拓扑记录】
虚拟机网络拓扑记录 虚拟机安装windows到ubuntu的网络拓扑ubuntu到ubuntu里面的虚拟机网络拓扑windows到ubuntu里面的虚拟机网络拓扑 虚拟机安装 本实验宿主机为windos, 安装vmware,虚拟机操作系统使用ubuntu,然后再在ubuntu上面创建新的虚拟…...
【单片机通讯协议】—— 常用的UART/I2C/SPI等通讯协议的基本原理与时序分析
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、通信基本知识1.1 MCU的参见外设1.2 通信的分类按基本的类型从传输方向上来分 二、UART(串口通讯)2.1 简介2.2 时序图分析2.3 UART的…...
Vue3 核心语法
1. OptionsAPI 与 CompositionAPI Vue2 的API设计是 Options(配置)风格的。Vue3 的API设计是 Composition(组合)风格的。 1.1 Options API 的弊端 Options类型的 API,数据、方法、计算属性等,是分散在&a…...
LLaMA-Factory GLM4-9B-CHAT LoRA 指令微调实战
🤩LLaMA-Factory GLM LoRA 微调 安装llama-factory包 git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git进入下载好的llama-factory,安装依赖包 cd LLaMA-Factory pip install -e ".[torch,metrics]" #上面这步操作会完成…...
GTM023 W.H.Greub线性代数经典教材:Linear Algebra
这本教材是我高中时期入门线性代数的主要教材,我的很多基础知识都来源于这本书,如今看回这本书可以说满满的回忆。这本书可以说,是我读过的内容最为全面且完备的线性代数教材了。而且它的语言风格非常的代数化,没有什么直观可言&a…...
Android Wi-Fi 连接失败日志分析
1. Android wifi 关键日志总结 (1) Wi-Fi 断开 (CTRL-EVENT-DISCONNECTED reason3) 日志相关部分: 06-05 10:48:40.987 943 943 I wpa_supplicant: wlan0: CTRL-EVENT-DISCONNECTED bssid44:9b:c1:57:a8:90 reason3 locally_generated1解析: CTR…...
基于大模型的 UI 自动化系统
基于大模型的 UI 自动化系统 下面是一个完整的 Python 系统,利用大模型实现智能 UI 自动化,结合计算机视觉和自然语言处理技术,实现"看屏操作"的能力。 系统架构设计 #mermaid-svg-2gn2GRvh5WCP2ktF {font-family:"trebuchet ms",verdana,arial,sans-…...
调用支付宝接口响应40004 SYSTEM_ERROR问题排查
在对接支付宝API的时候,遇到了一些问题,记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...
连锁超市冷库节能解决方案:如何实现超市降本增效
在连锁超市冷库运营中,高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术,实现年省电费15%-60%,且不改动原有装备、安装快捷、…...
测试markdown--肇兴
day1: 1、去程:7:04 --11:32高铁 高铁右转上售票大厅2楼,穿过候车厅下一楼,上大巴车 ¥10/人 **2、到达:**12点多到达寨子,买门票,美团/抖音:¥78人 3、中饭&a…...
C++中string流知识详解和示例
一、概览与类体系 C 提供三种基于内存字符串的流,定义在 <sstream> 中: std::istringstream:输入流,从已有字符串中读取并解析。std::ostringstream:输出流,向内部缓冲区写入内容,最终取…...
如何在最短时间内提升打ctf(web)的水平?
刚刚刷完2遍 bugku 的 web 题,前来答题。 每个人对刷题理解是不同,有的人是看了writeup就等于刷了,有的人是收藏了writeup就等于刷了,有的人是跟着writeup做了一遍就等于刷了,还有的人是独立思考做了一遍就等于刷了。…...
C++使用 new 来创建动态数组
问题: 不能使用变量定义数组大小 原因: 这是因为数组在内存中是连续存储的,编译器需要在编译阶段就确定数组的大小,以便正确地分配内存空间。如果允许使用变量来定义数组的大小,那么编译器就无法在编译时确定数组的大…...
网站指纹识别
网站指纹识别 网站的最基本组成:服务器(操作系统)、中间件(web容器)、脚本语言、数据厍 为什么要了解这些?举个例子:发现了一个文件读取漏洞,我们需要读/etc/passwd,如…...
招商蛇口 | 执笔CID,启幕低密生活新境
作为中国城市生长的力量,招商蛇口以“美好生活承载者”为使命,深耕全球111座城市,以央企担当匠造时代理想人居。从深圳湾的开拓基因到西安高新CID的战略落子,招商蛇口始终与城市发展同频共振,以建筑诠释对土地与生活的…...
