当前位置: 首页 > news >正文

Jenkins 平台搭建 | 为 Jenkins 配置 nginx 反向代理

以 Centos7 系统为例,详细记录一下 Jenkins 搭建流程。

参考官网:https://www.jenkins.io/doc/book/installing/linux/#red-hat-centos


Install Jenkins

从 redhat-stable yum 存储库中安装 LTS(长期支持) 版本,该版本较为稳定。

sudo wget -O /etc/yum.repos.d/jenkins.repo \https://pkg.jenkins.io/redhat-stable/jenkins.repo
sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
sudo yum upgrade
# Add required dependencies for the jenkins package
sudo yum install java-11-openjdk
# Verify 
java -version
sudo yum install jenkins
sudo systemctl daemon-reload

Start Jenkins

systemctl enable jenkins
systemctl start jenkins
systemctl status jenkins

Configuring the Jenkins platform

Unlocking Jenkins

当首次访问新的 Jenkins 实例时,系统会要求您使用自动生成的密码解锁它。

浏览到 http://localhost:8080(或在安装 Jenkins 时为它配置的任何端口)并等待解锁 Jenkins 页面出现。

在安装 Jenkins 的机器中查看  /var/lib/jenkins/secrets/initialAdminPassword 目录文件下的内容填入改框即可。  

Customizing Jenkins with plugins

在这里插入图片描述

解锁 Jenkins 后,会出现 Customize Jenkins 页面。作为初始设置的一部分,可以在此处安装任意数量的有用插件。

如果不确定需要什么插件,请选择安装建议的插件。您可以稍后通过 Jenkins 中的 Manage Jenkins > Plugins 页面安装(或删除)其他 Jenkins 插件。

Creating the first administrator user

 使用 admin 账号继续即可,也可以输入想创建的用户详细信息以创建新的管理员用户。

实例配置保存并完成即可。

以上,Jenkins 就安装成功可以正常使用了。

TroubeShooting

安装完成 Jenkins 后,通过 systemctl start Jenkins 启动,报错:

Job for jenkins.service failed because the control process exited with error code. See 
"systemctl status jenkins.service" and "journalctl -xe" for details.

如果直接通过 systemctl status jenkins 查看报错,报错会很模糊,找不到具体原因

[root@master init.d]# systemctl status jenkins
● jenkins.service - Jenkins Continuous Integration ServerLoaded: loaded (/usr/lib/systemd/system/jenkins.service; disabled; vendor preset: disabled)Active: failed (Result: start-limit) since Tue 2023-03-21 09:56:52 CST; 35s agoProcess: 11715 ExecStart=/usr/bin/jenkins (code=exited, status=1/FAILURE)Main PID: 11715 (code=exited, status=1/FAILURE)Mar 21 09:56:52 master.cn systemd[1]: jenkins.service: main process exited, code=exited, status=1/FAILURE
Mar 21 09:56:52 master.cn systemd[1]: Failed to start Jenkins Continuous Integration Server.
Mar 21 09:56:52 master.cn systemd[1]: Unit jenkins.service entered failed state.
Mar 21 09:56:52 master.cn systemd[1]: jenkins.service failed.
Mar 21 09:56:52 master.cn systemd[1]: jenkins.service holdoff time over, scheduling restart.
Mar 21 09:56:52 master.cn systemd[1]: Stopped Jenkins Continuous Integration Server.
Mar 21 09:56:52 master.cn systemd[1]: start request repeated too quickly for jenkins.service
Mar 21 09:56:52 master.cn systemd[1]: Failed to start Jenkins Continuous Integration Server.
Mar 21 09:56:52 master.cn systemd[1]: Unit jenkins.service entered failed state.
Mar 21 09:56:52 master.cn systemd[1]: jenkins.service failed.

我们换一种启动方式查看报错,进入 /etc/init.d,通过 ./jenkins start 启动

[root@master init.d]# cd /etc/init.d[root@master init.d]# ./jenkins restart
Starting Jenkins Running with Java 19 from /usr/lib/jvm/jdk-19-oracle-x64, which is not yet fully supported.
Run the command again with the --enable-future-java flag to enable preview support for future Java versions.
Supported Java versions are: [11, 17]

从这里能看出来,是我们安装的版本不对,支持的Java版本只有:[11,17],所以我们需要通过 rpm -e --nodeps 强制卸载已安装的版本,安装另外的版本。

