linux 环境运行 jenkins.war包,有可能会出现字体问题,jdk版本:11 jenkins 版本:2.420

jenkins的目录:

/usr/jenkins

启动命令

 java -Djava.awt.headless=true sudo timedatectl set-timezone Asia/Shanghai
-Xmx1024m -jar jenkins.war --httpPort=8090

任意目录启动:

nohup java -Djava.awt.headless=true -Xms1024m -Xmx1024m -jar /usr/jenkins/jenkins.war --httpPort=8090 >/usr/jenkins/log_jenkins.log 2>&1 &

服务器设置北京时间

sudo timedatectl set-timezone Asia/Shanghai

测试时间是否正确

date

jdk下载地址:

【免费】linux环境-jdk11-jdk-11.0.8-linux-x64-bin.tar资源-CSDN文库

jenkins的下载地址:

【免费】linux环境-jenkins2.420.war资源-CSDN文库

产生的秘钥

a2a528c111204ba0b7eb643672540c8c

安装字体 

sudo yum install fontconfig
sudo yum install xorg-x11-fonts-type1
 

可以尝试安装一些基本的字体库,以确保系统有可用的字体。可以使用以下命令来安装常见的字体包:

sudo yum install fontconfig fontconfig-devel

在某些情况下,字体配置文件可能缺失或损坏。可以尝试生成新的字体缓存。运行以下命令:
fc-cache -f -v

启动命令

java -Djava.awt.headless=true -Xmx1024m -jar jenkins.war --httpPort=8090

访问地址:

http://192.168.116.156:8090/

安装插件

安装部署项目

配置maven

配置git

配置git 的账号(注意 注意 注意,保存后刷新就出来下面的界面了)

配置git的账号

配置jdk

配置远程服务器

开始构建项目

配置历史清理的规则

 配置git地址

Pre Steps 打包之前删除上次的部署的代码,

Build 是  构建包文件名/pom.xml

配置 Post Steps   这里配置 远程服务器的名字,

配置 服务器二

运行脚本

