centos部署jenkins的注意事项
小樊
42
2025-12-09 20:15:35
CentOS 部署 Jenkins 注意事项
一 环境与版本选择
- 选择与系统匹配的 Java 版本:Jenkins 2.361+ 建议使用 Java 11 或 Java 17(OpenJDK 或 Oracle JDK 均可)。安装后执行
java -version 验证,必要时用 alternatives --config java 设置默认版本。避免使用过旧或不受支持的 JDK。
- 系统资源基线:至少 2 GB 内存(生产建议 4 GB+)、10 GB+ 磁盘,并确保可访问互联网以下载 Jenkins 与插件。
- 仓库与安装方式:优先使用官方 YUM 仓库安装稳定版,导入 GPG 并校验仓库文件,避免随意使用第三方 RPM 包。
二 安装与端口配置
- 安装步骤要点:导入 Jenkins GPG 密钥、添加 jenkins.repo、执行
yum install jenkins -y,随后 systemctl enable --now jenkins 启动服务。
- 端口与防火墙:默认监听 8080。开放端口建议用
firewall-cmd --permanent --add-port=8080/tcp && firewall-cmd --reload;如使用云服务器,还需在 安全组放行对应端口。
- 修改默认端口:编辑
/etc/sysconfig/jenkins 中的 JENKINS_PORT 或 systemd 单元中的 Environment="JENKINS_PORT=新端口",改后 systemctl daemon-reload && systemctl restart jenkins。
- 避免端口冲突:部署前用
ss -tlnp | grep 8080 检查占用,必要时更换端口或停止占用进程。
三 首次启动与安全加固
- 解锁与初始化:首次访问
http://<IP>:8080,使用 /var/lib/jenkins/secrets/initialAdminPassword 解锁,按需安装 推荐插件 或精简插件集,创建 管理员账户。
- 安全配置要点:
- 禁用或严格限制 匿名访问,采用基于角色的访问控制(RBAC)。
- 启用 CSRF 保护 与 代理兼容头(如 X-Forwarded-For/Proto),在反向代理或负载均衡后尤为重要。
- 建议配置 HTTPS(Nginx/Apache 反向代理 + 有效证书),避免明文传输凭据与构建产物。
- 谨慎调整运行用户:不建议直接改为 root;如确需提升权限,应确保最小权限与严格的目录/文件权限控制。
- 升级与更新:定期更新 Jenkins 与插件,先备份再升级,变更窗口内评估插件兼容性与回滚方案。
四 常见故障排查
- 启动失败与 Java 路径:若
systemctl status jenkins 提示找不到 /usr/bin/java,建立软链 ln -s /usr/java/jdk-17.0.4/bin/java /usr/bin/java,或在 systemd 单元中显式设置 Environment="JAVA_HOME=/usr/java/jdk-17.0.4" 后 daemon-reload。
- 权限与目录:确保 /var/lib/jenkins /var/log/jenkins /var/cache/jenkins 归属与权限正确(通常与
JENKINS_USER 一致),避免因权限不足导致启动或构建失败。
- 端口占用:修改端口前确认占用情况,必要时
kill 相关进程后再启动。
- 插件安装慢或失败:在 Manage Plugins → Advanced 将更新站点更换为国内镜像(如清华源),或使用
jenkins-cli.jar 命令行安装关键插件。
- 日志与诊断:
journalctl -u jenkins -f 实时查看启动日志,tail -f /var/log/jenkins/jenkins.log 定位运行期问题。
五 性能与维护建议
- 资源与并发:根据 CPU/内存 合理设置 JVM 堆(如
-Xms/-Xmx)、限制 并发构建数,避免资源争用导致构建抖动或失败。
- 存储与清理:定期清理 工作空间 与 构建历史,启用 Workspace Cleanup 等插件,防止磁盘被历史产物占满。
- 监控与告警:安装 Monitoring 插件监控 JVM/HTTP/线程/队列,设置阈值告警,提前识别性能瓶颈。
- 备份与恢复:定期备份 /var/lib/jenkins(含 jobs、credentials、plugins 等)、/etc/sysconfig/jenkins 与 /var/log/jenkins;建议脚本化与异地保存,验证可恢复性。
- 扩展与分布式:构建压力大时引入 Agent/节点 或 Kubernetes 动态代理,将任务分摊,减轻 Master 负载。