[root@master init.d]# rpm -qa|grep jdk
java-1.8.0-openjdk-1.8.0.362.b08-1.el7_9.x86_64
copy-jdk-configs-3.3-11.el7_9.noarch
jdk-19-19.0.2-7.x86_64[root@master init.d]# rpm -e --nodeps java-1.8.0-openjdk-1.8.0.362.b08-1.el7_9.x86_64
[root@master init.d]# rpm -e --nodeps jdk-19-19.0.2-7.x86_64

 在官网找到合适版本的链接:Java Downloads | Oracle 中国

[root@master ~]# wget https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.rpm
--2023-03-21 09:44:24--  https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.rpm
Resolving download.oracle.com (download.oracle.com)... 23.192.208.88
Connecting to download.oracle.com (download.oracle.com)|23.192.208.88|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 181343596 (173M) [application/x-redhat-package-manager]
Saving to: ‘jdk-17_linux-x64_bin.rpm’100%[==========================================================================================>] 181,343,596 15.2MB/s   in 13s2023-03-21 09:44:37 (13.3 MB/s) - ‘jdk-17_linux-x64_bin.rpm’ saved [181343596/181343596][root@master ~]# rpm -ivh jdk-17_linux-x64_bin.rpm
warning: jdk-17_linux-x64_bin.rpm: Header V3 RSA/SHA256 Signature, key ID ec551f03: NOKEY
Preparing...                          ################################# [100%]
Updating / installing...1:jdk-17-2000:17.0.6-9             ################################# [100%][root@master ~]# java -version
java version "17.0.6" 2023-01-17 LTS
Java(TM) SE Runtime Environment (build 17.0.6+9-LTS-190)
Java HotSpot(TM) 64-Bit Server VM (build 17.0.6+9-LTS-190, mixed mode, sharing)

然后在 /etc/init.d 下重新启动 Jenkins 即可

[root@master ~]# cd /etc/init.d[root@master init.d]# ./jenkins start
Starting Jenkins Running from: /usr/share/java/jenkins.war[  OK  ]

为 Jenkins 配置 nginx 反向代理

参考:Reverse proxy - Nginx

nginx 配置:只需在监听 80 端口的 server 块中添加一个 location 块

location /jenkins {proxy_pass http://127.0.0.1:8080;access_log /var/log/nginx/jenkins-access.log;
}

根据以上内容正常安装好 Jenkins 后,我们直接访问 http:ip:8080 即可访问到 Jenkins 网站,即 Jenkins 的根目录直接是端口,没有统一的一个目录。

而配置该 nginx 后,会将 本机 ip/jenkins 的访问代理到 http://ip:8080/jenkins 上,但我们 Jenkins 网站默认首页直接就是端口,并没有/jenkins 这个 url,所以当我们直接访问 ip/jenkins 时就会返回 404。

所以 Jenkins 控制器和反向代理必须使用相同的上下文路径,需要修改 Jenkins 的 URL,即如果 Jenkins 控制器的 URL  为https://www.example.com/jenkins/,那么 --prefix=/jenkins 参数必须包含在 jenkins 控制器命令行参数中。

通过运行 systemctl edit jenkins 并添加以下内容来设置使用 Linux 包时的上下文路径:

systemctl edit jenkins [Service]
Environment="JENKINS_PREFIX=/jenkins"

然后重启 Jenkins 服务,可以通过 systemctl status jenkins 查看到我们新加的内容 

这时再通过 http://ip/jenkins 访问即可正常访问~

相关文章:

Jenkins 平台搭建 | 为 Jenkins 配置 nginx 反向代理

以 Centos7 系统为例,详细记录一下 Jenkins 搭建流程。 参考官网:https://www.jenkins.io/doc/book/installing/linux/#red-hat-centos Install Jenkins 从 redhat-stable yum 存储库中安装 LTS(长期支持) 版本,该版…...

【云原生】Docker 架构及工作原理

一、Docker 概述二、Client 客户端三、Docker 引擎四、Image 镜像五、Container 容器六、镜像分层可写的容器层七、Volume 数据卷八、Registry 注册中心九、总结一、Docker 概述 Docker 是一个开发、发布和运行应用程序的开放平台。Docker使您能够将应用程序与基础架构分离&am…...

【Java 】Java NIO 底层原理

文章目录1、 Java IO读写原理1.1 内核缓冲与进程缓冲区1.2 java IO读写的底层流程2、 四种主要的IO模型3、 同步阻塞IO(Blocking IO)4、 同步非阻塞NIO(None Blocking IO)5、 IO多路复用模型(I/O multiplexing)6、 异步…...

