linux离线安装jenkins及使用教程

news/2024/5/14 18:22:25

本教程采用jenkins.war的方式离线安装部署,在线下载的方式会遇到诸多问题,不宜采用

一、下载地址

地址:Jenkins download and deployment

下载最新的长期支持版

由于jenkins使用java开发的,所以需要安装的linux服务器装有jdk环境,并且jdk版本支持你所安装的jenkins版本

点击 Hardware and Software requirements,查看下载前的软硬件要求

点击 Java Requirements

根据所下载的长期支持的jenkin版本区间 ,判定支持的jdk版本

因为笔者下载的的是 2.440.2 版本,结合上图判定2.440.2在2.426.1之后,需要的linux服务器安装jdk版本为jdk 11、jdk 17或者jdk 21,三者任意一个都可以,所以最终我选择了jdk 21安装到linux服务器中

当然可能你所在的linux服务器已经安装了jdk 8 或者jdk 11,并且由于其他应用的原因不能再升级jdk,那只需要找到对应jdk支持的jenkins版本进行下载即可

从上图看出,如果linux服务器安装的 jdk 8 ,下载 2.346.1、2.164.1任意一个都可以

如果安装的是 jdk 17,下载2.346.1、2.361.1、2.426.1任意一个

安装的是jdk 11 则以上四个长期版本都支持。

对于历史版本的下载,点击 Past Releases 链接

找到对应的版本下载即可 

 二、上传jenkins.war包

笔者是安装在 /opt下,创建 jenkins文件夹,使用最高权限root用户登录linux服务器

cd /opt

sudo mkdir jenkins
ll

依次输入以上三条命令 

 

进入新创建的jenkins文件夹 

cd  jenkins 

笔者使用的是FinalShell工具上传jenkin.war,一款国产免费的linux服务器 连接工具,功能强大,不过有安全性问题不推荐生产环境使用,推荐使用Xshell和Xftp组合工具

进入jenkins文件夹后可以看到上传的jenkins.war包

三、启动jenkins

先约定jenkins的启动端口为9007,实际自行更改,保证端口不冲突即可 

查看防火墙状态

systemctl status firewalld

防火墙开启状态,则开通 9007 端口 访问权限,并重载防火墙

-- 开通 9007 端口 访问权限

sudo firewall-cmd --permanent --add-port=9007/tcp

-- 重载防火墙

sudo firewall-cmd --reload

cd /opt/jenkins 键入以下命令启动

nohup java -jar jenkins.war --httpPort=9007 | tee jenkins.log 2>&1 & 

命令解释如下:

1. nohup: 这是一个Unix/Linux命令,用于让程序在后台运行,即使用户注销也不会停止运行(No Hang Up)。使用 nohup 可以确保即使SSH会话关闭,Jenkins服务仍然持续运行


2. java -jar jenkins.war --httpPort=9007: 这是启动Jenkins服务的命令,其中 -jar 参数表示要执行包含在WAR文件中的主类(在这种情况下是Jenkins应用),--httpPort=9007 是指明Jenkins服务器监听的HTTP端口号为9007


3. | tee jenkins.log: | 是管道操作符,它将前一个命令的标准输出(stdout)传递给后续命令。tee 命令则接收这些输出,并同时完成两个任务:
将输出内容“复制”一份写入到 jenkins.log 文件中,相当于实时记录了Jenkins启动过程和运行时的日志信息。
继续将接收到的数据传递到下一个管道或者默认的标准输出(此处由于后面没有其他命令,就是当前终端),所以在终端上也能看到相同的日志输出

4. 2>&1: 这个符号组合将标准错误流(stderr)重定向到标准输出流(stdout)。这意味着不论是正常的程序输出还是错误信息,都将统一作为标准输出处理,所以不论是正常日志还是错误日志,都会经过管道并被tee命令捕捉

5. &: 最后的&符号用于将整个命令放入后台运行,使得命令执行后,控制台立刻返回到可输入状态,而无需等待该命令执行完毕

