温馨提示×

Ubuntu GitLab常见问题及解决方法

小樊
67
2025-10-04 06:48:31
栏目: 智能运维

Ubuntu GitLab常见问题及解决方法

1. 安装依赖包缺失

安装GitLab时,若提示缺少curlopenssh-serverca-certificatespostfix等依赖包,会导致安装失败。解决方法是使用apt命令安装缺失的依赖:

sudo apt update
sudo apt install -y curl openssh-server ca-certificates postfix

2. 无法定位GitLab包(安装源问题)

若安装时出现E: Unable to locate package gitlab-ee(或gitlab-ce)错误,多为Ubuntu版本与GitLab包不兼容或未正确添加GitLab仓库。解决方法:

  • 确认Ubuntu版本(GitLab推荐20.04及以上);
  • 添加GitLab官方仓库(以社区版为例):
    curl -fsSL https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
    
  • 再执行安装命令:sudo apt install gitlab-ce -y

3. 外部URL配置错误

修改/etc/gitlab/gitlab.rb中的external_url(如从http://old-ip改为http://new-ip)后,需重新配置GitLab使变更生效:

sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart

否则会导致无法通过新URL访问GitLab。

4. 服务启动失败

  • runsv not running:运行sudo systemctl start gitlab-runsvdir启动runsv服务;
  • 500/502错误:500错误多为服务器内部错误,502错误常因端口冲突或内存不足。解决方法:
    • 查看GitLab组件日志定位具体错误:sudo gitlab-ctl tail
    • 检查端口占用(如80、443端口):sudo netstat -tulnp | grep :80,修改/etc/gitlab/gitlab.rb中的端口配置后重新配置;
    • 增加交换分区(若内存不足):
      sudo fallocate -l 2G /swapfile
      sudo chmod 600 /swapfile
      sudo mkswap /swapfile
      sudo swapon /swapfile
      echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
      

5. 默认管理员密码忘记

GitLab默认管理员账户为root,若忘记密码,可通过服务器命令行重置:

sudo gitlab-rails console

进入控制台后执行:

user = User.find_by(username: 'root')
user.password = '新密码'
user.password_confirmation = '新密码'
user.save!
exit

6. SSH密钥认证失败

若推送代码时提示Permission denied (publickey),需检查:

  • 本地机器是否生成SSH密钥(~/.ssh/id_rsa.pub);
  • 公钥是否添加至GitLab账户(通过Settings -> SSH Keys添加);
  • GitLab的SSH端口(默认22)是否开放,或是否在/etc/gitlab/gitlab.rb中修改了SSH端口(需同步修改~/.ssh/config)。

7. CI/CD构建失败

  • 依赖项缺失:在项目根目录的.gitlab-ci.yml中添加before_script安装依赖(如npm installpip install -r requirements.txt);
  • 环境变量未配置:敏感信息(如API密钥)需通过GitLab控制台的Settings -> CI / CD -> Variables添加,避免硬编码;
  • 镜像配置错误:确保image字段指定的镜像存在(如image: ruby:3.2)。

8. Runner离线或不可用

  • 检查Runner状态:sudo gitlab-runner status
  • 若Runner未注册,需重新注册(获取Token:Settings -> CI / CD -> Runners):
    sudo gitlab-runner register
    
  • 重启Runner服务:sudo systemctl restart gitlab-runner

9. 磁盘空间不足

/var/opt/gitlab目录占用过高,需清理过期资源:

  • 清理过期流水线缓存:sudo gitlab-rake gitlab:cleanup:orphan_job_artifacts
  • 清理Docker Registry未使用镜像:docker image prune -a(若使用Docker Registry)。

10. 性能优化(内存/CPU瓶颈)

  • 调整Unicorn/Sidekiq进程数(减少内存占用):在/etc/gitlab/gitlab.rb中修改:
    unicorn['worker_processes'] = 2  # 根据CPU核心数调整
    sidekiq['concurrency'] = 10      # 根据内存调整
    
  • 优化Redis内存限制:redis['maxmemory'] = "1gb"(根据服务器内存调整)。

0