当前位置: 首页 > 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.jsqmd.com/news/629638/

相关文章:

  • 如何3分钟解锁拯救者Y7000 BIOS隐藏功能:终极免费指南
  • 代码智能体基础:自动写代码、调试、运行、优化
  • .NET 磁盘BitLocker加密-技术选型迪
  • 从RC低通滤波器入手:5分钟搞懂波特图增益与相位曲线的实际意义
  • GoldHEN作弊管理器:构建高效PS4游戏修改系统的技术实践
  • Centos7防火墙高级策略:利用rich-rule实现精细化IP访问控制
  • 【STM32F4 HAL库实战】EC11旋转编码器的精准解码与抗干扰设计
  • 从CSP-J网络连接题看IP地址与端口号的实战校验
  • 如何通过3个简单步骤实现IDM永久免费使用:开源脚本技术全解析
  • Windows任务栏透明化终极指南:TranslucentTB让你的桌面焕然一新
  • Qoder IDE 如何重塑AI编程的上下文工程
  • 【OpenHarmony】RK3568平台OpenHarmony 4.1源码编译实战:从环境搭建到镜像生成
  • 2026 数字化选型:5 款热门项目集管理工具对比指南
  • lvgl-micropython、lv_micropython和lv_binding_micropython到底啥关系?一文读懂谛
  • SenseVoice-Small语音识别模型在运维自动化中的实践应用
  • 大模型语音合成正面临“可信性奇点”危机?2026奇点大会伦理委员会首次发布《语音合成内容水印强制标准V1.0》
  • 保姆级教程:用Pycharm直连并行超算云,5分钟搞定ST-GCN环境配置
  • OpCore-Simplify:15分钟零代码完成黑苹果配置的终极方案
  • SITS2026大模型写作系统上线72小时实测数据披露:错误率下降67%,但91%团队忽略这1个关键校验层!
  • 3分钟掌握D2RML:暗黑破坏神2重制版多开自动化解决方案
  • SpringCloud进阶--Seata与分布式事务某
  • 等保.三级要求下Redis 安全测评应该怎么做?堑
  • GLM-4.1V-9B-Base一文详解:为什么它不是聊天模型而是专业视觉理解工具
  • 深入解析UDS协议中的0x28通讯控制服务及其应用场景
  • Knife4j实战:从基础集成到微服务网关聚合的完整指南
  • 大模型部署卡顿?揭秘LLM剪枝的5个致命误区及2024最新绕过方案
  • LoRA微调实战:基于qwen模型提升逻辑推理能力的完整指南
  • 用Python和PyTorch复现CVPR2019 DIM攻击:如何通过随机缩放和填充提升对抗样本的‘黑盒’攻击力
  • WebGL 上下文丢失的优雅恢复:事件监听与资源重建
  • FinalBurn Neo终极指南:如何在现代设备上完美运行经典街机游戏