GitLab 是一款集源代码管理、CI/CD、代码审查、安全扫描于一体的 DevOps 平台,其安装配置的核心结论是:在中小团队或云服务器场景下,推荐使用 Omnibus 包安装方式,并优先配置 HTTPS、备份策略与 Runner 注册,这样才能在稳定性和维护成本之间取得最佳平衡,如果盲目选择源码编译或 Docker 复杂编排,不仅部署周期长,后续升级和排错也会消耗大量精力,下面从安装前规划、具体配置步骤、优化建议三个层面展开。
安装前的环境规划
在动手安装之前,需要先明确三件事:操作系统版本、服务器硬件规格、域名与端口,GitLab 对内存比较敏感,官方建议最低 4GB RAM,但实际运行中 2GB 内存的机器在开启 Prometheus 监控后极易出现 502 错误。如果使用 2GB 或以下内存的云服务器,建议在安装后立即关闭不需要的组件,Prometheus、Grafana,域名方面,尽量使用独立域名而非 IP 访问,因为后续配置 Let‘s Encrypt 证书或 GitLab Pages 都需要域名支持。
安装步骤详解
选择安装方式
目前主流的安装方式有三种:
- Omnibus 包安装:适合绝大多数场景,所有组件打包在同一个目录,配置集中,升级方便。
- Docker 容器部署:适合已经深度使用 Kubernetes 或 Docker Compose 的团队,但数据卷和网络配置需要额外谨慎。
- 源码编译:仅适合二次开发或研究学习,生产环境强烈不建议。
我的建议是:生产环境直接使用 Omnibus 包,以 Ubuntu 20.04/22.04 为例,安装命令非常简洁,先将 GitLab 官方仓库添加到 apt 源,然后执行 apt install gitlab-ce 即可,安装完成后,核心配置文件位于 /etc/gitlab/gitlab.rb,所有关键参数都在此修改。
核心配置项说明

安装完成后,需要重点修改 gitlab.rb 中的以下参数:
external_url:设置为https://git.example.com,如果暂时没有证书,也可以先设为http://,但后续务必升级。gitlab_rails['backup_path']:建议设置为独立数据盘目录,避免系统盘占满导致服务异常。puma['worker_processes']:根据 CPU 核数调整,通常设置为核数减一即可,避免内存溢出。postgresql['shared_buffers']:内存较大的服务器可适当调高,但不要超过物理内存的 25%。
修改完成后,执行 gitlab-ctl reconfigure 让配置生效,这里有一个常见坑:如果修改了 external_url 但没有执行 reconfigure 就直接访问,页面会一直跳转错误。
开启 HTTPS 与强制跳转
HTTPS 是数据安全的底线,GitLab 支持内置 Let’s Encrypt 自动申请证书,只需在 gitlab.rb 中设置:
letsencrypt['enable'] = true
letsencrypt['contact_emails'] = ['admin@example.com']
执行 reconfigure 后,GitLab 会尝试自动签发证书,如果服务器 80 端口被占用或 DNS 解析未生效,证书申请会失败,此时可以先修复网络问题,再执行 gitlab-ctl renew-le-certs 手动触发,推荐在云厂商控制台将 443 端口安全组放行,并关闭 HTTP 明文访问。
配置 Runner 实现 CI/CD
GitLab 的核心优势之一就是内置 CI/CD,配置 Runner 时,推荐使用 Shell Executor 或 Docker Executor,对于简单项目,Shell Executor 更直观;对于需要隔离构建环境的团队,Docker Executor 是必须的。
安装 Runner 后,在 GitLab 项目页面获取注册令牌,然后执行:
gitlab-runner register
选择 docker 执行器,并指定镜像如 alpine:latest,注册完成后,记得在

.gitlab-ci.yml 中定义 pipeline,一个最小可用的示例:
stages:
- build
- deploy
build-job:
stage: build
script:
- echo "Building..."
deploy-job:
stage: deploy
script:
- echo "Deploying..."
优化与安全加固
内存优化方案
如果你使用的是酷番云高性价比云服务器,内存可能只有 2GB 或 4GB,此时建议关闭不需要的监控组件:
prometheus_monitoring['enable'] = false
grafana['enable'] = false
同时将 gitaly['max_old_revisions'] 调低,并开启 gitlab_rails['env'] 中的 MALLOC_CONF=dirty_pages:0,可以减少碎片内存占用,按照该方案,2GB 内存机器可稳定支撑 50 人以下团队的日常使用。
数据备份策略
备份是 GitLab 运维中最容易被忽视的一环,建议使用 crontab 定时执行:
gitlab-backup create
备份文件会默认存放在 /var/opt/gitlab/backups。注意:备份只包含 Git 仓库和数据库,不包含 gitlab.rb 配置文件,因此还需要额外备份 /etc/gitlab 目录,恢复时执行 gitlab-backup restore BACKUP=时间戳,并确保备份版本与目标版本一致。
安全访问控制
- 启用登录限制:在管理后台设置密码强度、登录重试次数限制。
- 开启两步验证(2FA):对所有管理员和开发者强制启用。
- 限制公网访问:如果仅内网使用,建议通过防火墙或安全组限制来源 IP。
经验案例:酷番云 4GB 配置实战
我们曾协助一位独立开发者部署 GitLab,服务器为酷番云 4GB 内存云主机,系统 Ubuntu 22.04,安装 Omnibus 包后,默认配置下内存占用直接超过 3.5GB,服务频繁卡顿,随后我们执行了以下优化组合:
- 关闭 Prometheus、Grafana、Jaeger 三件套
- 将 Puma 工作线程从默认 8 个降到 2 个
- 将 PostgreSQL 的
shared_buffers从默认值调低到 512MB - 将 Sidekiq 并发数从 25 降到 10

优化后,整体内存占用从 3.5GB 降到 1.8GB,GitLab 响应速度明显提升,同时配置了每日凌晨 3 点的自动备份,将备份文件上传至酷番云对象存储,实现异地容灾,该方案已稳定运行半年,期间未发生一次 502 故障。
常见问题解答
GitLab 安装后访问出现 502 错误,如何排查?
502 通常代表 PostgreSQL 或 Puma 未能正常启动,首先查看服务状态:
gitlab-ctl status
若显示 down,则查看对应日志,如 /var/log/gitlab/puma/current,最常见的两个原因:一是内存不足,Puma 被 OOM Killer 杀掉;二是 /etc/gitlab/gitlab.rb 中配置了错误的端口导致端口冲突。建议先执行 free -m 检查内存,再通过 gitlab-ctl tail 查看所有组件日志,定位到具体组件后调整配置并重启。
如何将已有的 SVN 或 GitHub 仓库迁移到 GitLab?
迁移 GitHub 非常简单,在 GitLab 新建项目时选择 Import project,然后输入 GitHub 仓库地址,GitLab 会自动抓取代码、Issues 和 Pull Request,SVN 迁移则需要先使用 git svn clone 将 SVN 仓库转换为 Git 仓库,然后添加 GitLab 远程地址并推送。注意 SVN 的历史提交者邮箱需要做映射,否则 Git 提交记录中用户信息会缺失,迁移后建议立即在 GitLab 中开启仓库镜像或保护分支,确保主分支不被强制推送。
如果您在安装或迁移中遇到任何问题,或想了解酷番云上 GitLab 的专属性能调优方案,欢迎在评论区留言,也可以直接联系酷番云技术支持获取一键部署脚本,您的实践反馈会帮助更多团队少踩坑。
图片来源于AI模型,如侵权请联系管理员。作者:酷小编,如若转载,请注明出处:https://www.kufanyun.com/ask/734765.html

