CentOS 上部署 Jenkins 的常见问题与排查
一 服务无法启动与 Java 问题
- 典型现象:执行 systemctl start jenkins 失败,或状态异常。优先检查:
- Java 是否已安装且版本匹配:java -version;新版 Jenkins 建议使用 JDK 11 或 JDK 17。
- 服务配置中的 Java 路径是否正确:编辑 /usr/lib/systemd/system/jenkins.service,在 Environment 中显式设置 JAVA_HOME(如:/usr/lib/jvm/java-11-openjdk),随后执行 systemctl daemon-reload 再启动。
- 老版本 RPM 包可能读取 /etc/rc.d/init.d/jenkins 的候选 Java 列表,若未包含实际 JDK,需在该脚本的 candidates 中追加 Java 路径。
- 目录权限问题:确保 /var/lib/jenkins /var/cache/jenkins /var/log/jenkins 归属 jenkins:jenkins,否则会因权限不足导致启动失败。
- 仍无法定位时,查看日志:journalctl -u jenkins -n 50 --no-pager 或 tail -n 50 /var/log/jenkins/jenkins.log。
二 端口冲突与防火墙
- 端口冲突:默认端口 8080 常被其他服务占用。检查并处置:
- 查看占用:ss -tulnp | grep 8080 或 netstat -tulnp | grep 8080;停用占用者或修改 Jenkins 端口。
- 修改端口:编辑 /etc/sysconfig/jenkins 的 JENKINS_PORT,或编辑 /usr/lib/systemd/system/jenkins.service 的 Environment=JENKINS_PORT=xxxx,随后 systemctl daemon-reload && systemctl restart jenkins。
- 防火墙与 SELinux:
- firewalld 放行端口:firewall-cmd --permanent --add-port=8080/tcp && firewall-cmd --reload;或放行服务:firewall-cmd --permanent --add-service=jenkins && firewall-cmd --reload。
- 若仍无法访问,排查 SELinux 是否拦截(必要时临时 setenforce 0 验证,再按策略放行)。
三 访问异常 404 与 403
- 404 页面:
- 服务未启动或端口不对;检查 systemctl status jenkins 与 ss -tulnp | grep 8080。
- 反向代理路径错误(Nginx/Apache)导致上下文路径不匹配;核对代理的 location 与 JENKINS_PREFIX,必要时在 /etc/default/jenkins 中设置 JENKINS_PREFIX。
- 403 禁止:
- 常见于权限配置不当或安全策略限制;核对 /var/lib/jenkins 等目录权限与运行用户。
- 首次访问若提示权限不足,确认以 jenkins 用户运行且目录属主正确。
四 插件与更新源问题
- 更新站点超时或速度慢:
- 在 Manage Jenkins → Manage Plugins → Advanced 将 Update Site 改为国内镜像,例如:https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json,保存后重启。
- 插件导致启动失败:
- 进入安全模式(启动时跳过加载插件),禁用有问题的插件,再逐个启用定位;或先备份后清理 $JENKINS_HOME/plugins 再重装。
五 初始化与权限配置要点
- 初始管理员密码:位于 /var/lib/jenkins/secrets/initialAdminPassword,首次访问 http://:8080 使用。
- 运行用户与目录权限:
- 默认以 jenkins 用户运行,确保 /var/lib/jenkins /var/cache/jenkins /var/log/jenkins 属主为 jenkins:jenkins;不建议直接改为 root,如确需,务必同步修改目录属主并重启。
- 修改端口或运行用户后:
- 涉及 systemd 单元需执行 systemctl daemon-reload;涉及 SysV 脚本需重启服务;变更后通过 systemctl status jenkins 与日志核验。