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

如何在 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
http://www.cnnetsun.cn/news/1847954.html

相关文章:

  • Gemm4安卓手机运行
  • 如何快速掌握PS4游戏修改:专业级GoldHEN作弊管理器完全指南
  • 写段代码教会你什么是HOOK技术?HOOK技术能干什么?屑
  • 从零上手:基于MRS与WCH-Link的ARM/RISC-V单片机一站式烧录实战
  • EF Core 原生 SQL 实战:FromSql、SqlQuery 与对象映射边界兔
  • DanmakuFactory:解决弹幕格式兼容性难题的专业转换工具
  • 如何用WebPlotDigitizer在6分钟内完成45分钟的科研数据提取工作?终极指南
  • 从V8引擎的垃圾回收(GC)机制入手,聊聊CVE-2020-6507漏洞利用中的那些“内存魔术”
  • Phi-4-reasoning-vision-15B惊艳效果:多页PDF扫描件→表格重建+语义对齐
  • clangd配置与优化:从入门到精通
  • ComfyUI节点开发实战:从零构建自定义AI图像处理模块
  • 终极LRC歌词批量下载方案:告别手动搜索,让离线音乐库焕发新生
  • OpCore Simplify终极指南:3大核心功能让黑苹果配置效率提升80%
  • 从实验模型到生产模型仅差一个仓库?不,是差了8个未被文档化的元数据字段、6类隐性依赖陷阱与1套动态生命周期策略
  • 如何5步快速掌握MAA明日方舟自动化助手:新手高效配置完整指南
  • 终极NVIDIA显卡性能调优指南:如何用Profile Inspector解锁隐藏功能
  • 三菱PLC与MCGS触摸屏在自动分拣控制系统中的组合应用:程序梯形图、接线图与组态画面解析
  • OpCore Simplify终极指南:如何30分钟完成黑苹果EFI智能配置
  • Steam Achievement Manager完整指南:如何轻松管理游戏成就与统计数据
  • HackRF One软件定义无线电终极指南:从硬件架构到多天线切换实战
  • 如何快速破解大众点评反爬虫:3个核心技巧实现数据采集
  • 全国村级行政区矢量
  • UndertaleModTool完全指南:如何轻松解包和修改GameMaker游戏
  • 大模型偏见检测难?揭秘FAIR-ML 2.0评估协议:7步完成合规性审计并生成监管报告
  • 3大核心功能让Windows系统优化变得简单:Winhance中文版深度解析
  • 从理论到实践:牛顿法在电力系统潮流计算中的实现与收敛性分析
  • 高效合并BootLoader与App的HEX文件:量产烧录的终极解决方案
  • 用Llama-Factory给Qwen3-4B模型做LoRA微调,我踩过的坑和37小时训练经验全在这了
  • 【2026大模型投产生死线】:未通过SITS2026符合性验证的模型,将无法接入国家级AI算力调度平台?
  • Dify大模型应用开发平台实战:从Prompt工程到生产级AI工作流承