出现以上信息说明 jenkins启动成功 ,即使终端关闭也可以

初始用户名和密码 为 admin    103ed60c535f4c8daec0d81d66b9ea9d

初始admin用户密码如果忘记,则去  /root/.jenkins/secrets/initialAdminPassword 中寻找

使用  tail -f  /root/.jenkins/secrets/initialAdminPassword  打开可以看到存储的初始jenkins密码

 四、设置开机自启动

通过命令 nohup java -jar jenkins.war --httpPort=9007 | tee jenkins.log 2>&1 &  可以后台永久启动jenkins服务,但服务器一旦关闭重启,还是需要进入jenkins.war所在文件夹目录重新执行启动命令

4.1 创建并编辑jenkins.sh 脚本

首先  cd /opt/jenkins,创建jenkins.sh 脚本文件,随便放哪里都可以,但一般和jenkins.war处在同一个文件目录下

 vim  jenkins.sh  

按 i 键 输入以下内容 ,红色部分为需要根据自己对应环境路径自行修改

#!/bin/bash
#主要目的用于开机启动服务,不然 启动jenkins.war包没有java -jar的>权限
JAVA_HOME=/usr/local/jdk/jdk-21.0.2pid=`ps -ef | grep jenkins.war | grep -v 'grep'| awk '{print $2}'| wc -l`if [ "$1" = "start" ];thenif [ $pid -gt 0 ];thenecho 'jenkins is running...'
else#java启动服务 配置java安装根路径,和启动war包存的根路径nohup $JAVA_HOME/bin/java -jar /opt/jenkins/jenkins.war>jenkins.log --httpPort=9007  2>&1 &fielif [ "$1" = "stop" ];thenexec ps -ef | grep jenkins | grep -v grep | awk '{print $2}'| xargs kill -9echo 'jenkins is stop..'
elseecho "Please input like this:"./jenkins.sh start" or "./jenkins stop""fi

按下 esc键,输入 :wq 保存退出,键入以下命令赋予脚本可执行权限

chmod +x /opt/jenkins/jenkins.sh

4.2 检测jenkins.sh 脚本

在当前jenkins目录下输入

./jenkins.sh stop 

浏览器刷新访问jenkins地址,无法访问

再输入启动命令启动

 ./jenkins.sh start

浏览器再次刷新发现启动成功 

以上说明编写的 jenkins.sh 脚本文件没有问题 

4.3 创建并编辑 jenkins.service 系统服务文件

键入命令

vim /lib/systemd/system/jenkins.service

按 i 键 输入以下命令

[Unit]
Description=Jenkins
After=network.target[Service]
Type=forking
ExecStart=/opt/jenkins/jenkins.sh start
ExecReload=
ExecStop=/opt/jenkins/jenkins.sh stop
PrivateTmp=true[Install]
WantedBy=multi-user.target

创建好服务后,执行命令刷新配置 

systemctl daemon-reload

启动脚本

systemctl start jenkins.service

查看状态

systemctl status jenkins.service 

设置开机自启动

systemctl enable jenkins.service 

查看开机自启动的服务列表

systemctl list-units --type=service

看到已存在jenkins.service服务 

输入 reboot重启验证,访问jenkins地址看下


http://www.mrgr.cn/p/76862730

相关文章

WordPress Git主题 响应式CMS主题模板

分享的是新版本,旧版本少了很多功能,尤其在新版支持自动更新后,该主题可以用来搭建个人博客,素材下载网站,图片站等 主题特点 兼容 IE9、谷歌 Chrome 、火狐 Firefox 等主流浏览器 扁平化的设计加响应式布局&#x…

冲刺 NOIP 400pts + 之神仙专题

冲刺专题之 \(DP\) \(T_A\) Helping People $$codeforces$$ 题意给定一个长为 \(n\) 序列 \(A\) , 其中有 \(q\) 个区间 \([l , r]\) 定义为 \(B_i\) , 对于每一个区间 , 其有 \(P_i\) 的概率使 \(A\) 序列从 \(l\) 到 \(r\) 之间的数增加 \(1\) . 问最后整个区间的最大值的期望…

