Rocky Linux 9上GitLab CE 16.9.0保姆级安装指南从依赖包到防火墙配置一步不落如果你正在寻找一份能让新手也能轻松上手的GitLab安装指南那么你来对地方了。本文将带你从零开始在Rocky Linux 9系统上完整部署GitLab CE 16.9.0版本。不同于普通的安装教程我们不仅会告诉你怎么做还会解释为什么这么做让你在操作过程中真正理解每个步骤的意义。对于刚接触Rocky Linux的开发者或运维人员来说GitLab的安装可能会遇到各种坑——从依赖包缺失到配置文件错误从端口冲突到防火墙设置。本指南将逐一解决这些问题确保你能够顺利完成安装并立即开始使用这个强大的代码托管平台。1. 环境准备与系统配置在开始安装GitLab之前我们需要确保Rocky Linux 9系统已经做好了充分准备。这一阶段的工作将为后续的安装打下坚实基础避免因环境问题导致的安装失败。1.1 系统更新与基础工具安装首先我们需要确保系统是最新的并安装一些基础工具包# 更新系统所有软件包 sudo dnf -y update # 安装常用工具和开发工具组 sudo dnf -y install vim wget curl sudo dnf -y groupinstall Development ToolsDevelopment Tools组包含了许多开发所需的工具链如gcc、make等这些是GitLab运行时的依赖。虽然GitLab本身是用Ruby编写的但它的某些组件需要这些工具来编译本地扩展。1.2 安装必要依赖GitLab运行需要一些特定的依赖包# 安装GitLab所需的依赖 sudo dnf -y install perl policycoreutils openssh-server postfix这些依赖包各自的作用perlGitLab的部分管理脚本使用Perl编写policycoreutils提供SELinux相关工具openssh-server用于SSH访问Git操作需要postfix邮件服务器用于GitLab的通知功能提示如果你计划使用其他邮件服务如Sendmail或外部SMTP可以跳过postfix的安装后续在GitLab配置中设置。1.3 配置SELinux和防火墙Rocky Linux默认启用了SELinux和firewalld我们需要进行适当配置# 设置SELinux为permissive模式重启后生效 sudo sed -i s/SELINUXenforcing/SELINUXpermissive/g /etc/selinux/config sudo setenforce 0 # 确保SSH服务已启动并加入开机启动 sudo systemctl enable --now sshd2. GitLab CE安装与初始配置2.1 下载GitLab CE安装包我们将直接从GitLab官方仓库下载最新版本的RPM包# 下载GitLab CE 16.9.0 RPM包 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包 rpm -K gitlab-ce-16.9.0-ce.0.el9.x86_64.rpm你应该看到类似gitlab-ce-16.9.0-ce.0.el9.x86_64.rpm: sha256 md5 OK的输出表示包未被篡改。2.2 安装GitLab CE使用rpm命令安装下载的包# 安装GitLab CE sudo rpm -ivh gitlab-ce-16.9.0-ce.0.el9.x86_64.rpm安装过程会自动创建gitlab用户和组设置必要的系统目录结构安装所有Ruby gem依赖配置初始化脚本安装完成后你会看到类似下面的输出Thank you for installing GitLab! GitLab should be available at http://your-server-ip2.3 初始配置GitLabGitLab的主要配置文件位于/etc/gitlab/gitlab.rb。我们需要修改几个关键配置# 编辑GitLab配置文件 sudo vim /etc/gitlab/gitlab.rb找到并修改以下配置项假设服务器IP为192.168.100.10使用88端口external_url http://192.168.100.10:88 nginx[listen_port] 88配置说明配置项说明默认值external_urlGitLab的外部访问URLhttp://gitlab.example.comnginx[listen_port]Nginx监听的端口80或443注意如果你计划使用HTTPS需要额外配置SSL证书。本文暂不涉及HTTPS配置。保存文件后应用配置# 重新配置GitLab此过程可能需要5-10分钟 sudo gitlab-ctl reconfigure这个命令会根据配置文件生成所有组件PostgreSQL, Redis, Nginx等的配置设置数据库结构初始化各种服务3. 防火墙配置与访问控制3.1 配置防火墙规则我们需要允许HTTP端口88通过防火墙# 添加防火墙规则 sudo firewall-cmd --permanent --add-servicehttp sudo firewall-cmd --permanent --add-port88/tcp sudo firewall-cmd --reload验证规则是否生效sudo firewall-cmd --list-all你应该在输出中看到88端口被允许。3.2 获取初始root密码GitLab安装后会生成一个随机root密码存储在以下文件中# 查看初始root密码 sudo cat /etc/gitlab/initial_root_password输出类似Password: U1qM4xoOILCrCZWlFn4l0vw3lK0pvnU84MkyG2kO5AI重要首次登录后应立即更改此密码因为该文件将在首次reconfigure后24小时自动删除。3.3 启动GitLab服务虽然gitlab-ctl reconfigure已经启动了服务但为了确保所有服务正常运行可以执行# 重启所有GitLab服务 sudo gitlab-ctl restart检查服务状态sudo gitlab-ctl status正常输出应显示所有服务如nginx、postgresql、redis等都在运行。4. 访问GitLab与初始设置4.1 首次访问GitLab在浏览器中访问配置的URL如http://192.168.100.10:88你将看到GitLab的登录页面。使用以下凭据登录用户名root密码之前获取的initial_root_password中的密码4.2 更改root密码首次登录后系统会强制要求更改root密码点击右上角用户头像 → Settings选择左侧菜单中的Password输入当前密码和新密码点击Save password4.3 创建第一个项目现在可以创建你的第一个Git项目点击导航栏中的Create project输入项目名称如my-first-project选择可见性级别Private/Internal/Public点击Create project4.4 配置SSH密钥为了通过SSH推送代码需要添加SSH公钥点击右上角用户头像 → Settings选择左侧菜单中的SSH Keys粘贴你的公钥内容通常位于~/.ssh/id_rsa.pub点击Add key如果你还没有SSH密钥可以在终端生成ssh-keygen -t rsa -b 4096 -C your_emailexample.com cat ~/.ssh/id_rsa.pub5. 常见问题排查与优化5.1 安装过程中的常见问题问题1reconfigure命令卡住如果gitlab-ctl reconfigure似乎卡住了可以尝试# 查看具体运行状态 sudo gitlab-ctl tail常见卡住原因服务器资源不足至少4GB内存推荐磁盘空间不足至少4GB空闲空间网络问题导致无法下载依赖问题2502错误访问GitLab时出现502错误可能原因内存不足尝试增加swap空间Nginx配置错误检查/var/log/gitlab/nginx/error.log端口冲突确保没有其他服务占用88端口5.2 性能优化建议对于生产环境建议调整以下配置# /etc/gitlab/gitlab.rb unicorn[worker_processes] 4 # 根据CPU核心数调整 sidekiq[concurrency] 25 # 根据内存大小调整 postgresql[shared_buffers] 256MB # 数据库内存缓存调整后重新配置sudo gitlab-ctl reconfigure5.3 备份与恢复设置定期备份# 手动备份 sudo gitlab-rake gitlab:backup:create # 自动备份每天2点 sudo crontab -e 添加0 2 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create备份文件默认存储在/var/opt/gitlab/backups目录。恢复备份# 停止相关服务 sudo gitlab-ctl stop unicorn sudo gitlab-ctl stop sidekiq # 恢复备份将BACKUP_TIMESTAMP替换为实际备份时间戳 sudo gitlab-rake gitlab:backup:restore BACKUPBACKUP_TIMESTAMP # 重启服务 sudo gitlab-ctl restart6. 进阶配置与维护6.1 邮件通知配置要启用邮件通知编辑/etc/gitlab/gitlab.rbgitlab_rails[smtp_enable] true gitlab_rails[smtp_address] smtp.example.com gitlab_rails[smtp_port] 587 gitlab_rails[smtp_user_name] gitlabexample.com gitlab_rails[smtp_password] yourpassword gitlab_rails[smtp_domain] example.com gitlab_rails[smtp_authentication] login gitlab_rails[smtp_enable_starttls_auto] true gitlab_rails[gitlab_email_from] gitlabexample.com应用配置并测试邮件sudo gitlab-ctl reconfigure sudo gitlab-rails console Notify.test_email(recipientexample.com, Test Subject, Test Body).deliver_now6.2 监控与日志GitLab内置了Prometheus和Grafana用于监控访问监控仪表板Prometheus:http://your-server-ip:9090Grafana:http://your-server-ip:3000(默认用户名/密码admin/admin)查看日志# 查看所有组件日志 sudo gitlab-ctl tail # 查看特定组件日志如nginx sudo gitlab-ctl tail nginx6.3 定期维护建议的维护任务每周检查磁盘空间df -h检查备份是否成功每月更新GitLab到最新版本检查日志文件大小必要时轮转每季度审查用户和项目清理不活跃资源检查系统资源使用情况必要时升级服务器升级GitLab版本# 下载新版RPM包 wget --content-disposition https://packages.gitlab.com/gitlab/gitlab-ce/packages/el/9/gitlab-ce-latest.el9.x86_64.rpm/download.rpm # 安装更新 sudo rpm -Uvh gitlab-ce-*.rpm sudo gitlab-ctl reconfigure