GitLab在Ubuntu上的常见故障及排除方法
curl、openssh-server、ca-certificates、postfix等基础依赖,若缺失会导致安装失败。可通过sudo apt install -y curl openssh-server ca-certificates postfix命令补全。apt安装时提示“E: Unable to locate package gitlab-ee/ce”,多为包源未正确配置。需通过GitLab官方脚本添加存储库(如curl -fsSL https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash),再执行安装。sudo fallocate -l 2G /swapfile创建2GB交换分区,并设置权限sudo chmod 600 /swapfile、sudo mkswap /swapfile、sudo swapon /swapfile启用。/etc/gitlab/gitlab.rb中的external_url(如external_url 'http://your_server_ip')后,需运行sudo gitlab-ctl reconfigure使配置生效,否则GitLab无法正常启动。/etc/gitlab/gitlab.rb中配置SMTP参数(如gitlab_rails['smtp_enable'] = true、gitlab_rails['smtp_address'] = "smtp.example.com"等),修改后同样需reconfigure。sudo gitlab-ctl status(若unicorn反复重启,需查看日志);sudo tail -f /var/log/gitlab/unicorn/current(定位具体错误,如端口占用需修改/etc/gitlab/gitlab.rb中的unicorn['port']);sudo gitlab-ctl restart。gitlab-ctl start失败,需检查runsvdir服务(GitLab服务管理核心),运行sudo systemctl start gitlab-runsvdir启动,再尝试重启GitLab。GitLab日志集中存储在/var/log/gitlab目录下,不同组件的日志路径如下:
/var/log/gitlab/nginx/;/var/log/gitlab/unicorn/;/var/log/gitlab/postgresql/;/var/log/gitlab/sidekiq/。tail -f /var/log/gitlab/gitlab-ctl/production.log可实时查看整体服务日志,快速定位问题根源。rubocop、eslint检查结果)、单元测试通过率(rspec/pytest结果)或代码编译错误(如Java项目的maven build),修复问题后重新提交。package.json未执行npm install)、环境变量未配置(如DATABASE_URL未设置)或镜像错误(如使用了不兼容的基础镜像)。需检查.gitlab-ci.yml文件,确保before_script中包含依赖安装步骤,variables中配置了必要环境变量。sudo gitlab-runner status查看,若离线需检查:
sudo systemctl restart gitlab-runner);ping gitlab.example.com)。df -h查看磁盘使用情况,若/var/opt/gitlab(GitLab数据目录)占用过高,需清理过期流水线缓存(sudo gitlab-rake cache:clear)、过期构建产物(sudo rm -rf /var/opt/gitlab/gitlab-ci/builds/*)或Docker Registry未使用镜像(docker image prune -a)。/etc/gitlab/gitlab.rb中的unicorn['worker_processes'](如设为2,减少内存占用)、sidekiq['concurrency'](如设为10,避免过多并发任务),优化Redis内存限制(redis['maxmemory'] = "1gb")。sudo gitlab-rake db:migrate更新数据库结构,使用pg_dump备份并压缩数据库(减少存储占用)。