Vue基础27之VueUI组件

Vue基础27Vue UI组件库移动端常用 UI 组件库PC 端常用 UI 组件库Element-ui插件基本使用安装引入并使用main.jsApp.vue按需引入安装 babel-plugin-componentbabel.config.jsmain.jsApp.vueVue UI组件库 移动端常用 UI 组件库 Vant https://youzan.github.io/vant Cube UI htt…...

第35篇:Java代码规范全面总结

编程规范目的是帮助我们编写出简洁、可维护、可靠、可测试、高效、可移植的代码,提高产品代码的质量。 适当的规范和标准绝不是消灭代码内容的创造性、优雅性,而是限制过度个性化, 以一种普遍认可的统一方式一起做事,提升协作效率,降低沟通成本。 代码的字里行间流淌的是软…...

Cookie和Session详解

目录 前言: Session详解 Cookie和Session区别和关联 服务器组织会话的方式 使用Tomcat实现登录成功跳转到欢迎页面 登录前端页面 登录成功后端服务器 重定向到欢迎页面 抓包分析交互过程 小结: 前言: Cookie之前博客有介绍过&#x…...

Linux之磁盘分区、挂载

文章目录一、Linux分区●原理介绍●硬盘说明查看所有设备挂载情况挂载的经典案例二、磁盘情况查询基本语法应用实例磁盘情况-工作实用指令一、Linux分区 ●原理介绍 Linux来说无论有几个分区,分给哪一目录使用,它归根结底就只有一个根目录,…...

web渗透之jwt 安全问题

前言JWT 全称 JSON Web Token,是一种标准化格式,用于在系统之间发送加密签名的 JSON 数据。原始的 Token 只是一个 uuid,没有任何意义。JWT 包含了部分业务信息,减少了 Token 验证等交互操作,效率更高JWT组成JWT 由三部…...

好用的5款国产低代码平台介绍

一、云程低代码平台 云程低代码平台是一款基于springboot、vue.js技术的企业级低代码开发平台,平台采用模型驱动、高低码融合、开放扩展等设计理念,基于业务建模、流程建模、表单建模、报表建模、大屏建模等可视化建模工具,通过拖拉拽零代码方…...

【前端学习记录】webpack学习之mini-css-extract-plugin插件

前言 最近在学习尚硅谷的webpack5课程,看到mini-css-extract-plugin这个插件的时候,感觉很有帮助,之前都没有在css这方面深入思考过,课程中的一些记录写在下面 为什么需要优化CSS Css 文件目前被打包到 js 文件中,当…...

FPGA基于RIFFA实现PCIE采集HDMI传输,提供工程源码和QT上位机

目录1、前言2、RIFFA理论基础3、设计思路和架构4、vivado工程详解5、上板调试验证并演示6、福利:工程代码的获取1、前言 PCIE是目前速率很高的外部板卡与CPU通信的方案之一,广泛应用于电脑主板与外部板卡的通讯,PCIE协议极其复杂&#xff0c…...

SpringBoot解析指定Yaml配置文件

再来个文章目录 文章目录前言1、自定义配置文件2、配置对象类3、YamlPropertiesSourceFactory下面还有投票,帮忙投个票👍 前言 最近在看某个开源项目代码并准备参与其中,代码过了一遍后发现多个自定义的配置文件用来装载业务配置代替数据库…...

C++基础算法③——排序算法(选择、冒泡附完整代码)

排序算法 1、选择排序 2、冒泡排序 1、选择排序 基本思想:从头至尾扫描序列,每一趟从待排序元素中找出最小(最大)的一个元素值,然后与第一个元素交换值,接着从剩下的元素中继续这种选择和交换方式,最终得到一个有序…...

《高质量C/C++编程》读书笔记一

前言 这本书是林锐博士写的关于C/C编程规范的一本书,我打算写下一系列读书笔记,当然我并不打算全盘接收这本书中的内容。   良好的编程习惯,规范的编程风格可以提高代码的正确性、健壮性、可靠性、效率、易用性、可读性、可扩展性、可复用性…...

【完美解决】python flask如何直接加载html,css,js,image等下载的网页模板

python flask如何直接加载下载的网页模板问题解决办法问题 本人网页开发小白,刚学了用flask,下载了一套网页模板,启动一个网页的确很简单,但是发现无论怎么改这里的 static_folder值都无法找到CSS,JS,IMAGE,FONT等资源 app Flas…...

