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

Jenkins部署及反向代理

一、Jenkins介绍

简单写一下jenkins介绍,网上有很多,主要是后面的nginx反向代理配置,如果在只能暴露80端口,且有其他中间件的场景中,只能通过nginx配置反向代理来使用jenkins。

1.概念

Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件项目可以进行持续集成。

2.功能

Jenkins的功能包括:
1、持续的软件版本发布/测试项目。
2、监控外部调用执行的工作。

3.拓展

jenkins一般用于CI/CD流程中,在CI/CD中扮演很重要的角色。

3.1CI/CD

CI/CD 是指持续集成(Continuous Integration)和持续部署(Continuous Deployment)或持续交付(Continuous Delivery)
CI:持续集成(Continuous Integration)
CD:持续部署(Continuous Deployment)或者 持续交付(Continuous Delivery)

3.2具体实现

CI/CD实现方案:gitlab+jenkins+ansible/saltstack
gitlab:代码仓库
jenkins:是CI部分的核心组件,主要负责代码构建,上传仓库和部署触发
ansible/satlstack:自动化管理工具。CD部分的核心组件,主要负责远程、批量部署。
其中:
ansible适用于简单、小规模集群管理;配置相对简单。
saltstack适用于更复杂、更灵活、多维度、更大的集群管理;配置相对复杂。

博主曾用saltstack管理过上千台服务器,由于master—minion架构,也踩过saltstack的坑。(血泪史)

二、Jenkins搭建

1.准备环境

Server Prerequisites
Minimum hardware requirements:
256 MB of RAM
1 GB of drive space (although 10 GB is a recommended minimum if running Jenkins as a Docker container)
Recommended hardware configuration for a small team:
4 GB+ of RAM
50 GB+ of drive space
Software requirements
Jenkins:jenkins-2.504.1-1.1.noarch
JAVA:jdk-21-2000:21.0.7-8.x86_64
OS:Centos7.9 x86_64架构

jenkins 用最新版,java根据jenkins版本在jenkins官网找到对应的版本即可
jenkins官网:https://www.jenkins.io/doc/book/platform-information/support-policy-java/
在这里插入图片描述

2.部署

配置 Jenkins 官方 yum 源

[root@master jenkins]# wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
[root@master jenkins]# rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key

部署java

[root@master jenkins]# wget https://download.oracle.com/java/21/latest/jdk-21_linux-x64_bin.rpm
[root@master jenkins]# yum -y localinstall ./jdk-21_linux-x64_bin.rpm
[root@master jenkins]# java --version
java 21.0.7 2025-04-15 LTS
Java(TM) SE Runtime Environment (build 21.0.7+8-LTS-245)
Java HotSpot(TM) 64-Bit Server VM (build 21.0.7+8-LTS-245, mixed mode, sharing)

部署jenkins

[root@master jenkins]# yum install jenkins

启动jenkins

[root@master jenkins]# systemctl start jenkins
[root@master jenkins]# jenkins --version
2.504.1
[root@master jenkins]# lsof -i:8080
COMMAND     PID USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
java    3303059 root   10u  IPv6 21608121      0t0  TCP *:webcache (LISTEN)
[root@master jenkins]# ps -ef | grep jenkins
root     3303059       1  0 10:53 ?        00:01:37 /usr/bin/java -Djava.awt.headless=true -jar /usr/share/java/jenkins.war --webroot=/var/cache/jenkins/war --httpPort=8080 --prefix=/jenkins --accessLoggerClassName=winstone.accesslog.SimpleAccessLogger --simpleAccessLogger.format=combined --simpleAccessLogger.file=/var/log/jenkins/access_log
root     3471520 3305680  0 18:15 pts/2    00:00:00 grep --color=auto jenkins

简单做一个jenkins的目录介绍
yum安装完自动注册系统服务,所以能用systemctl启动,启动文件默认位置和内容如下所示:

