gitlab服务器配置的核心结论:8GB内存、4核CPU起步,用Omnibus包安装最省事,配置重点放在external_url、HTTPS和自动备份上。
gitlab服务器配置教程:从零到生产可用的完整步骤
很多团队第一次接触GitLab时,会被“服务器配置”这个词吓住,其实拆开看,配置过程无非是装依赖、装主程序、改几个关键参数、启动服务这几步,下面按生产环境标准走一遍。
gitlab服务器配置要求:硬件选型与系统准备
硬件选型直接决定GitLab跑起来是流畅还是卡顿,根据GitLab官方文档的建议,不同团队规模对资源的需求差异很大。
| 团队规模 | CPU核心数 | 内存 | 磁盘类型 | 建议存储空间 |
|---|---|---|---|---|
| 10人以内 | 2核 | 4GB | SSD | 100GB起 |
| 10-50人 | 4核 | 8GB | SSD | 300GB起 |
| 50-200人 | 8核 | 16GB | NVMe SSD | 1TB起 |
| 200人以上 | 16核+ | 32GB+ | NVMe SSD RAID | 2TB+ |
- 内存低于4GB时,GitLab的Web界面会出现超时,CI/CD任务可能直接失败。
- 磁盘必须用SSD,机械硬盘会让仓库操作延迟明显增加,尤其是大量小文件读写场景。
- 操作系统推荐Ubuntu 20.04/22.04 LTS或CentOS 7/8,保持内核版本较新即可,不必追最新发行版。
安装依赖与添加官方仓库
以Ubuntu 22.04为例,先更新系统并安装基础依赖:
sudo apt-get update sudo apt-get install -y curl openssh-server ca-certificates tzdata perl
接着添加GitLab官方仓库,这里用社区版(CE),免费且功能足够多数团队使用:
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
CentOS 7/8用户执行:
sudo yum install -y curl policycoreutils-python openssh-server perl curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
添加仓库后,安装主程序时直接指定external_url,这是最省事的方式:
sudo EXTERNAL_URL="https://gitlab.example.com" apt-get install gitlab-ce
EXTERNAL_URL会写进配置文件,决定后续的访问地址和Nginx监听配置。

公司搭建gitlab服务器配置的实操命令与关键参数
公司内部搭建GitLab服务器时,不能只满足于“装完能访问”,域名、HTTPS、邮件通知、备份这些参数要一次配好,避免后期返工。
核心配置文件修改
Omnibus安装方式下,所有配置集中在/etc/gitlab/gitlab.rb,修改后必须执行sudo gitlab-ctl reconfigure才会生效,下面是生产环境常用的配置片段:
external_url 'https://gitlab.example.com' # Nginx HTTPS 配置 nginx['redirect_http_to_https'] = true nginx['ssl_certificate'] = "/etc/gitlab/ssl/gitlab.example.com.crt" nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/gitlab.example.com.key" # 时区与备份路径 gitlab_rails['time_zone'] = 'Asia/Shanghai' gitlab_rails['backup_path'] = "/var/opt/gitlab/backups" gitlab_rails['backup_keep_time'] = 604800
redirect_http_to_https开启后,访问80端口会自动跳转443,避免用户用HTTP明文传输。- 证书文件需要提前放到指定目录,自签证书可以用Let’s Encrypt的certbot生成,也可以内部CA签发。
- 备份保留时间单位是秒,
604800表示保留7天,根据公司合规要求调整。
配置SMTP邮件通知
GitLab默认不配置SMTP时,用户收不到密码重置、合并请求提醒等邮件,在gitlab.rb中加入以下配置:
gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "smtp.qq.com" gitlab_rails['smtp_port'] = 465 gitlab_rails['smtp_user_name'] = "your_email@qq.com" gitlab_rails['smtp_password'] = "your_smtp_auth_code" gitlab_rails['smtp_domain'] = "qq.com" gitlab_rails['smtp_authentication'] = "login" gitlab_rails['smtp_enable_starttls_auto'] = true gitlab_rails['smtp_tls'] = true
改完后运行sudo gitlab-ctl reconfigure,再执行sudo gitlab-rails console进入控制台,用Notify.test_email('receiver@example.com', 'test', 'test body').deliver_now发送测试邮件。
初始化root密码与创建第一个项目
浏览器访问配置的域名,第一次会进入root密码设置页面,设置完成后登录,进入Admin Area可以创建用户、群组,建议立即创建普通管理员账号,避免直接使用root进行日常操作。
创建第一个项目时,选择“Create a project”,填好项目名,选择可见性级别,公司内部建议选“Internal”,只有登录用户可见。