2023美赛C题【分析思路+代码】

以下内容为我个人的想法与实现,不代表任何其他人。 文章目录问题一数据预处理时间序列模型创建预测区间单词的任何属性是否影响报告的百分比?如果是,如何影响?如果不是,为什么不是?问题二问题三难度评估模型…...

考研复试6 编译原理

第一章 编译器简介 1. 编译器的核心功能 把源代码翻译成目标代码 2. 编译器设计两个原则: 语义相同;以某种可察觉的方式改进输入程序 3. 编译器内部结构 前端:依赖于源语言,与目标机器无关。将输入的代码映射到 IR。包括分析部…...

uni-app:登录与支付--用户信息

用户信息 实现用户头像昵称区域的基本布局 在 my-userinfo 组件中&#xff0c;定义如下的 UI 结构&#xff1a; <template><view class"my-userinfo-container"><!-- 头像昵称区域 --><view class"top-box"><image src"…...

Docker 部署 MySQL

1. 进入下面路径下 -v 使用相对路径的方式挂载的目录docker会自动创建&#xff0c;路径为&#xff1a;/var/lib/docker/volumes/ cd /var/lib/docker/volumes/ 2. 指定版本5.7启动容器mysql docker run -p 3316:3306 --name mysql-master \ -v mysql-master-log:/var/log/mys…...

警惕,3月20日WOS目录更新,50本SCI/SSCI被剔除,这个出版社多达18本

2023年3月SCI、SSCI期刊目录更新 2023年3月20日&#xff0c;Web of Science核心期刊目录再次更新&#xff01;此次2023年3月SCIE & SSCI期刊目录更新&#xff0c;与上次更新&#xff08;2023年2月&#xff09;相比&#xff0c;共有50本期刊被剔除出SCIE & SSCI期刊目录…...

设计模式和设计原则回顾

设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...

React Native 开发环境搭建(全平台详解)

React Native 开发环境搭建&#xff08;全平台详解&#xff09; 在开始使用 React Native 开发移动应用之前&#xff0c;正确设置开发环境是至关重要的一步。本文将为你提供一份全面的指南&#xff0c;涵盖 macOS 和 Windows 平台的配置步骤&#xff0c;如何在 Android 和 iOS…...

阿里云ACP云计算备考笔记 (5)——弹性伸缩

目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...

c++ 面试题(1)-----深度优先搜索(DFS)实现

操作系统&#xff1a;ubuntu22.04 IDE:Visual Studio Code 编程语言&#xff1a;C11 题目描述 地上有一个 m 行 n 列的方格&#xff0c;从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子&#xff0c;但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...

【git】把本地更改提交远程新分支feature_g

创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...

Matlab | matlab常用命令总结

常用命令 一、 基础操作与环境二、 矩阵与数组操作(核心)三、 绘图与可视化四、 编程与控制流五、 符号计算 (Symbolic Math Toolbox)六、 文件与数据 I/O七、 常用函数类别重要提示这是一份 MATLAB 常用命令和功能的总结,涵盖了基础操作、矩阵运算、绘图、编程和文件处理等…...

Spring AI与Spring Modulith核心技术解析

Spring AI核心架构解析 Spring AI&#xff08;https://spring.io/projects/spring-ai&#xff09;作为Spring生态中的AI集成框架&#xff0c;其核心设计理念是通过模块化架构降低AI应用的开发复杂度。与Python生态中的LangChain/LlamaIndex等工具类似&#xff0c;但特别为多语…...

Rapidio门铃消息FIFO溢出机制

关于RapidIO门铃消息FIFO的溢出机制及其与中断抖动的关系&#xff0c;以下是深入解析&#xff1a; 门铃FIFO溢出的本质 在RapidIO系统中&#xff0c;门铃消息FIFO是硬件控制器内部的缓冲区&#xff0c;用于临时存储接收到的门铃消息&#xff08;Doorbell Message&#xff09;。…...

.Net Framework 4/C# 关键字(非常用,持续更新...)

一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…...

零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)

本期内容并不是很难&#xff0c;相信大家会学的很愉快&#xff0c;当然对于有后端基础的朋友来说&#xff0c;本期内容更加容易了解&#xff0c;当然没有基础的也别担心&#xff0c;本期内容会详细解释有关内容 本期用到的软件&#xff1a;yakit&#xff08;因为经过之前好多期…...