原因:后端服务(如GitLab Workhorse、Nginx)未正常启动、端口被占用或服务器内存不足。
解决方法:
sudo gitlab-ctl status,确认所有组件(如gitlab-workhorse、nginx)处于“run”状态;若有异常,用sudo gitlab-ctl restart重启服务。sudo netstat -tulnp | grep ':80\|:443'查看80/443端口是否被其他进程占用,若有则停止冲突进程或修改GitLab的external_url(如改用8080端口)。sudo fallocate -l 2G /swapfile # 创建2GB swap文件
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab # 永久生效
原因:/etc/gitlab/gitlab.rb文件存在语法错误(如缺少引号、括号不匹配)或参数设置不当(如external_url格式错误)。
解决方法:
sudo gitlab-ctl configtest,根据输出提示修正错误(如遗漏的逗号、错误的路径)。external_url:确保external_url包含协议(http://或https://)和正确IP/域名,例如:external_url 'http://192.168.1.100' # 或 'https://gitlab.example.com'
sudo gitlab-ctl reconfigure应用配置,再用sudo gitlab-ctl restart重启服务。原因:GitLab是资源密集型应用,默认配置下若服务器内存小于4GB,易出现OOM(Out of Memory)错误。
解决方法:
/etc/gitlab/gitlab.rb,调整缓存和并发设置:unicorn['worker_processes'] = 2 # 减少worker进程数
sidekiq['concurrency'] = 10 # 降低Sidekiq并发数
原因:SMTP配置错误(如服务器地址、端口、认证信息不正确)或Postfix服务未正常运行。
解决方法:
/etc/gitlab/gitlab.rb,添加正确的SMTP设置(以163邮箱为例):gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.163.com"
gitlab_rails['smtp_port'] = 25
gitlab_rails['smtp_user_name'] = "your-email@163.com"
gitlab_rails['smtp_password'] = "your-email-password"
gitlab_rails['smtp_domain'] = "163.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = false
gitlab_rails['gitlab_email_from'] = "your-email@163.com"
sudo systemctl restart postfix和sudo gitlab-ctl restart,测试邮件发送功能(如通过GitLab控制台sudo gitlab-rails console执行Notify.test_email('recipient@example.com', 'Test Subject', 'Test Body').deliver_now)。原因:升级前未备份数据、版本跳跃过大(如从14.0直接升级到17.0)或升级脚本执行错误。
解决方法:
sudo gitlab-backup create创建全量备份(默认保存到/var/opt/gitlab/backups),备份文件命名格式为timestamp_gitlab_backup.tar。sudo apt update
sudo apt install gitlab-ce=<target-version> # 例如sudo apt install gitlab-ce=17.0.0-ce.0
sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart
sudo gitlab-backup restore BACKUP=<timestamp> # 例如sudo gitlab-backup restore BACKUP=1712345678_2025_10_14_12.0
sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart
常见错误:rejected non-fast-forward(非快进推送)、failed to push some refs(部分引用推送失败)。
解决方法:
rejected non-fast-forward:本地分支落后于远程分支,需先合并远程分支:git fetch origin
git merge origin/main # 或当前分支对应的远程分支
git push origin main
failed to push some refs:可能是权限问题或远程仓库不存在,检查:
git remote -v,若有误用git remote set-url origin git@gitlab.example.com:user/repo.git修改。cat ~/.ssh/id_rsa.pub复制公钥,到GitLab控制台的「User Settings → SSH Keys」中添加。原因:配置文件错误、端口冲突、依赖服务(如SSH)未运行或磁盘空间不足。
解决方法:
sudo gitlab-ctl status,查看是否有组件处于“down”状态。tail -f /var/log/gitlab/gitlab-ctl/production.log或journalctl -u gitlab-runsvdir,根据日志提示修复(如配置文件语法错误、端口占用)。sudo systemctl status ssh,确保SSH服务运行(GitLab依赖SSH进行git操作)。/var分区空间不足(建议剩余10%以上),删除旧日志或备份文件:sudo du -sh /var/* | sort -h # 查看/var目录下各文件夹大小
sudo rm -rf /var/log/*.gz # 删除压缩的旧日志
原因:未安装中文语言包或语言包未正确配置。
解决方法:
sudo gitlab-ctl stop。sudo apt install gitlab-ce-zh(部分版本可能需要手动下载语言包)。/etc/gitlab/gitlab.rb,设置默认语言为中文:gitlab_rails['default_language'] = 'zh_CN'
sudo gitlab-ctl reconfigure && sudo gitlab-ctl start。