Rocky Linux 9上GitLab CE 16.9.0保姆级安装指南:从依赖包到防火墙放行,一步不落
在开源协作开发领域,GitLab早已成为不可或缺的一站式DevOps平台。对于选择Rocky Linux 9作为生产环境的团队而言,如何高效、零差错地完成GitLab CE 16.9.0的部署,直接关系到后续研发流程的顺畅度。本文将手把手带你穿越安装过程中的所有雷区,确保每个环节都执行到位。
1. 环境准备:构建稳固基础
在开始安装前,我们需要确保系统环境达到GitLab运行的基本要求。Rocky Linux 9作为RHEL的兼容发行版,其稳定性已得到广泛验证,但仍需注意以下关键点:
- 硬件配置:官方建议至少4GB内存,实际生产环境推荐8GB以上。内存不足会导致Unicorn worker频繁崩溃。
- 存储空间:/var/opt/gitlab目录需要预留至少10GB空间,用于存储仓库数据。
- 网络环境:确保80/443端口可用,若使用自定义端口需提前规划。
首先更新系统所有已安装的软件包,这个步骤经常被忽略但却至关重要:
sudo dnf update -y && sudo reboot系统更新后建议重启以应用所有内核更新。接下来安装基础依赖组,这里有个常见陷阱——部分开发者会遗漏Perl模块:
sudo dnf groupinstall 'Development Tools' -y sudo dnf install perl policycoreutils openssh-server curl wget -y注意:如果遇到"Group 'Development Tools' not found"错误,可能是软件源未同步,可先执行
sudo dnf makecache
2. 软件包获取与安装:避开下载陷阱
GitLab官方为不同Linux发行版维护了独立的软件仓库。对于Rocky Linux 9(对应EL9),需要特别注意版本匹配问题。以下是经过验证的下载方式:
wget --content-disposition https://packages.gitlab.com/gitlab/gitlab-ce/packages/el/9/gitlab-ce-16.9.0-ce.0.el9.x86_64.rpm/download.rpm下载完成后,建议先验证软件包完整性:
rpm -K gitlab-ce-16.9.0-ce.0.el9.x86_64.rpm出现"digests signatures OK"提示后,再进行安装:
sudo rpm -ivh gitlab-ce-16.9.0-ce.0.el9.x86_64.rpm安装过程中常见的两个问题及解决方案:
| 问题现象 | 可能原因 | 解决方案 |
|---|---|---|
| 依赖缺失 | 未安装EPEL仓库 | sudo dnf install epel-release |
| 签名验证失败 | GPG密钥过期 | sudo rpm --import https://packages.gitlab.com/gpg.key |
3. 关键配置:那些容易被忽视的细节
安装完成后,最重要的就是/etc/gitlab/gitlab.rb文件的配置。以下是经过生产环境验证的最佳实践:
external_url 'http://your_domain_or_ip:port' nginx['listen_port'] = 88 nginx['listen_https'] = false gitlab_rails['time_zone'] = 'Asia/Shanghai'配置完成后,执行重配置命令。这个过程可能耗时较长(5-10分钟),期间不要中断:
sudo gitlab-ctl reconfigure重要提示:如果reconfigure卡在某个阶段超过15分钟,可以尝试
sudo systemctl restart gitlab-runsvdir后再试
4. 防火墙与访问控制:最后的防线
Rocky Linux 9默认使用firewalld作为防火墙管理工具。开放GitLab端口时需要特别注意顺序:
sudo firewall-cmd --permanent --add-service=http sudo firewall-cmd --permanent --add-port=88/tcp sudo firewall-cmd --reload验证端口是否真正开放:
sudo firewall-cmd --list-all如果使用SELinux(Rocky Linux默认启用),还需要额外设置:
sudo semanage port -a -t http_port_t -p tcp 885. 初始化访问与故障排查
首次访问GitLab前,需要获取初始root密码:
sudo cat /etc/gitlab/initial_root_password这个文件会在24小时后自动删除,建议立即修改密码。登录后如果遇到502错误,通常需要检查以下服务:
sudo gitlab-ctl status | grep -v 'run'常见服务异常处理方案:
- PostgreSQL启动失败:检查/var/opt/gitlab/postgresql/data目录权限
- Redis连接超时:执行
sudo gitlab-ctl restart redis - Sidekiq队列堆积:增加
sidekiq['concurrency']值并reconfigure
6. 性能调优与日常维护
对于资源有限的服务器,可以通过这些配置优化GitLab性能:
unicorn['worker_processes'] = 2 postgresql['shared_buffers'] = "256MB" sidekiq['concurrency'] = 5建议设置的定期维护任务:
# 每天凌晨3点执行垃圾回收 0 3 * * * /opt/gitlab/bin/gitlab-rake gitlab:cleanup:orphan_job_artifact_files # 每周日备份 0 2 * * 0 /opt/gitlab/bin/gitlab-backup create备份恢复测试方法:
sudo gitlab-ctl stop unicorn sudo gitlab-ctl stop sidekiq sudo gitlab-rake gitlab:backup:restore BACKUP=备份文件编号7. 安全加固措施
生产环境必须实施的安全配置:
gitlab_rails['gitlab_shell_ssh_port'] = 2222 gitlab_rails['rack_attack_git_basic_auth'] = { 'enabled' => true, 'ip_whitelist' => ["127.0.0.1"], 'maxretry' => 5, 'findtime' => 60, 'bantime' => 3600 }关键安全检查命令:
# 检查未打补丁的依赖 sudo gitlab-rake gitlab:check # 审计登录活动 sudo gitlab-rake gitlab:audit:events在实际运维中,我发现最容易被忽视的是定期更新GitLab版本。每次更新前,务必:
- 完整备份数据和配置
- 在测试环境验证升级过程
- 查看官方升级文档的特殊说明
- 选择维护窗口期进行操作