在 CentOS 上部署 Jenkins 的实用方法
一 环境准备
- 更新系统并安装 Java(推荐 OpenJDK 11,也可使用 OpenJDK 8):
- sudo yum update -y
- sudo yum install -y java-11-openjdk-devel
- 验证:java -version
- 说明:Jenkins 2.x 在 Java 8/11 上均可运行,生产环境更推荐 Java 11。
二 方法一 YUM 仓库安装(推荐)
- 导入官方仓库与 GPG 密钥:
- sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
- sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
- 安装并启动服务:
- sudo yum install -y jenkins
- sudo systemctl start jenkins
- sudo systemctl enable jenkins
- 访问与初始化:
- 浏览器访问:http://<服务器IP>:8080
- 初始管理员密码路径:/var/lib/jenkins/secrets/initialAdminPassword
- 防火墙放行(firewalld):
- sudo firewall-cmd --permanent --add-port=8080/tcp
- sudo firewall-cmd --reload
- 可选:修改端口或运行用户
- 编辑:/etc/sysconfig/jenkins(如 JENKINS_PORT、JENKINS_USER)
- 修改后执行:sudo systemctl daemon-reload && sudo systemctl restart jenkins。
三 方法二 Docker 部署(简洁可移植)
- 安装 Docker(若未安装):
- sudo yum install -y docker
- sudo systemctl start docker && sudo systemctl enable docker
- 运行 Jenkins 容器(LTS,持久化数据卷 + 代理端口):
- docker run -d --name jenkins
-p 8080:8080 -p 50000:50000
-v jenkins-data:/var/jenkins_home
jenkins/jenkins:lts
- 访问与初始化:
- 浏览器访问:http://<服务器IP>:8080
- 初始密码可在容器内查看:
- docker exec -it jenkins cat /var/jenkins_home/secrets/initialAdminPassword
- 说明:映射 50000 端口用于与 Jenkins Agent 通信。
四 方法三 WAR 包运行(轻量、无需系统服务)
- 下载并启动:
- wget https://get.jenkins.io/war-stable/latest/jenkins.war
- nohup java -jar jenkins.war --httpPort=8080 > jenkins.log 2>&1 &
- 查看初始密码:
- tail -f jenkins.log(日志中会输出初始管理员密码)
- 访问:http://<服务器IP>:8080
- 说明:适合快速试用或容器化之外的极简部署。
五 常见问题与优化
- 证书错误(导入仓库失败):
- sudo yum install -y ca-certificates
- 重新执行仓库导入与安装命令
- 插件镜像加速(首次启动慢或卡在“Jenkins 正在启动”):
- 修改文件:/var/lib/jenkins/hudson.model.UpdateCenter.xml
- 将 updates.jenkins-ci.org 替换为镜像源(如 mirror.xmission.com/jenkins/updates)
- 重启:sudo systemctl restart jenkins
- 日志与故障排查:
- 系统服务日志:/var/log/jenkins/jenkins.log
- 容器日志:docker logs -f jenkins
- 安全建议:
- 不建议以 root 运行 Jenkins;如需变更运行用户,请调整 systemd 单元或 /etc/sysconfig/jenkins 后重载并重启
- 开放 8080/50000 端口时仅限内网或配合反向代理与 HTTPS。