gitlab服务器配置与github对比:自建和云服务怎么选
很多公司纠结于自建GitLab还是直接用GitHub,两者不是简单的替代关系,有各自合适的场景。
成本对比:长期看自建更可控
GitHub私有仓库按用户数收费,团队超过一定人数后,年费用会明显上升,自建GitLab的初期成本集中在服务器硬件或云主机,后续只有电费、带宽和运维人力,行业共识认为,对于20人以上的研发团队,自建GitLab在三年周期内的总成本通常低于同等规模的GitHub付费方案。
功能与维护对比
- GitLab自建可以完全控制数据存储位置,满足金融、政务等行业的合规要求。
- GitLab内置CI/CD,流水线配置写在
.gitlab-ci.yml里,与仓库深度集成;GitHub的Actions同样强大,但国内访问稳定性有时不如内网自建。 - 自建需要自己负责升级、备份、故障恢复,维护成本不能忽略,如果团队没有专职运维,用GitHub的托管服务更省心。
数据安全与合规场景
涉及源代码资产、客户数据或内部敏感信息的公司,多数会选择自建GitLab服务器,数据留在自己机房或私有云里,审计和访问控制都更直接,用GitHub时,数据存储在美国服务器,部分行业有数据出境限制,自建是合规刚需。
gitlab服务器配置避坑:性能调优与日常维护
装好GitLab之后,如果不做日常维护,跑几个月就可能出现内存溢出、磁盘占满、备份失败等问题。
内存优化与Sidekiq调优
GitLab默认的Puma worker数量和Sidekiq并发数偏保守,但内存小的时候又容易OOM,8GB内存的机器,建议在/etc/gitlab/gitlab.rb中调整:
puma['worker_processes'] = 2 puma['min_threads'] = 1 puma['max_threads'] = 4 sidekiq['concurrency'] = 10
- worker_processes不宜超过CPU核心数的一半。
- 如果内存吃紧,关闭Prometheus监控可以释放约1GB内存:
prometheus_monitoring['enable'] = false。 - 修改后执行
sudo gitlab-ctl reconfigure并重启相关服务。
定期备份与恢复验证
备份是GitLab运维的生命线,执行备份命令:
sudo gitlab-backup create
备份文件会生成在/var/opt/gitlab/backups目录,文件名包含时间戳,建议配置cron任务每天凌晨执行:

0 2 /usr/bin/gitlab-backup create CRON=1
备份之后必须定期做恢复演练,否则备份可能只是心理安慰,恢复命令:
sudo gitlab-backup restore BACKUP=备份文件名
注意恢复前需要停掉相关服务,具体步骤以GitLab官方恢复文档为准。
日志清理与磁盘空间释放
GitLab运行一段时间后,日志文件会占用大量空间,主要清理/var/log/gitlab/下的旧日志:
sudo gitlab-ctl cleanse
或者手动删除超过30天的日志:
find /var/log/gitlab/ -type f -name ".log" -mtime +30 -delete
Docker Registry的镜像存储也会膨胀,建议定期运行垃圾回收:在gitlab.rb中配置registry的GC策略,或者用sudo gitlab-ctl registry-garbage-collect手动触发。
gitlab服务器配置常见问题解答
gitlab服务器配置最低要求是什么?
根据GitLab官方文档,最低配置为2核CPU、4GB内存和20GB可用磁盘空间,但这是“能跑起来”的底线,只有10人以内的团队且很少使用CI/CD时才勉强可用,实际生产环境建议8GB内存起步,磁盘用SSD,存储空间至少100GB,内存低于4GB时,安装过程中可能出现资源不足报错,Web界面响应也会非常慢。
gitlab服务器配置多少钱?
自建GitLab服务器成本主要包括服务器硬件或云主机费用,以国内主流云厂商的4核8GB云主机为例,按年付费价格在几千元区间,加上100GB SSD云盘和带宽费用,一年总成本大致在5000元至1万元之间,如果用公司闲置的物理服务器,一次性硬件投入后,主要成本只剩电费和运维人力,相比GitHub按人头的订阅费用,团队规模越大,自建的单人年均成本越低。
gitlab服务器配置后访问502怎么办?
502错误多数情况是GitLab的Puma或Sidekiq进程没有正常启动,或者Nginx配置未生效,先执行sudo gitlab-ctl status查看各组件状态,如果puma或sidekiq为down状态,运行sudo gitlab-ctl restart puma sidekiq,如果组件都正常,检查/var/log/gitlab/nginx/gitlab_error.log,常见原因是端口冲突或证书路径错误,确认gitlab.rb中external_url的端口与服务器防火墙放行规则一致,改完配置后忘记执行sudo gitlab-ctl reconfigure也会导致502。
