告别CentOS后,我在Rocky Linux上为小团队搭建私有GitLab的实战记录
告别CentOS后我在Rocky Linux上为小团队搭建私有GitLab的实战记录当CentOS宣布转向Stream版本时我们这个小开发团队面临一个紧迫问题现有的代码托管服务即将失去官方支持。经过几轮技术评估我们最终选择了Rocky Linux作为替代系统并决定在其上部署GitLab社区版。这篇文章将分享我们从系统选型到GitLab部署的完整过程特别关注那些在官方文档中很少提及的实际操作细节。1. 技术选型为什么是Rocky Linux GitLab CE在CentOS停更后RHEL的衍生发行版如雨后春笋般涌现。我们最终选择Rocky Linux主要基于以下考虑二进制兼容性Rocky Linux承诺与RHEL 1:1兼容这意味着我们现有的脚本和工具链几乎无需修改长期支持每个主版本提供10年支持周期完美匹配企业级需求社区活跃度背后有成熟的公司支持同时保持开源社区属性至于代码托管平台GitLab CE版相比其他方案有几个不可替代的优势特性GitLab CE其他方案一体化平台内置CI/CD、Issue跟踪需要额外集成权限管理细粒度团队权限控制功能有限私有化部署完全内网隔离部分依赖公有云社区生态丰富的插件市场生态相对封闭在硬件准备上我们为这台GitLab服务器配置了4核CPU8GB内存100GB SSD存储千兆内网连接提示GitLab对内存较为敏感4GB是最低要求8GB才能保证中型团队流畅使用2. Rocky Linux系统准备与优化2.1 基础系统安装我们从Rocky Linux 9.2的最小化安装开始这是当前最新的稳定版本。安装过程中有几个关键选择分区方案采用LVM便于后期扩容只安装最小化环境减少不必要的服务启用自动安全更新安装完成后首先执行系统更新dnf -y update dnf -y upgrade然后安装基础工具集dnf -y install vim wget curl git lsof net-tools2.2 系统调优为提高GitLab性能我们对系统参数进行了以下调整修改/etc/sysctl.confvm.swappiness 10 net.core.somaxconn 1024 net.ipv4.tcp_fin_timeout 30调整文件描述符限制echo * soft nofile 65536 /etc/security/limits.conf echo * hard nofile 65536 /etc/security/limits.conf配置SSH增强安全sed -i s/#PermitRootLogin yes/PermitRootLogin no/ /etc/ssh/sshd_config echo AllowUsers gitlab-admin /etc/ssh/sshd_config systemctl restart sshd3. GitLab CE部署实战3.1 依赖安装GitLab需要一些基础依赖包dnf -y install postfix cronie policycoreutils-python-utils systemctl enable --now postfix安装开发工具链dnf -y groupinstall Development Tools dnf -y install perl3.2 GitLab安装配置我们选择官方仓库安装最新稳定版curl -s https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | bash dnf -y install gitlab-ce关键配置修改/etc/gitlab/gitlab.rbexternal_url http://192.168.10.100 nginx[listen_port] 8080 gitlab_rails[gitlab_shell_ssh_port] 2222 postgresql[shared_buffers] 256MB应用配置这个过程可能需要5-10分钟gitlab-ctl reconfigure3.3 防火墙设置开放必要的端口firewall-cmd --permanent --add-port{8080/tcp,2222/tcp} firewall-cmd --reload4. 团队协作配置4.1 初始安全设置首次登录后立即修改root密码启用双重认证配置SMTP邮件通知邮件配置示例/etc/gitlab/gitlab.rbgitlab_rails[smtp_enable] true gitlab_rails[smtp_address] smtp.yourdomain.com gitlab_rails[smtp_port] 587 gitlab_rails[smtp_user_name] gitlabyourdomain.com gitlab_rails[smtp_password] yourpassword gitlab_rails[smtp_domain] yourdomain.com gitlab_rails[smtp_authentication] login gitlab_rails[smtp_enable_starttls_auto] true4.2 项目与成员管理我们采用的分组结构infra存放部署脚本和运维文档backend后端服务代码库frontend前端项目mobile移动端应用权限设置要点主程序员Maintainer权限普通开发Developer权限实习生Reporter权限4.3 CI/CD初步配置在项目根目录添加.gitlab-ci.yml示例stages: - build - test - deploy build_job: stage: build script: - echo Building the application - make build test_job: stage: test script: - echo Running tests - make test deploy_job: stage: deploy script: - echo Deploying to staging - make deploy only: - main5. 运维监控与备份5.1 健康状态监控查看GitLab服务状态gitlab-ctl status关键监控指标内存使用确保不超过70%磁盘空间特别是/var/opt/gitlab响应时间首页加载应500ms5.2 备份策略每日全量备份gitlab-backup create备份文件默认存储在/var/opt/gitlab/backups我们额外配置了NFS挂载gitlab_rails[backup_path] /mnt/nfs/gitlab_backups gitlab_rails[backup_keep_time] 604800 # 保留7天5.3 常见问题处理问题1502错误gitlab-ctl restart unicorn gitlab-ctl restart sidekiq问题2磁盘空间不足gitlab-ctl stop rm -rf /var/opt/gitlab/git-data/repositories/hashed/* gitlab-ctl start问题3邮件发送失败gitlab-rails console ActionMailer::Base.deliveries经过三个月的实际运行这套环境表现稳定完全满足了我们15人开发团队的需求。最让我惊喜的是GitLab内置的CI/CD功能它让我们的部署效率提升了近40%。当然也遇到了一些坑比如初期没有限制仓库大小导致磁盘告警后来通过添加钩子脚本解决了这个问题。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2569159.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!