#!/bin/bash# 定义远程服务器信息
REMOTE_USER="root"
REMOTE_PASSWORD="vagrant"
REMOTE_HOST="192.168.116.155"# 定义远程服务器上的变量
REMOTE_JAR_PATH="/home/java/app/ruo-admin.jar"
REMOTE_JAR_SOURCE="$WORKSPACE/ruoyi-web/ruoyi-admin/target/ruoyi-admin.jar"
REMOTE_LOG_FILE="/home/java/app/logs/ruo-admin.log"
REMOTE_PID_FILE="/home/java/app/pid/ruo-admin.pid"
REMOTE_DUMP_FILE="/home/java/app/dump/ruo-admin"# 通过 sshpass 执行远程命令来删除旧的 JAR 文件
sshpass -p "$REMOTE_PASSWORD" ssh "$REMOTE_USER@$REMOTE_HOST" "bash -c '
if [ -f \"$REMOTE_JAR_PATH\" ]; thenecho \"Removing old JAR file...\"rm -f \"$REMOTE_JAR_PATH\" || { echo \"Failed to remove old JAR file\"; exit 1; }
elseecho \"No old JAR file found, skipping removal.\"
fi
'"# 通过 scp 将新的 JAR 文件拷贝到远程服务器
echo "Copying new JAR file..."
sshpass -p "$REMOTE_PASSWORD" scp "$REMOTE_JAR_SOURCE" "$REMOTE_USER@$REMOTE_HOST:$REMOTE_JAR_PATH" || { echo "Failed to copy new JAR file"; exit 1; }# 在远程服务器上执行剩下的命令,启动新的进程
sshpass -p "$REMOTE_PASSWORD" ssh "$REMOTE_USER@$REMOTE_HOST" "bash -c '
cd /home/java/app/ || { echo \"Failed to change directory\"; exit 1; }# 阻止 Jenkins 杀死项目进程
export BUILD_ID=dontKillMe# 停止旧进程(如果有 PID 文件)
if [ -f \"$REMOTE_PID_FILE\" ]; thenOLD_PID=\$(cat \"$REMOTE_PID_FILE\")if ps -p \"\$OLD_PID\" > /dev/null; thenecho \"Stopping old process with PID \$OLD_PID...\"kill \"\$OLD_PID\" || { echo \"Failed to stop old process\"; exit 1; }rm \"$REMOTE_PID_FILE\" || { echo \"Failed to remove PID file\"; exit 1; }elseecho \"Old process with PID \$OLD_PID not found.\"fi
elseecho \"No PID file found, skipping old process stop.\"
fi# 启动新进程
echo \"Starting new process...\"
nohup /usr/java/jdk-11.0.8/bin/java -Dfile.encoding=UTF-8 -Xms256m -Xmx512m -XX:MetaspaceSize=128M -XX:MaxMetaspaceSize=256M -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=\"$REMOTE_DUMP_FILE\" -jar ruo-admin.jar >\"$REMOTE_LOG_FILE\" 2>&1 &
NEW_PID=\$!
echo \"\$NEW_PID\" > \"$REMOTE_PID_FILE\"echo \"New process started with PID \$NEW_PID.\"
'"

运行失败

使用 sshpass -p 需要 在目标服务器 安装 sshpass

sudo yum install sshpass

安装完成后,可以通过以下命令确认 sshpass 是否成功安装:

sshpass -V

如果 sshpass 安装失败 

如果 epel-release 包未找到,你可以手动安装 EPEL 仓库。以下是步骤:

# 下载 EPEL RPM 文件
sudo yum install -y https://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/e/epel-release-7-11.noarch.rpm

 安装后再次尝试:

sudo yum install -y sshpass

更改软件源

如果以上步骤仍然无效,可以尝试更换你的 yum 源为阿里云、清华大学等国内镜像。

使用阿里云的 YUM 源

运行以下命令,备份现有的 yum repo 文件并使用阿里云源:

# 备份现有 repo 文件
sudo cp /etc/yum.repos.d/CentOS-* /etc/yum.repos.d/bak/# 使用阿里云的 CentOS 7 源
sudo bash -c 'cat > /etc/yum.repos.d/CentOS-Base.repo << EOF
[base]
name=CentOS-$releasever - Base
baseurl=http://mirrors.aliyun.com/centos/7/os/x86_64/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS7
enabled=1[updates]
name=CentOS-$releasever - Updates
baseurl=http://mirrors.aliyun.com/centos/7/updates/x86_64/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS7
enabled=1[epel]
name=EPEL for CentOS
baseurl=http://mirrors.aliyun.com/epel/7/x86_64/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/epel/RPM-GPG-KEY-EPEL-7
enabled=1
EOF'

尝试安装 sshpass

在更新了 repo 后,再次清理缓存并安装 sshpass

sudo yum clean all
sudo yum makecache
sudo yum install -y sshpass

 安装成功

继续运行  又出现新的 错误

问题出在 SSH 连接时的主机密钥验证失败。这通常是因为目标主机的 SSH 密钥未被验证或记录。要解决这个问题,请按照以下步骤进行操作:

在 Jenkins 服务器上,运行以下命令

#  ssh user@远程服务器ipssh user@192.168.116.155

 运行后弹出如下信息  输入 yes

[root@localhost ~]# ssh user@192.168.116.155
The authenticity of host '192.168.116.155 (192.168.116.155)' can't be established.
ECDSA key fingerprint is SHA256:ESG6zOwTENvgNUzbTHyYjBJG5DbftIbWpT4fxtQw9NY.
ECDSA key fingerprint is MD5:fc:98:53:d1:46:55:57:db:50:8a:a2:aa:11:7b:2d:85.
Are you sure you want to continue connecting (yes/no)?

然后 输入目标服务器的密码

最后表示成功

jenkins 重新部署

提示新问题  是 目标路径不存在

没有app目录

新建 app 目录

再次 重新部署 

提示部署成功,但是 目标服务器没启动,但是jar包已经传输过去了

 错误 原因是 脚本里面 的 pid 目录没找到  ,目标服务器 新建 pid 、logs、dump 等 目录

部署成功

远程服务器 启动成功

调用接口 又报错   192.168.116.155:9090/captchaImage

原来是linux 没对应的字体,需要安装字体

安装字体

sudo yum install -y fontconfig
sudo yum install -y liberation-fonts

然后重新部署 删除远程服务器的jar包

启动成功

测试接口  成功

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

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

相关文章

Spark高级用法-数据源的读取与写入

目录 数据读取 数据写入 总结 数据读取 读文件 read.json read.csv csv文件有两个部分构成 头部数据&#xff0c;也就是字段数据&#xff0c;行数数据 read.orc 读数据库 read.jdbc(jdbc连接地址,table表名,properties{user用户名,password密码,driver驱动信息}) 缺少连…

西门子变频器SINAMICS V20选型

SINAMICS V20共有五种外形尺寸可供选择&#xff0c;输出功率覆盖0.12kW-30kW&#xff1a; V20订货号 单相230V&#xff1a; 三相380V&#xff1a;

Power BI:链接数据库与动态数据展示案例

一、案例背景 在数据驱动的时代&#xff0c;如何高效、直观地展示和分析数据成为了企业决策和个人洞察的关键。Power BI作为一款强大的商业智能工具&#xff0c;凭借其强大的数据连接能力、丰富的可视化选项以及交互性和动态性&#xff0c;成为了众多企业和个人的首选。本文将…

LabVIEW如何实现高精度定时器

在LabVIEW中实现高精度定时器通常需要考虑以下几个方面&#xff1a;定时器的精度要求、操作系统的调度机制、硬件资源&#xff08;如计时器、触发器&#xff09;等。以下是几种常见的实现方式&#xff1a; ​ 1. 使用 Wait(ms) 或 Wait Until Next ms Multiple VI 这两个函数…

微服务与SpringCloud的概述

微服务概述 微服务的提出&#xff1a;马丁福勒论文 微服务是一种架构模式或者是一种架构风格&#xff0c;它提倡将单一应用程序划分位一组小的服务&#xff0c;每个服务运行在其独立的自己的进程中&#xff0c;服务之间互相协调&#xff0c;互相配合&#xff0c;为用户提供最终…

使用Riotee轻松实现无电池TinyML

论文标题&#xff1a;Demo: Battery-free TinyML Made Easy with Riotee 中文标题&#xff1a;演示&#xff1a;使用Riotee轻松实现无电池TinyML 作者信息&#xff1a; Kai Geissdoerfer&#xff0c;Nessie Circuits&#xff0c;邮箱&#xff1a;kai.geissdoerfernessie-circ…

stm32 rtx操作系统 堆(heap) 栈(stack) keil在线监测

STM32内存分为3块区域&#xff1a;全局/静态变量区、栈区、堆区 其中全局/静态变量区用于存放全局/静态变量&#xff08;包括指针变量&#xff09;&#xff0c; 栈区用于存放当前运行的函数及其中定义的局部变量和程序指针等&#xff0c; 堆区用于存放动态申请的内存&#xff0…

AI在医学领域:使用生成式深度学习和信号处理技术增强心脏听诊信号

心血管疾病&#xff08;CVD&#xff09;是全球死亡的主要原因&#xff0c;占2019年所有全球死亡的30%以上。为了有效地治疗CVD&#xff0c;准确诊断和评估心脏状况至关重要。心脏听诊&#xff08;CA&#xff09;是一种非侵入性方法&#xff0c;通过听取心脏产生的声音来检测和监…

日语学习零基础生活日语口语柯桥外语学校|股票用日语怎么说?

在日语中&#xff0c;“股票”可以说&#xff1a; • 株&#xff08;かぶ&#xff09; 这是最常用的表达方式&#xff0c;直接表示“股票”。 例如&#xff1a; 株を買う - 买股票 株を売る - 卖股票 • 株式&#xff08;かぶしき&#xff09; 这个词也是“股票”的意…

【C语言刷力扣】1832.判断句子是否为全字母句

题目&#xff1a; 法一 bool checkIfPangram(char* sentence) {int str[256];memset(str, 0, sizeof(int));for (int i 0; i < strlen(sentence); i) {str[ sentence[i] ];}for (int j a; j < z; j) {if (!str[j]) return false;}return true; } 法二 动态分配 typ…

微课录制 “绊脚石”,电脑录屏时PPT 与画板冲突及解决全析

在教育数字化转型的浪潮中&#xff0c;微课录制成为教师传授知识的新方式。最近&#xff0c;一位用户在评论区提出了一个常见问题&#xff1a;在使用画板功能辅助标注时&#xff0c;PPT无法正常切换&#xff0c;影响了微课的流畅性。这是一个典型的技术冲突问题&#xff0c;关系…

安防综合管理系统EasyCVR视频汇聚平台Linux环境下如何测试UDP端口是否正常开启?

视频汇聚EasyCVR安防监控视频系统采用先进的网络传输技术&#xff0c;支持高清视频的接入和传输&#xff0c;能够满足大规模、高并发的远程监控需求。平台灵活性强&#xff0c;支持国标GB/T 28181协议、部标JT808、GA/T 1400协议、RTMP、RTSP/Onvif协议、海康Ehome、海康SDK、大…

kernel32.dll下载地址:如何安全地恢复系统文件

关于从网络上寻找kernel32.dll的下载地址&#xff0c;这通常不是一个安全的做法&#xff0c;而且可能涉及到多种风险。kernel32.dll是Windows操作系统的核心组件之一&#xff0c;负责内存管理、进程和线程管理以及其他关键系统功能。因为kernel32.dll是系统的基础文件&#xff…

国家海洋环境预报中心李本霞:全国首个海浪智能预报系统已投入业务化运行,AI助力海浪预报多项突破

近日&#xff0c;在第 20 届 CCF HPC China 2024 大会中&#xff0c;第六届海洋数值预报与高性能计算论坛圆满举办。在本次大会上&#xff0c;国家海洋环境预报中心海浪预报室主任李本霞以「人工智能在海浪预报中的应用」为主题展开演讲&#xff0c; HyperAI超神经在不违原意的…

Leetcode—1188. 设计有限阻塞队列【中等】(多线程)

2024每日刷题&#xff08;183&#xff09; Leetcode—1188. 设计有限阻塞队列 C实现代码 class BoundedBlockingQueue { public:BoundedBlockingQueue(int capacity) {sem_init(&enSem, 0, capacity);sem_init(&deSem, 0, 0);}~BoundedBlockingQueue() {sem_destroy(…

2024年10月15日读书笔记

前面已经提到了我们要使用自上而下的方法去构建金字塔结构 下面让我们用一个例子试试&#xff1a; 下面举例说明应用以上方法时思维的发展过程。 表3-1是美国某大型饮料公司财务部主管写的一份备忘录&#xff0c;我们将试着用以上方法改写该备忘录。 表3-1 答非所问的例子 收…

解读华为云Kuasar多沙箱容器技术,带来更强隔离性和安全性

摘要&#xff1a;沙箱技术的引入&#xff0c;为容器提供了更强的隔离性和安全性&#xff0c;成为云原生技术的重要组成部分。 本文来源 《华为云DTSE》第五期开源专刊&#xff0c;作者&#xff1a;华为云云原生开源团队研发工程师。 近年来&#xff0c;云原生容器技术飞速发展&…

软件供应链十年:探索开源的增长、风险和未来

回顾软件供应链状况报告的 10 年既是一个里程碑&#xff0c;也是一次行动号召。在过去十年中&#xff0c;开源消费改变了软件开发的世界。我们看到了前所未有的创新&#xff0c;但也出现了新的挑战&#xff0c;特别是在管理软件供应链的安全性和完整性方面。 在 Sonatype&…

【AcWing】算法基础课-数据结构

目录 1、单链表 2、双链表 3、栈 3.1 模拟栈 3.2 表达式求值 4、队列 5、单调栈 6、滑动窗口 7、KMP字符串 8、Trie字符串统计 方法一 方法二 9、并查集 9.1 合并集合 9.2 连通块中点的数量 10、堆 10.1 堆排序 10.2 模拟堆 11、哈希表 11.1 模拟散列表 拉…

内核提供的通用I2C设备驱动I2C-dev.c分析:file_ops篇

往期内容 I2C子系统专栏&#xff1a; I2C&#xff08;IIC&#xff09;协议讲解-CSDN博客SMBus 协议详解-CSDN博客I2C相关结构体讲解:i2c_adapter、i2c_algorithm、i2c_msg-CSDN博客内核提供的通用I2C设备驱动I2c-dev.c分析&#xff1a;注册篇 总线和设备树专栏&#xff1a; 总线…