本教程采用jenkins.war的方式离线安装部署,在线下载的方式会遇到诸多问题,不宜采用
一、下载地址
地址:Jenkins download and deployment
下载最新的长期支持版
由于jenkins使用java开发的,所以需要安装的linux服务器装有jdk环境,并且jdk版本支持你所安装的jenkins版本
点击 Hardware and Software requirements,查看下载前的软硬件要求
根据所下载的长期支持的jenkin版本区间 ,判定支持的jdk版本
因为笔者下载的的是 2.440.2 版本,结合上图判定2.440.2在2.426.1之后,需要的linux服务器安装jdk版本为jdk 11、jdk 17或者jdk 21,三者任意一个都可以,所以最终我选择了jdk 21安装到linux服务器中
当然可能你所在的linux服务器已经安装了jdk 8 或者jdk 11,并且由于其他应用的原因不能再升级jdk,那只需要找到对应jdk支持的jenkins版本进行下载即可
从上图看出,如果linux服务器安装的 jdk 8 ,下载 2.346.1、2.164.1任意一个都可以
如果安装的是 jdk 17,下载2.346.1、2.361.1、2.426.1任意一个
安装的是jdk 11 则以上四个长期版本都支持。
对于历史版本的下载,点击 Past Releases 链接
找到对应的版本下载即可
二、上传jenkins.war包
笔者是安装在 /opt下,创建 jenkins文件夹,使用最高权限root用户登录linux服务器
cd /opt
sudo mkdir jenkins
ll
依次输入以上三条命令
进入新创建的jenkins文件夹
cd jenkins
笔者使用的是FinalShell工具上传jenkin.war,一款国产免费的linux服务器 连接工具,功能强大,不过有安全性问题不推荐生产环境使用,推荐使用Xshell和Xftp组合工具
进入jenkins文件夹后可以看到上传的jenkins.war包
三、启动jenkins
先约定jenkins的启动端口为9007,实际自行更改,保证端口不冲突即可
查看防火墙状态
systemctl status firewalld
防火墙开启状态,则开通 9007 端口 访问权限,并重载防火墙
-- 开通 9007 端口 访问权限
sudo firewall-cmd --permanent --add-port=9007/tcp
-- 重载防火墙
sudo firewall-cmd --reload
cd /opt/jenkins 键入以下命令启动
nohup java -jar jenkins.war --httpPort=9007 | tee jenkins.log 2>&1 &
命令解释如下:
1. nohup: 这是一个Unix/Linux命令,用于让程序在后台运行,即使用户注销也不会停止运行(No Hang Up)。使用 nohup 可以确保即使SSH会话关闭,Jenkins服务仍然持续运行
2. java -jar jenkins.war --httpPort=9007: 这是启动Jenkins服务的命令,其中 -jar 参数表示要执行包含在WAR文件中的主类(在这种情况下是Jenkins应用),--httpPort=9007 是指明Jenkins服务器监听的HTTP端口号为9007
3. | tee jenkins.log: | 是管道操作符,它将前一个命令的标准输出(stdout)传递给后续命令。tee 命令则接收这些输出,并同时完成两个任务:
将输出内容“复制”一份写入到 jenkins.log 文件中,相当于实时记录了Jenkins启动过程和运行时的日志信息。
继续将接收到的数据传递到下一个管道或者默认的标准输出(此处由于后面没有其他命令,就是当前终端),所以在终端上也能看到相同的日志输出
4. 2>&1: 这个符号组合将标准错误流(stderr)重定向到标准输出流(stdout)。这意味着不论是正常的程序输出还是错误信息,都将统一作为标准输出处理,所以不论是正常日志还是错误日志,都会经过管道并被tee命令捕捉
5. &: 最后的&符号用于将整个命令放入后台运行,使得命令执行后,控制台立刻返回到可输入状态,而无需等待该命令执行完毕
出现以上信息说明 jenkins启动成功 ,即使终端关闭也可以
初始用户名和密码 为 admin 103ed60c535f4c8daec0d81d66b9ea9d
初始admin用户密码如果忘记,则去 /root/.jenkins/secrets/initialAdminPassword 中寻找
使用 tail -f /root/.jenkins/secrets/initialAdminPassword 打开可以看到存储的初始jenkins密码
四、设置开机自启动
通过命令 nohup java -jar jenkins.war --httpPort=9007 | tee jenkins.log 2>&1 & 可以后台永久启动jenkins服务,但服务器一旦关闭重启,还是需要进入jenkins.war所在文件夹目录重新执行启动命令
4.1 创建并编辑jenkins.sh 脚本
首先 cd /opt/jenkins,创建jenkins.sh 脚本文件,随便放哪里都可以,但一般和jenkins.war处在同一个文件目录下
vim jenkins.sh
按 i 键 输入以下内容 ,红色部分为需要根据自己对应环境路径自行修改
#!/bin/bash
#主要目的用于开机启动服务,不然 启动jenkins.war包没有java -jar的>权限
JAVA_HOME=/usr/local/jdk/jdk-21.0.2
pid=`ps -ef | grep jenkins.war | grep -v 'grep'| awk '{print $2}'| wc -l`
if [ "$1" = "start" ];then
if [ $pid -gt 0 ];then
echo 'jenkins is running...'
else
#java启动服务 配置java安装根路径,和启动war包存的根路径
nohup $JAVA_HOME/bin/java -jar /opt/jenkins/jenkins.war>jenkins.log --httpPort=9007 2>&1 &
fi
elif [ "$1" = "stop" ];then
exec ps -ef | grep jenkins | grep -v grep | awk '{print $2}'| xargs kill -9
echo 'jenkins is stop..'
else
echo "Please input like this:"./jenkins.sh start" or "./jenkins stop""
fi
按下 esc键,输入 :wq 保存退出,键入以下命令赋予脚本可执行权限
chmod +x /opt/jenkins/jenkins.sh
4.2 检测jenkins.sh 脚本
在当前jenkins目录下输入
./jenkins.sh stop
浏览器刷新访问jenkins地址,无法访问
再输入启动命令启动
./jenkins.sh start
浏览器再次刷新发现启动成功
以上说明编写的 jenkins.sh 脚本文件没有问题
4.3 创建并编辑 jenkins.service 系统服务文件
键入命令
vim /lib/systemd/system/jenkins.service
按 i 键 输入以下命令
[Unit]
Description=Jenkins
After=network.target
[Service]
Type=forking
ExecStart=/opt/jenkins/jenkins.sh start
ExecReload=
ExecStop=/opt/jenkins/jenkins.sh stop
PrivateTmp=true
[Install]
WantedBy=multi-user.target
创建好服务后,执行命令刷新配置
systemctl daemon-reload
启动脚本
systemctl start jenkins.service
查看状态
systemctl status jenkins.service
设置开机自启动
systemctl enable jenkins.service
查看开机自启动的服务列表
systemctl list-units --type=service
看到已存在jenkins.service服务
输入 reboot重启验证,访问jenkins地址,开机自启动成功