🧱 一、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 应该不再报错。