1. CentOS7环境下Jenkins安装全指南
在持续集成/持续交付(CI/CD)的生态系统中,Jenkins作为开源的自动化服务器占据着核心地位。我最近在CentOS7系统上部署了一套轻量级CI/CD解决方案,其中Jenkins的安装配置是整套系统的关键环节。不同于Windows环境的一键安装,Linux系统下的Jenkins部署需要更多手动配置,但同时也带来了更高的灵活性和可控性。
选择CentOS7作为基础系统主要考虑到其长期支持(LTS)特性以及在企业环境中的广泛普及度。虽然CentOS8已经发布,但大量生产环境仍在使用CentOS7,这使得相关经验具有更广泛的适用性。本文将详细介绍从零开始安装Jenkins的全过程,包括依赖环境准备、安装方式选择、服务配置以及基础安全设置等关键环节。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 系统环境准备
2.1 基础系统要求
在开始安装Jenkins前,需要确保系统满足以下最低要求:
- CentOS7.4及以上版本(推荐7.9)
- 至少1GB可用内存(建议2GB以上)
- 至少10GB磁盘空间
- Java运行时环境(OpenJDK8或11)
提示:虽然Jenkins支持Java8和11,但官方推荐使用Java11以获得更好的性能和安全性支持。Java17目前尚未被正式支持。
2.2 系统更新与依赖安装
首先更新系统并安装必要工具:
bash复制sudo yum update -y
sudo yum install -y wget curl git unzip
设置主机名(可选但推荐):
bash复制sudo hostnamectl set-hostname jenkins-server
2.3 Java环境配置
安装OpenJDK11:
bash复制sudo yum install -y java-11-openjdk-devel
验证安装:
bash复制java -version
# 应显示类似:openjdk version "11.0.12" 2021-07-20 LTS
配置JAVA_HOME环境变量:
bash复制echo "export JAVA_HOME=$(dirname $(dirname $(readlink -f $(which java))))" | sudo tee -a /etc/profile
source /etc/profile
3. Jenkins安装与配置
3.1 添加Jenkins仓库
导入GPG密钥:
bash复制sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
添加官方仓库:
bash复制sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
3.2 安装Jenkins主程序
执行安装命令:
bash复制sudo yum install -y jenkins
国内用户可以使用清华镜像源加速下载:
bash复制sudo sed -i 's|https://pkg.jenkins.io/redhat-stable|https://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat-stable|g' /etc/yum.repos.d/jenkins.repo
3.3 服务管理与启动
设置开机自启并启动服务:
bash复制sudo systemctl enable jenkins
sudo systemctl start jenkins
检查服务状态:
bash复制sudo systemctl status jenkins
# 应显示"active (running)"
3.4 防火墙配置
开放8080端口(默认Jenkins端口):
bash复制sudo firewall-cmd --permanent --add-port=8080/tcp
sudo firewall-cmd --reload
如需修改默认端口(如改为8081):
bash复制sudo sed -i 's/JENKINS_PORT="8080"/JENKINS_PORT="8081"/g' /etc/sysconfig/jenkins
sudo systemctl restart jenkins
4. 初始设置与安全配置
4.1 获取初始管理员密码
首次访问Jenkins需要解锁:
bash复制sudo cat /var/lib/jenkins/secrets/initialAdminPassword
4.2 安装推荐插件
在初始化向导中选择"Install suggested plugins",这将安装包括Git、Pipeline等常用插件。
4.3 创建管理员账户
强烈建议创建专用管理员账户而非继续使用初始账户,设置强密码并妥善保存。
4.4 安全加固措施
-
配置全局安全:
- 进入"Manage Jenkins" > "Configure Global Security"
- 启用"Enable security"
- 选择"Matrix-based security"并分配适当权限
-
设置CSRF防护:
- 勾选"Prevent Cross Site Request Forgery exploits"
-
配置代理:
- 在"Manage Jenkins" > "Manage Plugins" > "Advanced"中设置更新代理(如需要)
5. 常见问题与解决方案
5.1 服务启动失败排查
检查日志定位问题:
bash复制sudo journalctl -u jenkins -xe
常见问题及解决:
-
端口冲突:
bash复制netstat -tulnp | grep 8080 # 如被占用,修改/etc/sysconfig/jenkins中的端口号 -
Java版本不兼容:
bash复制alternatives --config java # 选择正确的Java版本
5.2 插件安装失败处理
-
更换更新中心URL:
- 修改
/var/lib/jenkins/hudson.model.UpdateCenter.xml - 将
https://updates.jenkins.io/update-center.json替换为清华镜像源:
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
- 修改
-
手动安装插件:
- 从https://plugins.jenkins.io/下载.hpi文件
- 在"Advanced"选项卡中上传安装
5.3 性能优化建议
-
调整JVM参数:
bash复制# 编辑/etc/sysconfig/jenkins JENKINS_JAVA_OPTIONS="-Xms512m -Xmx1024m -XX:MaxRAMPercentage=70.0" -
限制构建保留数:
- 在job配置中设置"Discard old builds"
- 建议保留最近10-20次构建
-
使用轻量级执行器:
- 在"Manage Nodes and Clouds"中限制执行器数量
6. 与周边工具的集成
6.1 与Docker集成
安装Docker插件后配置:
- 安装"Docker"和"Docker Pipeline"插件
- 在"Manage Jenkins" > "Configure System"中添加Docker Cloud
- 配置Docker Host URI(通常为unix:///var/run/docker.sock)
6.2 与Gitea集成
实现Git仓库自动触发构建:
- 安装"Gitea"插件
- 在Gitea仓库设置中添加Webhook:
- URL: http://jenkins-server/gitea-webhook/post
- 触发事件: push
- 在Jenkins job中配置"Gitea触发构建"
6.3 使用Docker Compose部署
对于容器化部署方案,可创建docker-compose.yml:
yaml复制version: '3'
services:
jenkins:
image: jenkins/jenkins:lts
ports:
- "8080:8080"
- "50000:50000"
volumes:
- jenkins_home:/var/jenkins_home
environment:
- JAVA_OPTS=-Djenkins.install.runSetupWizard=false
volumes:
jenkins_home:
启动服务:
bash复制docker-compose up -d
7. 备份与恢复策略
7.1 定期备份配置
-
备份JENKINS_HOME目录:
bash复制tar -czvf jenkins-backup-$(date +%Y%m%d).tar.gz /var/lib/jenkins -
使用ThinBackup插件:
- 安装"ThinBackup"插件
- 配置定期全量和增量备份
7.2 灾难恢复步骤
-
停止Jenkins服务:
bash复制sudo systemctl stop jenkins -
恢复备份:
bash复制
tar -xzvf jenkins-backup-20230801.tar.gz -C / -
修复权限:
bash复制chown -R jenkins:jenkins /var/lib/jenkins -
重启服务:
bash复制sudo systemctl start jenkins
在实际部署中,我发现将Jenkins的workspace目录放在独立磁盘分区可以显著提升I/O性能,特别是在并发构建场景下。另外,定期清理$JENKINS_HOME/jobs/*/builds目录中的旧构建可以节省大量存储空间。
