说明:这个版本是 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 + ciredis:缓存、任务队列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/
生产运维最佳实践要点
- 修改
/etc/gitlab/gitlab.rb之后,必须执行gitlab-ctl reconfigure,才会渲染所有组件配置; - 重启优先用
gitlab-ctl restart,不要直接systemd kill进程; - 备份分为两部分:
gitlab-backup(代码库+DB) +gitlab-ctl backup-etc(配置与密钥),缺一不可; - PostgreSQL vacuum、清理CI工件放在凌晨低峰;
- v18.x 已经用Puma,不再是Unicorn,排查Web慢优先看
puma日志;Sidekiq负责CI任务堆积; - GitLab KAS 是k8s代理,不用k8s集群可以在gitlab.rb里关闭kas减少资源占用。
systemd 底层命令(备选,不推荐优先使用)
omnibus本质注册了systemd单元,应急可以:
systemctl status gitlab-runsvdir
systemctl stop gitlab-runsvdir
systemctl start gitlab-runsvdir