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

CentOS7.6下用systemctl管理Jenkins war包:从手动启动到开机自启全流程

CentOS7.6下Jenkins war包服务化管理的进阶实践在Linux运维领域将Java应用打包为可管理的系统服务是一项基础但关键的技能。以Jenkins为例虽然官方提供了RPM安装方式但许多团队仍选择使用war包部署以获得更大的灵活性。本文将带您从零开始在CentOS7.6系统上实现Jenkins war包的服务化管理涵盖从基础配置到生产级优化的全流程。1. 环境准备与基础配置1.1 系统环境检查在开始之前我们需要确认基础环境是否符合要求。执行以下命令检查系统版本和Java环境# 检查系统版本 cat /etc/redhat-release # 检查Java版本 java -version对于CentOS7.6建议使用JDK8或JDK11这两个长期支持版本。如果尚未安装Java可以通过以下步骤安装OpenJDK# 安装OpenJDK11 yum install -y java-11-openjdk-devel # 设置默认Java版本 alternatives --config java1.2 Jenkins war包获取与验证从Jenkins官网下载最新的LTS版本war包wget https://get.jenkins.io/war-stable/latest/jenkins.war -P /opt/jenkins下载完成后建议验证文件完整性# 检查文件类型 file /opt/jenkins/jenkins.war # 获取SHA256校验码 sha256sum /opt/jenkins/jenkins.war2. 从临时启动到服务化管理2.1 传统启动方式的问题分析许多开发者习惯使用简单的nohup命令启动Jenkinsnohup java -jar jenkins.war /dev/null 21 这种方式存在几个明显缺陷缺乏完善的进程管理日志输出被丢弃难以排查问题无法利用系统资源管理功能重启后需要手动恢复服务2.2 创建专业的启动脚本在/opt/jenkins目录下创建startup.sh脚本#!/bin/bash # 环境变量配置 export JAVA_HOME/usr/lib/jvm/java-11-openjdk export JENKINS_HOME/var/lib/jenkins export JENKINS_PORT8080 export JENKINS_ARGS--httpPort$JENKINS_PORT # 内存配置 JAVA_OPTS-Xms512m -Xmx1024m -XX:MaxPermSize256m # 启动命令 exec $JAVA_HOME/bin/java $JAVA_OPTS -jar /opt/jenkins/jenkins.war $JENKINS_ARGS为脚本添加执行权限chmod x /opt/jenkins/startup.sh2.3 设计配套的停止脚本创建stop.sh脚本实现优雅停止#!/bin/bash PID$(ps -ef | grep jenkins.war | grep -v grep | awk {print $2}) if [ -z $PID ]; then echo Jenkins is not running else echo Stopping Jenkins (PID: $PID) kill $PID sleep 5 if ps -p $PID /dev/null; then echo Force killing Jenkins kill -9 $PID fi fi3. Systemd服务深度配置3.1 创建专业的systemd单元文件在/etc/systemd/system/目录下创建jenkins.service文件[Unit] DescriptionJenkins Continuous Integration Server Afternetwork.target remote-fs.target nss-lookup.target [Service] Typesimple Userjenkins Groupjenkins EnvironmentJENKINS_HOME/var/lib/jenkins WorkingDirectory/var/lib/jenkins ExecStart/opt/jenkins/startup.sh ExecStop/opt/jenkins/stop.sh Restarton-failure RestartSec30s # 安全加固 PrivateTmptrue ProtectSystemfull NoNewPrivilegestrue [Install] WantedBymulti-user.target3.2 专用用户与权限配置为Jenkins创建专用用户和目录useradd -r -m -d /var/lib/jenkins -s /bin/false jenkins mkdir -p /var/log/jenkins chown -R jenkins:jenkins /var/lib/jenkins /var/log/jenkins /opt/jenkins3.3 服务管理命令实践重新加载systemd配置并启动服务systemctl daemon-reload systemctl start jenkins systemctl enable jenkins检查服务状态systemctl status jenkins -l4. 生产环境优化实践4.1 日志管理方案修改startup.sh脚本实现日志轮转# 在startup.sh中添加日志配置 LOGDIR/var/log/jenkins mkdir -p $LOGDIR exec $JAVA_HOME/bin/java $JAVA_OPTS -jar /opt/jenkins/jenkins.war $JENKINS_ARGS \ --logfile$LOGDIR/jenkins.log \ --accessLogFile$LOGDIR/access.log配置logrotate实现日志轮转创建/etc/logrotate.d/jenkins文件/var/log/jenkins/*.log { daily missingok rotate 30 compress delaycompress notifempty create 0644 jenkins jenkins sharedscripts postrotate systemctl reload jenkins /dev/null 21 || true endscript }4.2 内存与GC优化对于生产环境建议调整JVM参数# 修改startup.sh中的JAVA_OPTS JAVA_OPTS-Xms2g -Xmx4g -XX:NewRatio3 -XX:SurvivorRatio8 \ -XX:UseG1GC -XX:MaxGCPauseMillis200 -XX:ParallelGCThreads4 \ -XX:ConcGCThreads2 -XX:InitiatingHeapOccupancyPercent70 \ -XX:HeapDumpOnOutOfMemoryError -XX:HeapDumpPath/var/lib/jenkins/heapdump.hprof4.3 反向代理集成如果需要通过Nginx或Apache访问可以添加以下配置# Nginx示例配置 location /jenkins/ { proxy_pass http://127.0.0.1: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; proxy_read_timeout 90; }记得在Jenkins系统配置中设置Jenkins URL为反向代理地址并添加--prefix/jenkins参数到JENKINS_ARGS。4.4 备份与恢复策略创建简单的备份脚本/opt/jenkins/backup.sh#!/bin/bash TIMESTAMP$(date %Y%m%d%H%M%S) BACKUP_DIR/backup/jenkins JENKINS_HOME/var/lib/jenkins mkdir -p $BACKUP_DIR tar -czf $BACKUP_DIR/jenkins-backup-$TIMESTAMP.tar.gz $JENKINS_HOME设置cron定时任务0 2 * * * /opt/jenkins/backup.sh5. 故障排查与日常维护5.1 常见问题诊断查看服务日志journalctl -u jenkins -f --since 1 hour ago检查端口占用ss -tulnp | grep 8080验证Java进程ps -ef | grep jenkins | grep -v grep5.2 服务健康检查创建健康检查脚本/opt/jenkins/healthcheck.sh#!/bin/bash RESPONSE$(curl -s -o /dev/null -w %{http_code} http://localhost:8080/login) if [ $RESPONSE -eq 200 ]; then echo Jenkins is healthy exit 0 else echo Jenkins is not responding properly exit 1 fi可以将其集成到systemd的ExecStartPre中实现启动前检查。5.3 版本升级流程安全升级Jenkins的步骤# 停止服务 systemctl stop jenkins # 备份当前版本 mv /opt/jenkins/jenkins.war /opt/jenkins/jenkins.war.bak # 下载新版本 wget https://get.jenkins.io/war-stable/latest/jenkins.war -P /opt/jenkins # 启动服务 systemctl start jenkins

