🧱 一、Jenkins 本地部署详细步骤(Linux)
1. 🔧 安装前准备
操作系统:ubuntu24.10 server版,确保系统已更新:
sudo apt update && sudo apt upgrade -y安装 Java(Jenkins 需要 Java 环境,注意新版Jenkins在jdk11上运行不起来):
sudo apt update sudo apt install fontconfig openjdk-21-jre java -version
2. 📦 安装 Jenkins
✅ 添加 Jenkins 仓库并安装:
sudo wget -O /etc/apt/keyrings/jenkins-keyring.asc \
https://pkg.jenkins.io/debian-stable/jenkins.io-2023.key
echo "deb [signed-by=/etc/apt/keyrings/jenkins-keyring.asc]" \
https://pkg.jenkins.io/debian-stable binary/ | sudo tee \
/etc/apt/sources.list.d/jenkins.list > /dev/null
sudo apt-get update
sudo apt-get install jenkins
3. 🚀 启动 Jenkins 服务
sudo systemctl start jenkins
sudo systemctl enable jenkins
检查服务状态:
sudo systemctl status jenkins
4. 🌐 访问 Jenkins Web界面
默认端口是
8080,在浏览器访问:http://your-server-ip:8080获取初始管理员密码:
sudo cat /var/lib/jenkins/secrets/initialAdminPassword- 输入密码后,进入 Jenkins 安装向导,选择推荐插件安装。
5. 👤 创建管理员账户
- 设置用户名、密码、邮箱等信息
- 完成后进入 Jenkins 控制台
6. 🧪 配置 Jenkins 环境
安装常用插件:
- Git
- Pipeline
- SSH Agent
- Blue Ocean(可选,更好看的 UI)
- 设置全局工具路径(如 Git、Java、Maven)
7. 🛠️ 创建第一个 Pipeline Job
- 新建任务 → 选择 “Pipeline”
- 配置源码仓库地址(GitHub/GitLab)
- 编写
Jenkinsfile,定义 CI/CD 流程
示例 Jenkinsfile:
groovy
pipeline {
agent any
stages {
stage('拉取代码') {
steps {
git 'https://your.repo.url/project.git'
}
}
stage('构建') {
steps {
sh './build.sh' // 或 npm run build、mvn package 等
}
}
stage('部署') {
steps {
sshagent(['your-ssh-credentials']) {
sh 'scp -r ./dist user@your-server:/var/www/project'
sh 'ssh user@your-server "systemctl restart your-app.service"'
}
}
}
}
}
8. 🔔 设置通知与权限
- 配置邮件通知或钉钉机器人
- 设置用户权限(可安装 Role Strategy 插件)
🧭 部署完成后建议
- 定期备份 Jenkins 配置(
/var/lib/jenkins) - 使用 HTTPS(可配置 Nginx 反向代理 + SSL)
- 设置自动构建触发器(如 Git Webhook)
官网参考链接:https://www.jenkins.io/doc/book/installing/linux/#debianubuntu
🛠️ 二、Nginx 配置(反向代理 Jenkins)
✅ 1. 在 Nginx 服务器上配置反向代理
编辑 Nginx 配置文件(通常在 /etc/nginx/sites-available/default 或 /etc/nginx/conf.d/jenkins.conf):
sudo nano /etc/nginx/conf.d/jenkins.conf
添加以下内容:
nginx
server {
listen 80;
server_name jenkins.xxxx.com;
location / {
proxy_pass http://<jenkins-server-ip>: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_redirect off;
proxy_http_version 1.1;
proxy_request_buffering off;
}
}
请将
<jenkins-server-ip>替换为 Jenkins 实际运行的服务器 IP 地址。
✅ 2. 重启 Nginx
sudo nginx -t # 检查配置是否正确
sudo systemctl restart nginx
✅ 3. 测试访问
在浏览器中访问:
http://jenkins.xxxx.com
你应该能看到 Jenkins 的登录界面 🎉
🛠️ 三、Nginx 配置 HTTPS(使用阿里云证书)
✅ 1. 上传证书文件到 Nginx 服务器
建议放在 /etc/nginx/ssl/jenkins.xxxx.com/ 目录下:
sudo mkdir -p /etc/nginx/ssl/jenkins.xxxx.com
sudo cp certificate.pem /etc/nginx/ssl/jenkins.xxxx.com/
sudo cp private.key /etc/nginx/ssl/jenkins.xxxx.com/
✅ 2. 配置 Nginx 虚拟主机
编辑配置文件:
sudo nano /etc/nginx/conf.d/jenkins.conf
内容如下:
nginx
server {
listen 80;
server_name jenkins.xxxx.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name jenkins.xxxx.com;
ssl_certificate /etc/nginx/ssl/jenkins.xxxx.com/certificate.pem;
ssl_certificate_key /etc/nginx/ssl/jenkins.xxxx.com/private.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
location / {
proxy_pass http://<jenkins-server-ip>: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_redirect off;
proxy_http_version 1.1;
proxy_request_buffering off;
}
}
请将
<jenkins-server-ip>替换为实际 IP 地址。
✅ 3. 重启 Nginx
sudo nginx -t
sudo systemctl restart nginx
然后访问:
代码
https://jenkins.xxxx.com
你应该能看到 Jenkins 的登录界面,并且浏览器显示安全锁 🔒。
🔄 证书更新步骤(阿里云)
如果你使用的是阿里云的 自动签发服务(如 ACM),可以:
- 设置定期更新脚本,将新证书覆盖旧文件
然后重启 Nginx:
sudo systemctl reload nginx
如果你是手动下载证书,每次更新后只需替换 .pem 和 .key 文件,然后 reload Nginx 即可。
🎯四、遇到的坑(问题一)
使用jenkins.xxxx.com登入后,系统管理里会有一个“反向代理设置有误”提示,如截图
解决方法:
①、点击提示框中的“更多信息”按钮,会跳转到一个 Jenkins 文档地址:https://www.jenkins.io/doc/book/system-administration/reverse-proxy-configuration-troubleshooting/
进入系统管理:
在Jenkins 仪表盘的左侧菜单中,点击“管理Jenkins”(Manage Jenkins)。
打开系统配置:
在“系统管理”页面中,找到并点击“系统配置”(Configure System)。
修改Jenkins URL:
找到“Jenkins Location”区域下的“Jenkins URL”字段。
- 检查:您当前访问Jenkins 的地址,例如
http://your_domain.com或http://your_ip:port。 - 将“Jenkins URL”字段中的地址修改为您实际通过Nginx 访问的那个地址。确保该URL 包含了正确的域名或IP 地址以及端口(如果Nginx 代理的是非标准端口)。
- 检查:您当前访问Jenkins 的地址,例如
保存并重启Jenkins:
- 在页面下方点击“保存”(Save)。
- 然后,在“管理Jenkins”页面底部找到并点击“立即重启”(Restart)或“安全退出”(Safe Restart)来重启Jenkins。
②、设置完步骤①后,发现还是提示反向代理设置有误,继续排查
搜索引擎一番之后,终于明白了这个问题的所在:
在 Jenkins 的管理台的 Configure System 配置模块中有一项 Jenkins URL 配置:
默认配置是什么我忘了,我之前已经第①步把它改成了:http://jenkins.xxxx.com/ ,也就是我的 Jenkins 外网访问的根目录。
jenkins判断“反向代理设置有误”的依据就是:向这个 Jenkins URL 配置的地址发送一个请求,请求的末尾会携带 Jenkins 控制台的地址。完整请求示例如下:
http://jenkins.xxxx.com/administrativeMonitor/hudson.diagnosis.ReverseProxySetupMonitor/testForReverseProxySetup/https%3A%2F%2Fxxx.com/manage/
后端接到请求会对比请求的 host 和参数中控制台地址,如果一样就返回200,不一样就返回404错误,前端就根据返回结果是不是200来控制“反向代理设置有误”的提示框是否显示。所以 Jenkins URL 如果配置的不正确,也是会有“反向代理设置有误”的提示框的。
可是我配置的 Jenkins URL 是正确的,为什么也会有提示框?查看浏览器控制台的请求结果如下:
仔细看这个红框中的地址,原来 Jenkins 接收到的参数中少了个斜线,http://jenkins.xxxx.com/manager/ 变成了 http:/jenkins.xxxx.com/manager/
造成斜线丢失的原因就是 当 proxy_pass 以 / 结尾时,Nginx 会对 request_url 进行处理,默认会合并 request_url 中相连的多个斜线为一个。
解决方案就是把 proxy_pass http://jenkins-server-ip:8080/
修改为 proxy_pass http://jenkins-server-ip:8080
重启 Nginx 后,刷新页面,提示框消失。
另外我还根据 Jenkins Reverse proxy - Nginx 文档 增加了下面的配置:
#其他配置
proxy_max_temp_file_size 0;
#this is the maximum upload size
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffering off;
proxy_set_header Connection ""; # Clear for keepalive
🎯五、遇到的坑(问题二)
全局工具配置—新增JDK,JAVA_HOME目录一直提示:/usr/lib/jvm/java-21-openjdk-amd64 不是JDK目录
解决方法
系统默认安装(sudo apt install fontconfig openjdk-21-jre)的是 JRE(Java Runtime Environment),而不是完整的 JDK(Java Development Kit)。Jenkins 在配置 JDK 工具时,必须识别的是包含编译器(javac)、工具链、头文件等完整开发环境,而不仅仅是运行时。
✅ 为什么 JRE 不够用?
JRE 只包含:
java(运行 Java 程序)- 基本类库
但缺少:
javac(Java 编译器)javadoc、jar等开发工具- 头文件和开发接口
Jenkins 在构建 Java 项目时,尤其是使用 Maven、Gradle 或编译源码时,必须依赖 JDK。
🛠️ 正确安装 JDK 的命令(适用于 Ubuntu/Debian)
sudo apt update
sudo apt install openjdk-21-jdk -y
安装完成后,确认路径:
readlink -f $(which java) | sed "s:/bin/java::"
你应该看到类似:
/usr/lib/jvm/java-21-openjdk-amd64
这个路径就是你在 Jenkins 中应该填写的 JAVA_HOME。
🎯 Jenkins 配置建议
在「全局工具配置」中:
- 名称:
OpenJDK21 - JAVA_HOME:
/usr/lib/jvm/java-21-openjdk-amd64 - 自动安装:不勾选
点击保存后,Jenkins 应该不再报错。
下面介绍下Jenkins如何定时自动备份,防止数据丢失。
📦 Jenkins 自动备份操作文档(使用 ThinBackup 插件)
🧩 一、前提条件
- Jenkins 已安装并运行正常
- 已安装 ThinBackup 插件(系统管理 → 管理插件)
- Jenkins 用户具有备份目录的读写权限
- 推荐使用 Linux 系统,具备基本命令行操作权限
🛠️ 二、创建备份目录并授权
在 Jenkins 服务器终端执行以下命令:
# 创建备份目录
sudo mkdir -p /data/jenkins_backups
# 授权 Jenkins 用户为目录拥有者(假设用户名为 jenkins)
sudo chown -R jenkins:jenkins /data/jenkins_backups
# 设置权限,防止其他用户访问
sudo chmod 750 /data/jenkins_backups
# 验证权限
ls -ld /data/jenkins_backups
输出示例应为:
drwxr-x--- 2 jenkins jenkins 4096 Oct 17 19:45 /data/jenkins_backups
⚙️ 三、配置 ThinBackup 插件
进入 Jenkins → 系统管理 → 系统设置 → ThinBackup 配置区域,填写如下内容:
| 配置项 | 建议填写 |
|---|---|
| Backup directory | /data/jenkins_backups |
| Backup schedule for full backups | H 2 * * *(每天凌晨2点) |
| Max number of backup sets | 7(保留最近7次备份) |
| Files excluded from backup | .*\.log(排除日志文件) |
| ✅ 等待 Jenkins 空闲时备份 | 勾选 |
| ✅ 发生异常时停止备份 | 勾选 |
| ✅ 备份 Jenkins 主目录 | 勾选 |
| ✅ 备份插件 | 勾选 |
| ✅ 备份任务(jobs) | 勾选 |
| ✅ 备份用户内容(userContent) | 勾选 |
| ✅ 备份构建结果 | 勾选 |
| ✅ 备份凭据(credentials)与 secrets | 勾选 |
| ✅ 备份 config-history(如已安装插件) | 可选勾选 |
📦 四、执行备份
你可以选择:
- 点击 ThinBackup 页面中的 “立即备份” 按钮手动执行
- 等待定时任务自动触发(如每天凌晨2点)
备份完成后,目录结构如下:
cd /data/jenkins_backups
ls
# 示例输出
FULL-2025-10-17_19-35
进入备份目录查看内容:
cd FULL-2025-10-17_19-35
ls
你应看到以下关键文件和目录:
config.xml、credentials.xml:全局配置与凭据jobs/:任务配置plugins/:插件数据users/:用户信息userContent/:静态资源installedPlugins.xml:插件列表- 多个
.xml文件:插件与系统配置 backup-completed.info:备份完成标志
🧪 五、验证恢复流程(建议)
在测试环境中:
- 安装 Jenkins 和 ThinBackup 插件
- 将备份目录复制到测试环境
- 在 ThinBackup 插件中选择“Restore”
- 验证任务、插件、用户是否恢复成功
🛡️ 六、安全与维护建议
- 定期检查备份是否成功执行
- 每月验证一次恢复流程
- 将备份同步到远程服务器或云存储(如 S3、NAS)
- 加密存储包含敏感数据的备份(如
credentials.xml)
jenkins版本升级步骤
问题描述:
jenkins界面提示当前安装的下列组件已有警告发布。 Jenkins 2.516.2 核心及其库 Multiple security vulnerabilities in Jenkins 2.527 and earlier, LTS 2.516.2 and earlier A fix for this issue is available. Update Jenkins now.
以下是将 Jenkins 从旧版本(如 2.516.2)升级到最新安全版本2.528.1的完整步骤。
1. 准备工作
确认当前版本:在 Jenkins 管理界面底部查看版本号,或运行命令:
jenkins --version备份 Jenkins 数据(强烈推荐):
- 备份
$JENKINS_HOME目录(默认路径通常是/var/lib/jenkins) - 包括:
jobs/、plugins/、config.xml、users/等 可使用 tar 命令:
sudo systemctl stop jenkins sudo tar -czvf jenkins_backup.tar.gz /var/lib/jenkins
- 备份
2.下载 Jenkins 2.528.1 .deb 安装包
- 打开 Jenkins GitHub 发布页:Jenkins Releases on GitHub
- 找到版本号为 2.528.1 的条目(你也可以直接搜索
jenkins-2.528.1) 在该版本下的 Assets 部分,点击下载:
jenkins_2.528.1_all.deb或使用命令行下载(需替换为实际链接):
wget https://get.jenkins.io/debian-stable/jenkins_2.528.1_all.deb
🛠 安装或升级 Jenkins
停止 Jenkins 服务(如果已安装):
sudo systemctl stop jenkins安装
.deb包:sudo dpkg -i jenkins_2.528.1_all.deb # 此命令只会升级 Jenkins 的程序文件,不会覆盖你的Jenkins数据和配置,Jenkins的数据(包括 Job、插件、用户配置等)默认存储在$JENKINS_HOME目录启动 Jenkins 服务:
sudo systemctl start jenkins验证版本: 登录 Jenkins 后台或运行:
jenkins --version
🔐 升级后建议
- 登录 Jenkins 后台 → 管理 Jenkins → 插件管理 → 更新所有插件
- 检查 Job 是否正常运行
查看系统日志确认无异常:
sudo journalctl -u jenkins
科普小知识:jenkins.war 和 jenkins.deb的区别
📦 Jenkins.war vs Jenkins.deb 对比表
| 项目 | jenkins.war | jenkins.deb |
|---|---|---|
| 文件类型 | Java Web 应用(WAR 文件) | Debian 安装包(适用于 Ubuntu/Debian) |
| 用途 | 手动启动 Jenkins,适用于所有平台 | 自动安装 Jenkins 并配置服务,仅限 Debian 系列系统 |
| 启动方式 | 通过命令行运行:\java -jar jenkins.war |
安装后通过 systemd 或 init 启动:\sudo systemctl start jenkins |
| 包含内容 | 仅包含 Jenkins 核心程序 | 包含 Jenkins 核心程序 + 服务脚本 + 配置文件 |
| 安装路径 | 无固定路径,由用户决定 | 默认安装到:\/usr/share/jenkins/jenkins.war\/etc/default/jenkins 等 |
| 适合人群 | 高度自定义部署、跨平台用户 | 使用标准 Linux 服务管理的用户 |
| 升级方式 | 替换 .war 文件即可 |
使用 dpkg -i 或 apt upgrade 升级整个包 |
| 依赖管理 | 需手动安装 Java 环境等依赖 | 自动处理依赖(如 Java) |
| 服务管理 | 手动控制进程 | 使用 systemd 管理服务,支持自动启动等 |
✅ 选择建议
- 如果希望快速部署、跨平台运行 Jenkins(如在 Windows、macOS、Docker 中),推荐使用
jenkins.war。 - 如果在 Ubuntu 或 Debian 上运行 Jenkins,并希望使用系统服务管理、自动更新等功能,推荐使用
jenkins.deb。