Vue 04 Vue 中的 Ajax、slot 插槽

Vue学习 Vue 0401 Vue中的Ajax服务器准备axios使用跨域问题解决Vue-CLI 配置代理1Vue-CLI 配置代理2案例: 用户搜索vue-resource 02 slot插槽默认插槽具名插槽作用域插槽slot总结 Vue 04 B站 Vue全家桶(BV1Zy4y1K7SH) 学习笔记 Vue 中的 ajax 01 Vue中的…

基于svelte webpack开发umd格式的npm包

原文链接: https://www.cnblogs.com/yalong/p/18101609 背景: 平常会接触到vue、react、jquery项目,项目中有一些公共组件其实是可以复用的,但是在vue项目中封装好的组件,在react中又不能用; 于是想找个方法,实现一次开发,多框架复用,调研发现svelte正好符合这个要求, …

浅谈WPF之属性系统

在WPF开发中,经常听到各种属性,如:依赖属性,附加属性,CLR属性,那这些不同类型的属性,具体又有什么作用呢?今天以一些简单的小例子,简述一下WPF开发中,各种属性的相关概念和应用,仅供学习分享使用,如有不足之处,还请指正。在WPF开发中,经常听到各种属性,如:依赖…

盘点一个Python字符串格式化处理的问题(AI+Python)

大家好,我是Python进阶者。 一、前言 前几天在Python白银交流群【空翼】问了一个字符串格式化处理的问题,问题如下:二、实现过程 这里【东哥】给了一个指导,如下所示: {word:<10}:这是一个格式化字段,word是变量名,<10是格式化选项。这里<表示左对齐,10表示字…

c(RGDfK)-Biotin,生物素Biotin标记细胞穿膜环肽c(RGDfk)

c(RGDfK)-Biotin&#xff0c;生物素Biotin标记细胞穿膜环肽c&#xff08;RGDfk&#xff09; 中文名称 &#xff1a;生物素Biotin标记c&#xff08;RGDfk&#xff09;环肽 英 文 名 &#xff1a;c(RGDfK)-Biotin 品 牌 &#xff1a;Tanshtech 单字母&#xff1…

24. UE5 RPG制作属性面板(二)

在上一篇中&#xff0c;我们创建属性面板的大部分样式&#xff0c;这一篇里面接着制作。 在这一篇里我们需要有以下几个方面&#xff1a; 在界面增加一个属性按钮。属性按钮增加事件&#xff0c;点击时可以打开属性面板&#xff0c;属性面板打开时无法再次点击按钮。点击属性面…

iOS —— 初识KVO

iOS —— 初始KVO KVO的基础1. KVO概念2. KVO使用步骤注册KVO监听实现KVO监听销毁KVO监听 3. KVO基本用法4. KVO传值禁止KVO的方法 注意事项&#xff1a; KVO的基础 1. KVO概念 KVO是一种开发模式&#xff0c;它的全称是Key-Value Observing (观察者模式) 是苹果Fundation框架…

2-21. 实现背包检查和添加物品

修改 InventoryManager 检查背包是否有空位通过物品 ID 找到背包已有物品位置在指定背包序号位置添加物品添加物品到 Player 背包里项目相关代码 代码仓库:https://gitee.com/nbda1121440/DreamOfTheKingdom.git 标签:20240329_0720

【论文阅读】UniLog: Automatic Logging via LLM and In-Context Learning

注 由于其公司的保密政策&#xff0c;本文没有公开源代码&#xff0c;数据是公开的。 文章目录 摘要一、介绍二、背景和动机2.1、日志语句生成2.2、大语言模型2.3、上下文学习&#xff08;In-Context Learning&#xff0c;ICL) 三、UNILOG3.1、模型骨干3.2、提示策略3.2.1、提…