相关文章:

CentOS7.6下用systemctl管理Jenkins war包:从手动启动到开机自启全流程

CentOS7.6下Jenkins war包服务化管理的进阶实践 在Linux运维领域,将Java应用打包为可管理的系统服务是一项基础但关键的技能。以Jenkins为例,虽然官方提供了RPM安装方式,但许多团队仍选择使用war包部署以获得更大的灵活性。本文将带您从零开始…...

YOLO X Layout小白指南:无需代码通过Web界面使用AI模型

YOLO X Layout小白指南:无需代码通过Web界面使用AI模型 1. 为什么选择YOLO X Layout 在日常办公和学习中,我们经常需要处理各种文档——可能是扫描的合同、PDF报告或是手机拍摄的讲义照片。传统方式下,要提取文档中的表格、标题或图片等内容…...

为什么fast-copy成为JavaScript深度拷贝的性能革命

为什么fast-copy成为JavaScript深度拷贝的性能革命 【免费下载链接】fast-copy A blazing fast deep object copier 项目地址: https://gitcode.com/gh_mirrors/fa/fast-copy 在JavaScript开发中,深度拷贝是一个看似简单却暗藏性能陷阱的常见需求。从状态管理…...

为什么你的推荐系统正在被淘汰?2026奇点大会证实:AI原生架构已成生存刚需,错过即掉队