[root@master jenkins]# cd /usr/lib/systemd/system/
[root@master system]# pwd
/usr/lib/systemd/system
[root@master system]# ls jenkins.service
jenkins.service
[root@master system]# cat jenkins.service | egrep -v "^#|^$"
[Unit]
Description=Jenkins Continuous Integration Server
Requires=network.target
After=network.target
StartLimitBurst=5
StartLimitIntervalSec=5m
[Service]
Type=notify
NotifyAccess=main
ExecStart=/usr/bin/jenkins
Restart=on-failure
SuccessExitStatus=143
User=root
Group=root
Environment="JENKINS_HOME=/var/lib/jenkins"
WorkingDirectory=/var/lib/jenkins
Environment="JENKINS_WEBROOT=%C/jenkins/war"
Environment="JAVA_OPTS=-Djava.awt.headless=true"
Environment="JENKINS_PORT=8080"
Environment="JENKINS_ENABLE_ACCESS_LOG=true"
[Install]
WantedBy=multi-user.target

jenkins的工作空间

[root@master jenkins]# pwd
/var/lib/jenkins
[root@master jenkins]# ls -lrt
total 84
-rw-r--r--  1 jenkins jenkins    64 Jun 23 11:09 secret.key
-rw-r--r--  1 jenkins jenkins     0 Jun 23 11:09 secret.key.not-so-secret
drwxr-xr-x  2 jenkins jenkins  4096 Jun 23 11:09 jobs #流水线任务均在这个目录里面
-rw-r--r--  1 jenkins jenkins   171 Jun 23 11:09 jenkins.telemetry.Correlator.xml
drwxr-xr-x  2 jenkins jenkins  4096 Jun 23 11:09 userContent
-rw-r--r--  1 jenkins jenkins   258 Jun 23 11:09 queue.xml.bak
-rw-r--r--  1 jenkins jenkins   156 Jun 23 11:09 hudson.model.UpdateCenter.xml
-rw-r--r--  1 jenkins jenkins  1037 Jun 23 11:09 nodeMonitors.xml
-rw-r--r--  1 jenkins jenkins  1660 Jun 23 11:10 config.xml
drwxr-xr-x 89 jenkins jenkins 12288 Jun 23 11:25 plugins	#安装的插件信息
-rw-------  1 jenkins jenkins  1680 Jun 23 11:25 identity.key.enc
drwxr-xr-x  2 jenkins jenkins  4096 Jun 23 11:25 updates
-rw-r--r--  1 jenkins jenkins   370 Jun 23 11:25 hudson.plugins.git.GitTool.xml
drwxr-xr-x  2 jenkins jenkins  4096 Jun 23 11:25 logs	#健康检查信息,只保存最新的信息,一分钟更新一次
drwxr-xr-x  3 jenkins jenkins  4096 Jun 23 11:27 users	#用户配置
-rw-r--r--  1 jenkins jenkins   187 Jun 23 11:34 jenkins.model.JenkinsLocationConfiguration.xml
-rw-r--r--  1 jenkins jenkins     7 Jun 23 11:34 jenkins.install.UpgradeWizard.state
-rw-r--r--  1 jenkins jenkins     7 Jun 23 11:34 jenkins.install.InstallUtil.lastExecVersion
-rw-r--r--  1 jenkins jenkins  1267 Jun 23 11:35 hudson.plugins.emailext.ExtendedEmailPublisher.xml
drwx------  2 jenkins jenkins  4096 Jun 23 12:09 secrets	#秘钥保存目录

部署nginx
部署过程参考下列博客标题三中1.编译安装
https://blog.csdn.net/weixin_43866248/article/details/132230464?spm=1011.2415.3001.5331
检查nginx进程