【快速解决】解决谷歌自动更新的问题,禁止谷歌自动更新,如何防止chrome自动升级 chrome浏览器禁止自动升级设置方法

目录 问题描述 解决方法 1、搜索栏搜索控制面板 2、搜索&#xff1a;服务 ​编辑 3、点击Windows工具 4、点击服务 ​5、禁止谷歌更新 问题描述 由于我现在需要装一个谷歌的驱动系统&#xff0c;但是目前的谷歌驱动系统的版本都太旧了&#xff0c;谷歌自身的版本又太新了…

[转帖]FIO测试存储性能iodepth队列深度对iops的影响

FIO是用来测试磁盘IO性能比较常用的工具,它的强大之处在于提供了一套测试框架,能够支持多线程多进程的IO测试,用户只需进行参数的配置,便能够方便地定制不同的IO行为(顺序读写,随机读写等),并对其性能进行监测。此次我们来测试金山私有云KingStack某套环境下SSD磁盘的4KB…

Unity | 工具类-UV滚动

一、内置渲染管线Shader Shader"Custom/ImageRoll" {Properties {_MainTex ("Main Tex", 2D) "white" {}_Width ("Width", float) 0.5_Distance ("Distance", float) 0}SubShader {Tags {"Queue""Trans…

docker 部署 gitlab-ce 16.9.1

文章目录 [toc]拉取 gitlab-ce 镜像创建 gitlab-ce 持久化目录启停脚本配置配置 gitlab-ce编辑 gitlab-ce 配置文件重启 gitlab-ce配置 root 密码 设置中文 gitlab/gitlab-ce(需要科学上网) 拉取 gitlab-ce 镜像 docker pull gitlab/gitlab-ce:16.9.1-ce.0查看镜像是不是有 Vo…

uniapp 微信小程序 canvas 手写板获取书写内容区域并输出

uni.canvasGetImageData 返回一个数组&#xff0c;用来描述 canvas 区域隐含的像素数据&#xff0c;在自定义组件下&#xff0c;第二个参数传入自定义组件实例 this&#xff0c;以操作组件内 组件。 // 获取目标 canvas 的像素信息 pixelData let canvas uni.createSelector…

RabbitMQ 实验消费原始队列消息, 拒绝(reject)投递死信交换机过程

如果你想通过 RabbitMQ 的死信队列功能实现消费者拒绝消息投递到死信交换机的行为&#xff0c;你可以按照以下步骤操作&#xff1a; 创建原始队列&#xff0c;并将其绑定到一个交换机上&#xff1a; export RABBITMQ_SERVER127.0.0.1 export RABBITMQ_PORT5672 export RAB…

ubuntu使用-ubuntu23.10中创建arm架构的银河麒麟操作系统v10

ubuntu使用-ubuntu23.10中创建arm架构的银河麒麟操作系统v10ubuntuqemu银河麒麟arm安装qemu之后,从应用中或者使用virt-manager命令打开虚拟系统管理器。 创建虚拟机,架构选择aarch64,机器类型不知道选什么,暂选的是virt,后面有问题的话再说。参考国产银河麒麟操作系统下…

Radio Silence for mac 好用的防火墙软件

Radio Silence for Mac是一款功能强大的网络防火墙软件&#xff0c;专为Mac用户设计&#xff0c;旨在保护用户的隐私和网络安全。它具备实时网络监视和控制功能&#xff0c;可以精确显示每个网络连接的状态&#xff0c;让用户轻松掌握网络活动情况。 软件下载&#xff1a;Radio…

VSCode 如何同步显示网页在手机或者平板上

首先要确保 ①电脑上安装了VsCode ②VsCode安装插件LiveServer 安装成功之后 连续按住 Alt L 、Alt O 会跳转到对应的html页面上 http://127.0.0.1:5500/....... 是这个开头的 然后打开网络 如果桌面有网上邻居的可以直接点桌面的网上邻居 进来找到WLAN这个…