Debian如何高效使用GitLab
小樊
41
2025-11-23 13:43:03
Debian上高效使用GitLab的实用指南
一 快速部署与基础配置
- 更新系统与依赖:执行 sudo apt update && sudo apt upgrade,安装 curl、openssh-server、ca-certificates、tzdata(邮件可选 postfix)。
- 添加仓库并安装:
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
sudo apt install gitlab-ce
- 配置与启动:编辑 /etc/gitlab/gitlab.rb,设置 external_url ‘https://your-domain’;执行 sudo gitlab-ctl reconfigure;按需启动/重启 sudo gitlab-ctl start|restart。
- 防火墙放行:sudo ufw allow 22/tcp,sudo ufw allow ‘Nginx Full’(或放行 80/443)。
- 可选:已有反向代理时,可关闭内置 Nginx(nginx[‘enable’] = false)后由外部 Nginx 反向代理到 GitLab。
二 安全与邮件通知
- 启用 HTTPS 与自动续期:在 /etc/gitlab/gitlab.rb 中开启
letsencrypt[‘enable’] = true
letsencrypt[‘auto_renew’] = true
letsencrypt[‘contact_emails’] = [‘admin@example.com’]
保存后执行 sudo gitlab-ctl reconfigure。
- SMTP 邮件(示例为端口 587/STARTTLS):
gitlab_rails[‘gitlab_email_enabled’] = true
gitlab_rails[‘gitlab_email_from’] = ‘gitlab@example.com’
gitlab_rails[‘smtp_enable’] = true
gitlab_rails[‘smtp_address’] = “smtp.example.com”
gitlab_rails[‘smtp_port’] = 587
gitlab_rails[‘smtp_user_name’] = “gitlab@example.com”
gitlab_rails[‘smtp_password’] = “your-password”
gitlab_rails[‘smtp_domain’] = “example.com”
gitlab_rails[‘smtp_authentication’] = “login”
gitlab_rails[‘smtp_enable_starttls_auto’] = true
gitlab_rails[‘smtp_tls’] = true
保存后执行 sudo gitlab-ctl reconfigure。
- 访问与认证:优先使用 SSH 密钥进行 Git 操作;仅开放必要端口(22/80/443);定期升级获取安全补丁。
三 性能与资源优化
- 资源基线:小型实例建议至少 2 核 CPU / 2–4GB 内存 / 20GB+ 磁盘;生产环境建议 4 核 / 8GB+ / SSD,并启用 Redis 缓存与日志轮转。
- 工作进程与并发(示例值,按实际调整):
unicorn[‘worker_processes’] = 2
sidekiq[‘concurrency’] = 10
gitlab_rails[‘db_pool’] = 20
redis[‘maxmemory’] = ‘2gb’
- 按需精简服务:若不使用内置 CI,可禁用 gitlab_ci[‘enable’] = false 以节省资源。
- 监控与日志:使用内置 Prometheus/Grafana 监控资源与错误;用 logrotate 管理日志体积,定期清理过期数据。
四 CI/CD 与 Runner 高效实践
- Runner 安装与注册:
curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh | sudo bash
sudo apt-get install gitlab-runner
在 GitLab 项目/组设置中获取注册令牌,执行 sudo gitlab-runner register,选择 shell 或 docker 执行器,按需限制 tags 与并发。
- 流水线示例 .gitlab-ci.yml(Node.js):
stages:
- build
- test
- deploy
cache:
paths:
- node_modules/
build:
stage: build
script:
- npm ci --quiet
- npm run build --if-present
test:
stage: test
script:
- npm test – --ci
deploy_prod:
stage: deploy
script:
- ./deploy.sh prod
only:
- main
- 数据库变更纳入发布:将 迁移脚本 作为 CI 作业的一部分,配合审核与回滚策略,确保版本一致性与可重复性。
五 备份恢复与日常维护
- 备份与恢复:
- 备份:执行 sudo gitlab-backup create(生成 /var/opt/gitlab/backups/ 时间戳目录)。
- 恢复:确保版本一致,先停止相关服务(sudo gitlab-ctl stop puma/sidekiq),将备份拷入相同目录,执行 sudo gitlab-backup restore BACKUP=timestamp,完成后 sudo gitlab-ctl reconfigure && sudo gitlab-ctl start。
- 日常维护:
- 更新:sudo apt update && sudo apt upgrade gitlab-ce && sudo gitlab-ctl reconfigure。
- 日志排查:sudo gitlab-ctl tail(或 tail -f /var/log/gitlab/gitlab-rails/production.log)。
- 高可用与扩展:多实例前置 HAProxy/NGINX 做负载均衡与故障切换,定期演练恢复流程。