[root@master ~]# ps -ef | grep nginx
root     3047802       1  0 Jun17 ?        00:00:00 nginx: master process /opt/web_app/nginx-1.16.1/sbin/nginx -c /opt/web_app/nginx-1.16.1/conf/nginx.conf
root     3306591 3047802  0 Jun20 ?        00:00:00 nginx: worker process
root     3497912 3496966  0 10:38 pts/1    00:00:00 grep --color=auto nginx

3.nginx配置反向代理

根据官网提示,先修改jenkins的访问路径contextpath
在这里插入图片描述

官网提示,如果浏览器访问的时候想在Jenkins URL后面加path,那么必须要加这个配置,本次测试就是想通过http://www.example.com/jenkins来访问我的jenkins

直接修改配置文件/usr/lib/systemd/system/jenkins.service,大概在116行的位置

[root@master ~]# vim /usr/lib/systemd/system/jenkins.service
112 # Set to true to enable logging to /var/log/jenkins/access_log.
113 Environment="JENKINS_ENABLE_ACCESS_LOG=true"
114
115 # Servlet context (important if you want to use reverse proxying)
116 Environment="JENKINS_PREFIX=/jenkins" #这个JENKINS_PREFIX要跟nginx location保持一致
[root@master ~]# systemctl daemon-reload
[root@master ~]# systemctl restart jenkins

再修改nginx配置,添加以下内容

[root@master ~]# vim /opt/web_app/nginx-1.16.1/conf/nginx.conflocation /jenkins {		#这个location需要跟JENKINS_PREFIX保持一致,这一步很关键proxy_pass  http://localhost:8080;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;}
[root@master ~]# /opt/web_app/nginx-1.16.1/sbin/nginx -t
nginx: the configuration file /opt/web_app/nginx-1.16.1/conf/nginx.conf syntax is ok
nginx: configuration file /opt/web_app/nginx-1.16.1/conf/nginx.conf test is successful
[root@master ~]# /opt/web_app/nginx-1.16.1/sbin/nginx -s reload

三、配置初始化

1.在浏览器初始化jenkins

在浏览器输出你的域名+jenkins:http://www.example.com/jenkins
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

http://www.xdnf.cn/news/14580.html

相关文章:

  • 【JS-4.7-表单value属性】深入理解DOM操作中的表单value属性
  • 雷达高度计 RA-6500
  • AI浪潮拐点:MCP与A2A协议如何重塑AI智能体协作生态
  • 金融行业B端系统布局实战:风险管控与数据可视化的定制方案
  • 动手用 Web 实现一个 2048 游戏
  • 如何预防电磁铁损坏
  • Data Vault 初探(九) —— 定期装载_Kettle_附属表
  • Java性能优化权威指南-操作系统性能监控
  • HarmonyOS NEXT应用元服务布局优化ArkUI框架执行流程
  • 从java角度理解io多路复用和redis为什么使用io多路复用
  • PixPin:一个强大且免费的截图贴图工具
  • SpringBoot+Vue服装商城系统 附带详细运行指导视频
  • 群晖 NAS Docker 镜像加速配置详细教程
  • 开源 python 应用 开发(二)基于pyautogui、open cv 视觉识别的工具自动化
  • RSA加密原理及推导
  • Qt项目,记事本
  • 【JS-4.4-键盘常用事件】深入理解DOM键盘事件:提升用户交互体验的关键
  • 【unitrix】 4.0 类型级数值表示系统(types.rs)
  • Java的锁机制问题
  • Linux之网络的基础认识
  • KES数据库部署工具使用
  • 系统思考VS心智模式
  • CSP-S 模拟赛一总结(T1、T2)
  • AI大模型提示词工程研究报告:长度与效果的辩证分析
  • 数据结构转换与离散点生成
  • Python 爬虫案例(不定期更新)
  • XCVU47P-2FSVH2892E Xilinx Virtex UltraScale+ FPGA AMD
  • 2025年渗透测试面试题总结-2025年HW(护网面试) 03(题目+回答)
  • C++ 第一阶段项目一:实现简易计算器
  • 正则表达式与C++