news 2026/9/27 8:49:59

如何在 Ubuntu 22.04 LTS 上部署 Jenkins 自动化服务器?

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
如何在 Ubuntu 22.04 LTS 上部署 Jenkins 自动化服务器?

1. 环境准备:搭建Jenkins的基石

在Ubuntu 22.04上部署Jenkins前,我们需要先准备好运行环境。Jenkins作为Java应用,对运行环境有特定要求,就像盖房子前需要打好地基一样。我去年在给一家电商公司部署CI/CD系统时,就遇到过因环境配置不当导致Jenkins频繁崩溃的问题,后来发现是Java版本不兼容导致的。

首先确保你的系统是最新的。打开终端执行:

sudo apt update && sudo apt upgrade -y

Java环境是Jenkins运行的核心依赖。虽然OpenJDK 8也能运行,但实测在Ubuntu 22.04上使用OpenJDK 11或17性能更稳定。安装命令如下:

sudo apt install openjdk-11-jdk -y

验证Java版本(关键步骤别跳过):

java -version # 应该看到类似输出: # openjdk version "11.0.20.1" 2023-08-24

对于生产环境,我强烈建议单独创建一个Jenkins运行用户,而不是直接使用root。这样可以有效隔离权限:

sudo useradd -r -m -U -d /var/lib/jenkins -s /bin/bash jenkins

注意:如果系统已有其他Java版本,可以用sudo update-alternatives --config java切换默认版本。我在客户现场就遇到过三个Java版本共存导致环境混乱的情况。

2. 安装Jenkins:两种实战方案对比

Jenkins官方提供了多种安装方式,这里我推荐通过官方仓库安装,比直接下载war包更便于后续维护。去年帮一个游戏工作室部署时,他们最初用war包部署,结果插件依赖问题折腾了两天。

方案一:官方仓库安装(推荐)

curl -fsSL https://pkg.jenkins.io/debian-stable/jenkins.io-2023.key | sudo tee \ /usr/share/keyrings/jenkins-keyring.asc > /dev/null echo "deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] \ https://pkg.jenkins.io/debian-stable binary/" | sudo tee \ /etc/apt/sources.list.d/jenkins.list > /dev/null sudo apt update sudo apt install jenkins -y

方案二:Docker方式(适合快速测试)

sudo apt install docker.io -y sudo systemctl enable --now docker sudo docker run -d -p 8080:8080 -p 50000:50000 \ -v jenkins_home:/var/jenkins_home jenkins/jenkins:lts-jdk11

安装完成后启动服务:

sudo systemctl enable --now jenkins

检查状态时我习惯用这个命令组合:

sudo systemctl status jenkins --no-pager -l # 看到"Active: active (running)"才算成功

3. 防火墙与网络配置实战

Ubuntu 22.04默认使用ufw防火墙,但很多新手容易在这里踩坑。上周还有个学员问我为什么Jenkins页面打不开,结果发现是防火墙没配置。

放行默认端口(8080是Web界面,50000是Agent通信):

sudo ufw allow 8080/tcp sudo ufw allow 50000/tcp sudo ufw enable

如果使用云服务器(比如AWS/Azure),还需要在安全组中放行这些端口。曾经有个客户在阿里云上折腾半天,最后发现是安全组没配置。

验证端口监听状态:

ss -tulnp | grep jenkins # 应该看到: # tcp LISTEN 0 50 *:8080 *:* users:(("java",pid=1234,fd=123))

重要提示:生产环境强烈建议用Nginx反代并配置HTTPS。可以用sudo apt install nginx安装后,在/etc/nginx/sites-available/下添加配置。

4. 初始化配置与安全加固

现在打开浏览器访问http://your-server-ip:8080,会看到解锁界面。获取初始密码:

sudo cat /var/lib/jenkins/secrets/initialAdminPassword

插件安装是个技术活:

  • 新手建议先安装推荐插件
  • 老手可以选自定义,我通常会额外勾选:
    • Pipeline
    • Blue Ocean
    • Git
    • Docker

创建管理员账户时,千万别用弱密码!去年有家公司的Jenkins被入侵,就是因为用了admin/123456这种密码。建议用密码管理器生成复杂密码。

完成基础配置后,立即做这几件事:

  1. 进入"Manage Jenkins" → "Security":

    • 启用矩阵权限(Matrix-based security)
    • 禁止匿名用户执行任何操作
  2. 配置CSRF防护:

    sudo sed -i 's/<useCrumbs>false<\/useCrumbs>/<useCrumbs>true<\/useCrumbs>/g' \ /var/lib/jenkins/config.xml sudo systemctl restart jenkins
  3. 设置自动备份(避免血泪教训):

    sudo apt install rsync -y mkdir -p /backups/jenkins crontab -e # 添加:0 3 * * * rsync -a /var/lib/jenkins /backups/jenkins

5. 生产环境优化技巧

经过上百次部署经验,我总结出这些优化项能让Jenkins更稳定:

