GitLab FOSS v18.11.4 日常维护命令(Omnibus 包,主流部署方式)

说明:这个版本是 Omnibus GitLab(gitlab-foss 打包版),自带内置PostgreSQL、Redis、Workhorse、GitLab Shell,管理统一用 gitlab-ctl,不是源码编译那种。 前提:root 或 sudo 权限

一、启停 & 状态查看(最常用)

# 查看所有组件运行状态
sudo gitlab-ctl status

# 启动全部GitLab服务
sudo gitlab-ctl start

# 停止全部GitLab服务
sudo gitlab-ctl stop

# 优雅重启(推荐,会等待请求处理完,加载配置)
sudo gitlab-ctl restart

# 重载配置(修改gitlab.rb后执行,不重启进程,部分组件需restart)
sudo gitlab-ctl reconfigure

# 只重载配置,不做全量reconfigure(部分配置生效有限)
sudo gitlab-ctl hup

# 快速硬重启(不优雅,生产慎用)
sudo gitlab-ctl restart

# 单独启停某个组件(按需)
sudo gitlab-ctl stop postgresql
sudo gitlab-ctl start redis
sudo gitlab-ctl restart gitlab-workhorse
sudo gitlab-ctl restart puma
sudo gitlab-ctl restart sidekiq
sudo gitlab-ctl restart kas

核心组件对应:

  • puma:Rails Web主服务(GitLab Web/API)
  • sidekiq:后台异步任务(CI、邮件、仓库后台任务)
  • gitlab-workhorse:反向代理、大文件、Git HTTP请求
  • gitlab-shell:SSH仓库访问
  • postgresql:内置数据库 main + ci
  • redis:缓存、任务队列
  • gitlab-kas:Kubernetes agent服务

二、日志查看(排查故障)

# 实时查看全部日志
sudo gitlab-ctl tail

# 单独看某个组件日志
sudo gitlab-ctl tail puma
sudo gitlab-ctl tail sidekiq
sudo gitlab-ctl tail postgresql
sudo gitlab-ctl tail gitlab-workhorse
sudo gitlab-ctl tail redis

三、数据库维护(内置PostgreSQL 17.8)

⚠️ 操作数据库前强烈建议备份,操作尽量在业务低峰

# 进入gitlab内置psql控制台(main库)
sudo gitlab-ctl psql

# CI数据库进入
sudo gitlab-ctl psql --dbname=gitlab_ci

# 数据库vacuum(清理脏数据,优化表,低峰执行)
sudo gitlab-ctl pg-ctl vacuum

# 数据库备份(omnibus内置备份,默认备份仓库+数据库)
sudo gitlab-backup create

# 备份配置文件(gitlab.rb+ssh密钥等,单独备份,不要和数据库备份放一起)
sudo cp /etc/gitlab/gitlab.rb /etc/gitlab/gitlab.rb.bak.$(date +%Y%m%d)
sudo gitlab-ctl backup-etc

# 恢复备份(流程:停止puma/sidekiq → 恢复 → reconfigure → 启动)
# sudo gitlab-ctl stop puma sidekiq
# sudo gitlab-backup restore BACKUP=备份编号
# sudo gitlab-ctl start puma sidekiq

四、Redis维护(内置Redis 7.2.11)

# 进入内置redis-cli
sudo gitlab-ctl redis-cli

# 清理redis缓存(谨慎!生产会中断在线任务)
# FLUSHALL

五、版本检查 & 自检命令

# 查看gitlab完整版本信息(核对你当前v18.11.4)
sudo gitlab-rake gitlab:env:info

# GitLab系统自检(非常重要!配置、权限、存储、数据库检查)
sudo gitlab-rake gitlab:check

# 检查Gitaly仓库存储健康
sudo gitlab-rake gitlab:gitaly:check

六、Rails控制台(高级运维,谨慎执行写操作)

# 进入GitLab Rails控制台(Ruby on Rails)
sudo gitlab-rails console

# 进入rake任务环境
sudo gitlab-rake

七、磁盘&仓库维护(清理旧工件、日志)

# 清理CI旧构建产物(artifacts),可加参数限定天数
sudo gitlab-rake gitlab:cleanup:artifacts

# 清理过期LFS文件
sudo gitlab-rake gitlab:cleanup:lfs

# 清理旧日志轮转(系统层面,可配合logrotate,omnibus自带logrotate)
# 查看磁盘占用
df -h
du -sh /var/opt/gitlab/

八、配置文件路径

主配置:/etc/gitlab/gitlab.rb
gitlab-secrets.json:/etc/gitlab/gitlab-secrets.json
数据目录:/var/opt/gitlab/
日志目录:/var/log/gitlab/

生产运维最佳实践要点

  1. 修改 /etc/gitlab/gitlab.rb 之后,必须执行 gitlab-ctl reconfigure,才会渲染所有组件配置;
  2. 重启优先用 gitlab-ctl restart,不要直接systemd kill进程;
  3. 备份分为两部分:gitlab-backup(代码库+DB) + gitlab-ctl backup-etc(配置与密钥),缺一不可;
  4. PostgreSQL vacuum、清理CI工件放在凌晨低峰;
  5. v18.x 已经用Puma,不再是Unicorn,排查Web慢优先看 puma 日志;Sidekiq负责CI任务堆积;
  6. GitLab KAS 是k8s代理,不用k8s集群可以在gitlab.rb里关闭kas减少资源占用。

systemd 底层命令(备选,不推荐优先使用)

omnibus本质注册了systemd单元,应急可以:

systemctl status gitlab-runsvdir
systemctl stop gitlab-runsvdir
systemctl start gitlab-runsvdir

 

下一篇 多租户反馈平台MultiFeedbackSystem