温馨提示×

gitlab linux配置要注意啥

小樊
42
2026-10-04 11:51:49
栏目: 智能运维

在 Linux 上配置 GitLab(通常指自建 GitLab CE/EE),有几个容易踩坑但非常关键的点。下面按「安装前 → 配置中 → 安全与运维」给你梳理。


一、安装前要注意

1. 硬件资源(最容易出问题)

GitLab 比较吃资源,官方最低配置并不适合生产:

  • CPU:生产建议 ≥ 4 核
  • 内存:
    • 最低 4G(会很卡)
    • 生产建议 8G 以上
  • 磁盘:
    • 系统盘 + 数据盘分离
    • 用 SSD
    • 预留仓库增长空间

⚠️ 内存不足会导致 Sidekiq / Puma 频繁 OOM


2. 系统版本选择

  • 推荐:Ubuntu 22.04 / 24.04 或 CentOS Stream / Rocky Linux
  • 内核尽量新一点
  • 不要混用第三方 Ruby / Git

3. 域名与 DNS

  • 提前准备好域名(如 git.example.com)
  • DNS A 记录指向服务器 IP
  • GitLab 强烈依赖域名,不要只用 IP

二、安装与配置重点

4. 使用官方仓库安装(别乱搞)

curl -fsSL https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
sudo EXTERNAL_URL="https://git.example.com" apt install gitlab-ce

5. 关键配置文件

路径:

/etc/gitlab/gitlab.rb

改完必须执行:

gitlab-ctl reconfigure

6. 外部访问地址(必改)

external_url 'https://git.example.com'

否则:

  • 邮件链接错误
  • Webhook 地址异常
  • CI 回调失败

7. HTTPS(强烈建议)

两种方式:

  • GitLab 自带 Let’s Encrypt
letsencrypt['enable'] = true
letsencrypt['auto_renew'] = true

或反向代理(Nginx / Traefik)


8. 邮箱配置(很多人漏)

不配邮箱 = 无法找回密码

示例(SMTP):

gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.example.com"
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = "gitlab@example.com"
gitlab_rails['smtp_password'] = "password"
gitlab_rails['gitlab_email_from'] = "gitlab@example.com"

测试:

gitlab-rails console
Notify.test_email('you@mail.com', 'test', 'test').deliver_now

三、安全与权限

9. 防火墙 & 端口

通常需要:

  • 22(SSH)
  • 80 / 443(Web)
  • 不对外暴露 8080 / 9090
ufw allow 22,80,443/tcp

10. 备份必须做

默认路径:

/var/opt/gitlab/backups

手动备份:

gitlab-rake gitlab:backup:create

建议:

  • 定时 cron
  • 备份到异地 / 对象存储

11. 用户与权限

  • 不要用 root 跑业务
  • GitLab 自带 git 用户
  • 仓库目录权限不要手动改

四、性能与运维

12. 常见性能调节

内存紧张时可调:

puma['worker_processes'] = 2
sidekiq['max_concurrency'] = 10

13. 日志与排查

常用命令:

gitlab-ctl status
gitlab-ctl tail
gitlab-rake gitlab:check

五、常见坑总结

❌ 用 IP 访问
❌ 内存 < 4G 还开 CI
❌ 不改 external_url
❌ 不配邮件
❌ 不备份
❌ 随便改 /var/opt/gitlab


如果你愿意,我可以:

  • 给你一份 生产级 gitlab.rb 示例
  • 或针对 Docker / Kubernetes / 内网环境 给方案

0 踩