内存调优(/etc/default/jenkins):

JAVA_ARGS="-Xms1g -Xmx2g -XX:MaxRAMPercentage=70.0"

日志轮转(防止磁盘爆满):

sudo tee /etc/logrotate.d/jenkins <<EOF /var/log/jenkins/*.log { daily missingok rotate 30 compress delaycompress notifempty create 0640 jenkins jenkins } EOF

定期清理构建记录(在Jenkins脚本控制台执行):

import hudson.model.* import jenkins.model.Jenkins Jenkins.instance.getAllItems(Job.class).each { job -> if(job.builds.number > 50) { job.builds.findAll { it.number <= job.builds.number - 50 }.each { it.delete() } } }

对于团队协作场景,建议配置LDAP或OAuth集成。最近给一个20人团队部署时,用GitLab OAuth节省了大量账号管理时间。

6. 常见问题排错指南

问题1:Jenkins启动失败检查日志最有效:

journalctl -u jenkins -b --no-pager -n 50

常见原因:

  • Java版本不对(装11或17)
  • 端口冲突(netstat -tulnp查看)
  • 权限问题(chown -R jenkins:jenkins /var/lib/jenkins)

问题2:插件安装超时修改更新中心地址:

sudo sed -i 's/https:\/\/updates.jenkins.io\/update-center.json/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins\/updates\/update-center.json/g' \ /var/lib/jenkins/hudson.model.UpdateCenter.xml

问题3:构建卡住检查节点状态:

curl -s http://localhost:8080/computer/api/json | jq .busyExecutors

如果是内存不足,可以增加交换空间:

sudo fallocate -l 2G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile

最后提醒:每次升级前一定要备份!有次我没备份就升级,结果插件全部不兼容,只能重装。现在我的习惯是:

sudo apt update sudo systemctl stop jenkins rsync -a /var/lib/jenkins{,.bak} sudo apt install --only-upgrade jenkins
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/21 16:51:18

Gemm4安卓手机运行

安装Termux应用从Google Play商店或F-Droid下载Termux&#xff0c;这是一个功能强大的终端模拟器&#xff0c;支持在安卓设备上运行Linux环境。更新系统并安装依赖在Termux中执行以下命令更新软件包列表并安装必要工具&#xff1a;pkg update && pkg upgrade pkg insta…

作者头像 李华
网站建设 2026/9/21 16:18:17

如何快速掌握PS4游戏修改:专业级GoldHEN作弊管理器完全指南

如何快速掌握PS4游戏修改&#xff1a;专业级GoldHEN作弊管理器完全指南 【免费下载链接】GoldHEN_Cheat_Manager GoldHEN Cheats Manager 项目地址: https://gitcode.com/gh_mirrors/go/GoldHEN_Cheat_Manager 还在为PS4游戏难度太高而烦恼吗&#xff1f;GoldHEN作弊管理…

作者头像 李华
网站建设 2026/9/25 21:19:28

写段代码教会你什么是HOOK技术?HOOK技术能干什么?屑

为 HagiCode 添加 GitHub Pages 自动部署支持 本项目早期代号为 PCode&#xff0c;现已正式更名为 HagiCode。本文记录了如何为项目引入自动化静态站点部署能力&#xff0c;让内容发布像喝水一样简单。 背景/引言 在 HagiCode 的开发过程中&#xff0c;我们遇到了一个很现实的问…

作者头像 李华
网站建设 2026/9/24 9:30:10

从零上手:基于MRS与WCH-Link的ARM/RISC-V单片机一站式烧录实战

1. 环境准备&#xff1a;搭建一站式烧录工作台 第一次接触沁微电子&#xff08;WCH&#xff09;的ARM或RISC-V单片机时&#xff0c;很多开发者会被开发环境搭建绊住手脚。其实只需要两样东西&#xff1a;MounRiver Studio&#xff08;MRS&#xff09;集成开发环境和WCH-Link调试…

作者头像 李华
网站建设 2026/9/24 13:50:34

EF Core 原生 SQL 实战:FromSql、SqlQuery 与对象映射边界兔

先唠两句&#xff1a;参数就像餐厅点单 把API想象成一家餐厅的“后厨系统”。 ? 路径参数/dishes/{dish_id} -> 好比你要点“宫保鸡丁”这道具体的菜&#xff0c;它是菜单&#xff08;资源路径&#xff09;的一部分。查询参数/dishes?spicytrue&typeSichuan -> 好比…

作者头像 李华
网站建设 2026/9/27 1:42:49

DanmakuFactory:解决弹幕格式兼容性难题的专业转换工具

DanmakuFactory&#xff1a;解决弹幕格式兼容性难题的专业转换工具 【免费下载链接】DanmakuFactory 支持特殊弹幕的xml转ass格式转换工具 项目地址: https://gitcode.com/gh_mirrors/da/DanmakuFactory 在视频创作和弹幕文化日益普及的今天&#xff0c;不同平台间的弹幕…

作者头像 李华