Debian与GitLab的最佳实践有哪些
小樊
43
2025-12-09 07:33:17
Debian与GitLab最佳实践
一 安装与基础配置
- 使用最新稳定版 Debian,先执行系统更新与基础加固:sudo apt update && sudo apt upgrade;安装依赖:sudo apt install -y curl openssh-server ca-certificates tzdata perl。
- 添加 GitLab 官方仓库 并安装:curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash;安装时设置外部地址:sudo EXTERNAL_URL=“https://gitlab.example.com” apt-get install gitlab-ce。
- 配置 external_url(/etc/gitlab/gitlab.rb),完成后执行:sudo gitlab-ctl reconfigure;如需使用外部 Nginx,在 gitlab.rb 中禁用内置 Nginx 并配置反向代理。
- 防火墙仅开放必要端口:sudo ufw allow 80,443/tcp && sudo ufw enable;如需邮件通知,配置 SMTP(地址、端口、TLS、账号等)。
二 安全加固
- 保持 GitLab 与 Debian 的及时更新,第一时间获取安全补丁;启用 HTTPS/TLS,证书可用 Let’s Encrypt。
- 强制使用 SSH 密钥 认证,禁用密码登录;为管理界面与 API 设置强密码策略与多因素认证(如可用)。
- 通过 UFW/防火墙 最小化暴露面,仅开放 80/443(及必要的 22);限制数据库、Redis 等后端仅监听内网。
- 精细化 权限与分支保护:保护主分支,要求 MR 审批、状态检查与强制代码扫描后再合并;最小权限分配。
- 将 数据库变更纳入 CI/CD 流程,配合工单/审核,降低生产风险。
三 性能与高可用
- 硬件与存储:优先 SSD;建议至少 8–16GB 内存(随规模上调),为日志、仓库与备份预留充足磁盘;对象存储用于 LFS/附件/备份 等非核心数据。
- 系统调优:适度降低 vm.swappiness,减少 swap 依赖;使用 Prometheus + Grafana 持续观测 CPU、内存、I/O、延迟与错误。
- GitLab 组件:合理配置 Puma/Unicorn 工作进程、Sidekiq 并发、数据库连接池;启用 Redis 缓存;大规模仓库使用 Gitaly 集群 提升稳定性与吞吐。
- 网络与架构:启用 CDN 加速静态资源;多实例前置 HAProxy/Nginx 做负载均衡与故障转移;数据库与存储层可按需做 主从/集群 与高可用。
四 备份恢复与维护
- 制定自动 备份策略(含仓库、数据库与配置),定期演练 恢复流程 并验证可用性;备份保留周期与异地/离线副本按合规设定。
- 使用 Logrotate 管理日志,防止日志膨胀占满磁盘;监控磁盘使用并设置告警。
- 采用 小步快跑的迭代 与 频繁提交,编写 规范化的提交信息;通过 Merge Request 进行代码审查与质量门禁。
- 按规模配置 GitLab Runner(数量、标签、执行器与资源隔离),为 CI/CD 提供稳定算力。
五 推荐的配置示例
- /etc/gitlab/gitlab.rb(示例片段)
- external_url ‘https://gitlab.example.com’
- nginx[‘ssl_certificate’] = “/etc/letsencrypt/live/gitlab.example.com/fullchain.pem”
- nginx[‘ssl_certificate_key’] = “/etc/letsencrypt/live/gitlab.example.com/privkey.pem”
- gitlab_rails[‘db_pool’] = 20
- sidekiq[‘concurrency’] = 10
- puma[‘worker_processes’] = 4
- puma[‘min_threads’] = 2; puma[‘max_threads’] = 8
- gitlab_rails[‘smtp_enable’] = true
- gitlab_rails[‘smtp_address’] = “smtp.example.com”
- gitlab_rails[‘smtp_port’] = 587
- gitlab_rails[‘smtp_user_name’] = “ci@example.com”
- gitlab_rails[‘smtp_password’] = “strongpassword”
- gitlab_rails[‘smtp_domain’] = “example.com”
- gitlab_rails[‘smtp_authentication’] = “login”
- gitlab_rails[‘smtp_enable_starttls_auto’] = true
- gitlab_rails[‘smtp_tls’] = false
应用配置:sudo gitlab-ctl reconfigure。