第一章:2026奇点智能技术大会:AI原生推荐系统全景洞察 2026奇点智能技术大会(https://ml-summit.org) 本届大会首次设立“AI原生推荐系统”主题峰会,聚焦从模型架构、实时推理到闭环反馈的全栈技术演进。与传统推荐系统不同,AI原…...

从IWR1443到ROS2:手把手教你用Python驱动毫米波雷达(附避坑指南)

从IWR1443到ROS2:毫米波雷达Python驱动开发全流程实战 毫米波雷达在机器人感知领域扮演着重要角色,而德州仪器的IWR1443作为一款高性价比的FMCW雷达芯片,正被越来越多开发者用于自主导航、避障等场景。本文将带你从零开始,通过Pyt…...

2026年AI人才市场预测:供不应求的领域

随着人工智能技术的飞速发展,2026年已成为AI深度融入产业的关键节点。软件测试从业者正站在变革的十字路口,传统测试模式加速向智能化转型,催生了一系列高价值的新兴岗位。本报告从专业视角出发,分析AI人才市场的供需失衡现象&…...

软件测试中的职业成长:覆盖率 vs 创新力

在软件测试领域,职业成长始终是从业者关注的核心议题。随着数字化转型加速,软件质量成为企业竞争力的关键支柱,测试工程师的角色从单纯的缺陷发现者向质量赋能者转变。然而,这一转型过程中,一个根本性矛盾日益凸显&…...

别再只用Console线了!eNSP里给路由器/交换机配置Telnet远程登录(含AAA认证详解)

华为eNSP实战:Telnet远程登录与AAA认证的进阶配置指南 每次调试设备都要插拔Console线?是时候解放你的双手了。作为网络工程师,Telnet远程登录是必须掌握的生存技能,而AAA认证则是企业级网络管理的标配。今天我们就用华为eNSP模拟…...

06_TiDB+LangChain与LlamaIndex构建RAG应用实战

06_TiDB LangChain/LlamaIndex 构建 RAG 应用实战 标签: TiDB LangChain LlamaIndex RAG 向量数据库 AI应用开发 Python 关键词: TiDB LangChain、TiDBVectorStore、LlamaIndex TiDB、RAG应用、向量存储、嵌入模型、元数据过滤、检索器、相似度搜索、…...

人大金仓+PostGIS实战:从插件安装到空间地理查询初体验

人大金仓PostGIS实战:从插件安装到空间地理查询初体验 空间地理数据处理正成为数据分析与后端开发中的核心能力。当传统的关系型数据库遇上PostGIS这样的空间数据扩展,我们便能在数据库中直接存储、查询和分析地理信息。本文将带你从人大金仓数据库的Pos…...

告别DataX默认配置:手把手教你编译适配MySQL 8.0的专属版本(解决Record引用报错)

深度定制DataX:从源码编译到MySQL 8.0全适配实战指南 当企业级数据迁移遇上MySQL 8.0的新特性,官方DataX发行版往往显得力不从心。最近在金融行业的数据仓库迁移项目中,我们团队就遭遇了连接参数失效、类型映射异常等一系列"水土不服&qu…...

Win11Debloat终极指南:三步释放Windows 11隐藏性能的完整解决方案

Win11Debloat终极指南:三步释放Windows 11隐藏性能的完整解决方案 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declu…...

m4s-converter:一站式B站缓存视频转换解决方案

m4s-converter:一站式B站缓存视频转换解决方案 【免费下载链接】m4s-converter 一个跨平台小工具,将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter 你是否曾有过这样的经历:精…...

Draw.io电子工程绘图库终极指南:三步构建专业电路图

Draw.io电子工程绘图库终极指南:三步构建专业电路图 【免费下载链接】Draw-io-ECE Custom-made draw.io-shapes - in the form of an importable library - for drawing circuits and conceptual drawings in draw.io. 项目地址: https://gitcode.com/gh_mirrors/…...

2026最权威的AI辅助写作平台解析与推荐

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 作为先进人工智能语言模型的DeepSeek,在学术论文写作里展现出显著辅助价值&#…...

尚硅谷JavaScript(基础+高级)实战笔记全解析【从入门到精通】

1. JavaScript入门:从零开始搭建编程思维 第一次接触JavaScript时,我和大多数新手一样被各种术语绕得头晕。直到跟着尚硅谷的教程把代码敲进浏览器控制台,看到第一个"Hello World"弹窗跳出来,才真正理解什么叫"让网…...

Cursor AI Pro智能激活四重奏:自动化工具的革命性实践指南

Cursor AI Pro智能激活四重奏:自动化工具的革命性实践指南 【免费下载链接】cursor-free-vip [Support 0.45](Multi Language 多语言)自动注册 Cursor Ai ,自动重置机器ID , 免费升级使用Pro 功能: Youve reached your…...

AI服务网格不是Istio翻版!:必须重写的4个控制平面组件+2个数据面扩展接口(附开源PoC代码仓链接)

第一章:AI原生软件研发服务网格实践指南 2026奇点智能技术大会(https://ml-summit.org) AI原生软件不再仅是“运行AI模型的应用”,而是将模型训练、推理调度、数据闭环、可观测性与弹性扩缩深度融入服务生命周期的系统级范式。服务网格作为解耦通信逻辑…...

2026最权威的AI科研神器推荐榜单

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek AI写作软件是智能工具,它基于自然语言处理跟深度学习技术,有着辅助用…...

值类型与引用类型:别再只背“栈和堆”了,看这 个实际影响狙

基础示例:单工作表 Excel 转 TXT 以下是将一个 Excel 文件中的第一个工作表转换为 TXT 的完整步骤: 1. 加载并读取Excel文件 from spire.xls import * from spire.xls.common import * workbook Workbook() workbook.LoadFromFile("示例.xlsx"…...

在PlatformIO+VSCode环境下为STM32L476与ST7789屏幕构建LVGL内存优化实战指南

1. 环境搭建与基础配置 在开始LVGL内存优化之前,我们需要先搭建好开发环境。PlatformIOVSCode的组合为嵌入式开发提供了极大的便利,特别是对于STM32这类MCU的开发。我最初接触这个组合时,就被它的高效所吸引,相比传统的Keil或IAR&…...

2026 年,AI 编程 Agent 的真正分水岭——Harness 详解

2026 年,AI 编程 Agent 的真正分水岭,到底在哪里? Harness 才是 AI Agent 的胜负手 - 全景信息图 一个反直觉的结论 这几个月你应该也发现了,各家模型隔三差五就刷一波榜 GPT-5.4 来了,Opus 4.6 来了,Ge…...

Redis命令处理机制源码探究粗

一、项目背景与核心价值 1. 解决的核心痛点 Navicat的数据库连接密码并非明文存储,而是通过AES算法加密后写入.ncx格式的XML配置文件中。一旦用户忘记密码,常规方式只能重新配置连接,效率极低。本项目只作为学习研究使用,不做其他…...

从Ingress到Rancher面板:一次搞定K8s服务暴露与多集群管理平台部署

Kubernetes服务暴露与多集群管理实战:从Ingress到Rancher全链路部署 当企业级容器化应用规模扩大时,如何安全高效地暴露服务并实现多集群统一管理成为技术团队面临的核心挑战。本文将带您深入探索从Ingress控制器配置到Rancher管理平台部署的完整技术链路…...

ESP32-S3开发板到手后,除了Hello World,你的第一个性能调优配置应该做什么?

ESP32-S3开发板性能调优实战:从Hello World到硬件极限 拿到ESP32-S3开发板的第一天,大多数开发者都会迫不及待地烧录一个Hello World程序,看着串口终端打印出熟悉的字符,确认开发环境运转正常。但对于追求极致性能的工程师来说&am…...

终极指南:如何用AI快速生成高质量多语言字幕

终极指南:如何用AI快速生成高质量多语言字幕 【免费下载链接】openlrc Transcribe and translate voice into LRC file using Whisper and LLMs (GPT, Claude, et,al). 使用whisper和LLM(GPT,Claude等)来转录、翻译你的音频为字幕文件。 项目地址: htt…...

Bebas Neue 字体终极指南:开源无衬线字体的设计哲学与实战应用

Bebas Neue 字体终极指南:开源无衬线字体的设计哲学与实战应用 【免费下载链接】Bebas-Neue Bebas Neue font 项目地址: https://gitcode.com/gh_mirrors/be/Bebas-Neue 在数字设计的世界中,寻找一款既具有视觉冲击力又具备专业品质的标题字体往往…...

如何优雅掌控在线状态:3步实现Riot游戏社交自由

如何优雅掌控在线状态:3步实现Riot游戏社交自由 【免费下载链接】Deceive 🎩 Appear offline for League of Legends, VALORANT, and Legends of Runeterra. 项目地址: https://gitcode.com/gh_mirrors/de/Deceive Deceive是一款开源工具&#xf…...

OBS背景移除插件:零绿幕实现专业级直播虚化的终极指南

OBS背景移除插件:零绿幕实现专业级直播虚化的终极指南 【免费下载链接】obs-backgroundremoval An OBS plugin for removing background in portrait images (video), making it easy to replace the background when recording or streaming. 项目地址: https://…...

ARM平台下libcrypto.so.1.0.0的交叉编译避坑指南

ARM平台下libcrypto.so.1.0.0的交叉编译避坑指南 在嵌入式开发中,经常会遇到目标平台的glibc版本与编译环境不兼容的问题。最近在ARM架构上部署一个加密服务时,就遇到了libcrypto.so.1.1需要GLIBC_2.25而目标系统只有GLIBC_2.23的情况。经过多次尝试&…...