06_虚拟机中间件部署_xxl-job 部署

xxl-job 部署

xxl-job 部署

代码拉取

https://github.com/xuxueli/xxl-job

直接 IDea 拉取

初始化数据库

我是打算把xxl-job也部署到虚拟机的,所以这个xxl-job存储数据的数据库也直接建立在已有的 nfturbo 用户上。

xxl-job的数据库初始化sql语句在这里

直接新建一个数据库,然后执行初始化数据

配置文件修改:

改个端口号防止冲突,以及数据库的连接

yaml 复制代码
### web
# 调度中心 Web 服务的监听端口
server.port=23333
# 访问地址变为:http://192.168.209.129:23333/xxl-job-admin
server.servlet.context-path=/xxl-job-admin

### actuator 所有监控接口的统一前缀
management.endpoints.web.base-path=/actuator
# 关闭 Actuator 中"邮件健康检查"功能(避免不必要的告警)。一般保持 false 即可
management.health.mail.enabled=false

### resources 静态资源
# DispatcherServlet 的加载时机。0 表示容器启动时立即加载(默认 -1 为懒加载)。设为 0 可加快首次请求响应
spring.mvc.servlet.load-on-startup=0
#静态资源 URL 匹配模式。所有 /static/xxx 的请求都会找静态资源
spring.mvc.static-path-pattern=/static/**
#静态资源文件存放位置。只扫描 classpath 下的 /static/ 目录(jar 包内)
spring.web.resources.static-locations=classpath:/static/

### freemarker 模板引擎配置
#Freemarker 模板文件存放路径(xxl-job 的页面模板都在这里)
spring.freemarker.templateLoaderPath=classpath:/templates/
#模板文件后缀
spring.freemarker.suffix=.ftl
#字符编码
spring.freemarker.charset=UTF-8
spring.freemarker.request-context-attribute=request
#Freemarker 数字格式化规则。显示小数时最多保留 8 位,不足不补 0
spring.freemarker.settings.number_format=0.##########
#安全策略:限制 Freemarker 模板中 new 任意 Java 类(防止模板注入攻击)。safer 是推荐的安全模式
spring.freemarker.settings.new_builtin_class_resolver=safer

### mybatis -  MyBatis Mapper XML 文件位置。扫描 classpath 下的所有 *Mapper.xml 文件
mybatis.mapper-locations=classpath:/mapper/*Mapper.xml

### datasource-pool   -> HikariCP 连接池配置; Spring Boot 默认连接池
spring.datasource.type=com.zaxxer.hikari.HikariDataSource
# 最小空闲连接数
spring.datasource.hikari.minimum-idle=10
# 最大连接池大小
spring.datasource.hikari.maximum-pool-size=30
# 自动提交
spring.datasource.hikari.auto-commit=true
# 空闲连接存活时间(ms)
spring.datasource.hikari.idle-timeout=30000
# 连接池名称(日志用)
spring.datasource.hikari.pool-name=HikariCP
# 连接最大存活时间(15分钟)
spring.datasource.hikari.max-lifetime=900000
# 获取连接超时(10秒)
spring.datasource.hikari.connection-timeout=10000
# 连接有效性测试 SQL
spring.datasource.hikari.connection-test-query=SELECT 1
# 验证超时(1秒)
spring.datasource.hikari.validation-timeout=1000

### xxl-job, datasource 核心数据库连接 -- 这个就得改成我自己创建的数据库了
spring.datasource.url=jdbc:mysql://192.168.209.129:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai
spring.datasource.username=ljh
spring.datasource.password=@Ljh123456@
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

### xxl-job, email 邮件告警配置
spring.mail.host=smtp.qq.com
spring.mail.port=25
spring.mail.username=xxx@qq.com
spring.mail.from=xxx@qq.com
spring.mail.password=xxx
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true
spring.mail.properties.mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory

### xxl-job, access token 安全令牌
xxl.job.accessToken=default_token

### xxl-job, timeout by second, default 3s 调度中心触发任务时的 HTTP 超时时间(秒)。默认 3 秒,一般够用
xxl.job.timeout=3

### xxl-job, i18n (default is zh_CN, and you can choose "zh_CN", "zh_TC" and "en")
#管理后台语言(zh_CN = 简体中文,zh_TC = 繁体,en = 英文)
xxl.job.i18n=zh_CN

## xxl-job, triggerpool max size 触发线程池
#fast:快速任务(<3s),最多 300 线程
xxl.job.triggerpool.fast.max=300
#slow:慢任务(≥3s),最多 200 线程
xxl.job.triggerpool.slow.max=200

### xxl-job, log retention days 日志保留天数
xxl.job.logretentiondays=30

### xxl-sso 单点登录相关,基本不用动
xxl-sso.token.key=xxl_job_login_token
# 有效期7天
xxl-sso.token.timeout=604800000
xxl-sso.client.excluded.paths=
xxl-sso.client.login.path=/auth/login

访问:

直接执行启动类即可

http://localhost:23333/xxl-job-admin/#/xxl-job-admin/dashboard

账号密码是默认的:

账号:admin

密码:123456

部署到服务器:

打包

然后找到 admin 模块的 jar 即可

本地上传到虚拟机

PowerShell 是 Windows 的"超级命令行终端",类似 Linux 的 Bash;

在PowerShell用 scp 命令复制上传到linux;

虚拟机存放jar包的路径是我自己创建的,用于短期使用,如果是生产级别的,路径就需要严格划分。

复制代码
到指定位置执行这个命令
scp xxl-job-admin-3.4.0-SNAPSHOT.jar  ljh@192.168.209.129:/home/ljh/nfturbo/middleware/xxl-job/my-jar

上传成功

虚拟机后台执行jar包

复制代码
 cd /home/ljh/nfturbo/middleware/xxl-job/my-jar
 
到指定位置执行,后台运行这个jar包
nohup java -jar xxl-job-admin-3.4.0-SNAPSHOT.jar > xxl-job-admin.out 2>&1 &

使用 nohup 结合 & 是 Linux 上最简单的方式,让你的 JAR 包在后台运行,并且即使你退出 SSH/终端、关闭会话也不会停止(nohup 忽略 SIGHUP 信号)。
> xxl-job-admin.out:标准输出(日志)写入这个文件
2>&1:标准错误也写入同一个文件(否则错误会丢到 nohup.out 或终端)
&:放到后台运行

查看是否启动成功

1、查看进程

查看是否启动成功,有进程只是代买

复制代码
ps -ef | grep xxl-job-admin
2、查看日志

上面的启动jar包命令,把xxl-job-admin 的日志输出在 xxl-job-admin.out 这个文件里面,所以日志在这个文件里面查看

复制代码
tail -n 50 xxl-job-admin.out
报错信息
java 复制代码
Caused by: java.lang.IllegalStateException: Logback configuration error detected: 
ERROR in ch.qos.logback.core.rolling.RollingFileAppender[file] - Failed to create parent directories for [/data/applogs/xxl-job/xxl-job-admin.log]
ERROR in ch.qos.logback.core.rolling.RollingFileAppender[file] - openFile(/data/applogs/xxl-job/xxl-job-admin.log,true) call failed. java.io.FileNotFoundException: /data/applogs/xxl-job/xxl-job-admin.log (No such file or directory)

Suppressed: java.io.FileNotFoundException: /data/applogs/xxl-job/xxl-job-admin.log (No such file or directory)
		at java.base/java.io.FileOutputStream.open0(Native Method)
处理

意思是 XXL-Job Admin 启动时,尝试写日志文件 /data/applogs/xxl-job/xxl-job-admin.log,但是找不到这个路径。Spring Boot + Logback 会在启动时创建日志文件,如果目录不存在,就会报这个错误。

复制代码
1、在对应位置创建文件夹
sudo mkdir -p /data/applogs/xxl-job
2、给文件夹赋予权限
sudo chown -R $(whoami):$(whoami) /data/applogs/xxl-job
3、重启jar包
nohup java -jar xxl-job-admin-3.4.0-SNAPSHOT.jar > xxl-job-admin.out 2>&1 &
4、再次查看日志
tail -n 50 xxl-job-admin.out

可以看到日志没有问题

日志的位置

部署成功

复制代码
http://192.168.209.129:23333/xxl-job-admin/#/xxl-job-admin/dashboard
相关推荐
Loo国昌1 天前
【AI应用开发实战】Guardrail风险控制中间件:Agent系统的安全防线
人工智能·python·安全·自然语言处理·中间件·prompt
键盘鼓手苏苏2 天前
Flutter for OpenHarmony: Flutter 三方库 ntp 精准同步鸿蒙设备系统时间(分布式协同授时利器)
android·分布式·算法·flutter·华为·中间件·harmonyos
Coder_Boy_2 天前
Java后端核心技术体系全解析(个人总结)
java·开发语言·spring boot·分布式·spring cloud·中间件
CN-David2 天前
CentOS搭建Mycat中间件
linux·mysql·中间件·centos·mariadb
三水不滴3 天前
消息队列消费性能优化:批量消费 + 手动 ACK 提升吞吐量
经验分享·笔记·中间件·性能优化
nix.gnehc3 天前
Go进阶攻坚+专家深耕级学习清单|聚焦高并发、高性能中间件/底层框架开发(Java开发者专属)
学习·中间件·golang
金刚猿4 天前
05_虚拟机中间件部署_ubuntu 系统 安装 Redis 7.0.15
redis·ubuntu·中间件
GEM的左耳返4 天前
Java面试深度剖析:从JVM到云原生的技术演进
jvm·spring boot·云原生·中间件·java面试·分布式架构·ai技术
cuber膜拜7 天前
LangChain v1.0 Middleware(中间件)使用指南
python·中间件·langchain·langgraph