排查 Linux 上 GitLab 的问题,可以按「由外到内、由服务到日志」的思路来。下面是一套比较系统的排查流程,适用于自建 GitLab(Omnibus 或源码)。
sudo gitlab-ctl status
正常应看到:
run: nginxrun: pumarun: sidekiqrun: postgresqlrun: redis如果有 down,重点看那个服务。
重启所有服务:
sudo gitlab-ctl restart
sudo gitlab-ctl tail
实时看错误,特别适合启动失败、502、超时。
sudo gitlab-ctl tail nginx
sudo gitlab-ctl tail puma
sudo gitlab-ctl tail sidekiq
sudo gitlab-ctl tail postgresql
常见错误:
permission denied → 权限问题address already in use → 端口冲突database connection failed → DB 没起来GitLab 默认:
80(HTTP)443(HTTPS)22(SSH,可选)检查:
sudo netstat -tunlp | grep -E '80|443|22'
sudo gitlab-rake gitlab:check
会检查:
sudo gitlab-ctl reconfigure
ssh -T git@你的gitlab地址
失败常见原因:
sshd 没开git remote -v
curl -I http://gitlab地址
sudo gitlab-ctl pg-upgrade
sudo gitlab-rake db:migrate:status
df -h
du -sh /var/opt/gitlab
磁盘满会导致:
| 项目 | 路径 |
|---|---|
| 主配置 | /etc/gitlab/gitlab.rb |
| 数据目录 | /var/opt/gitlab |
| 日志目录 | /var/log/gitlab |
| Nginx 配置 | /var/opt/gitlab/nginx |
| 现象 | 可能原因 |
|---|---|
| 502 | puma/sidekiq 没起 |
| 访问慢 | sidekiq 积压 |
| push 被拒 | 权限 / 分支保护 |
| 邮箱发不出 | SMTP 配置错 |
| CI 跑不了 | runner 没注册 |
你可以直接告诉我:
gitlab-ctl tail)我可以直接帮你定位到“哪一行配置或哪个服务”出了问题。