02. 装完 GitLab 先配啥?管理员视角的初始化设置清单
「GitLab」系列已发布: 00. GitLab 不只是代码托管:一套 DevOps 平台的 6 大核心能力 | 01. GitLab 怎么装最省心?Omnibus/Docker/K8s 三种姿势 | 02. 装完 GitLab 先配啥?管理员视角的初始化设置清单(本文) | 03. GitLab 角色搞不清?Member/Maintainer/Owner 权限全解
邮件发不出、注册乱开、项目乱建——初始化配置没做好,后面全是运维债。管理员视角的邮件、安全、默认值设置清单,一篇理清。
前置条件
已按第 01 篇完成安装部署,能用浏览器正常访问管理后台。用 root 登录。
一、管理员面板
root 登录后在左侧或顶部导航栏进 Admin Area,整个 GitLab 实例的控制中心:
| 模块 | 功能 |
|---|---|
| Overview | 仪表盘:用户数、项目数、组件版本等全局统计 |
| Users | 用户创建、编辑、禁用、删除 |
| Groups | 群组管理 |
| Projects | 所有项目的全局视图 |
| Settings | 实例级配置(通用、仓库、CI/CD、网络等) |
| Monitoring | 系统监控(后台任务、日志、健康检查) |
| Messages | 全局广播消息 |
| Runners | Runner 管理 |
1.1 实例基础配置
1.1.1 通用设置
Admin Area → Settings → General。关键项:
- Default projects limit: 每个用户默认项目数上限
- Sign-up enabled: 是否允许公开注册(生产环境强烈建议关)
- Require admin approval for new sign-ups: 新注册需管理员审批
Sign-in restrictions:
- Two-factor authentication: 强制/可选双因素认证
- Email confirmation: 注册是否需要邮箱验证
Visibility and access controls:
- Default project visibility: 新项目默认可见性(Private/Internal/Public)
- Default group visibility: 新群组默认可见性
- Restricted visibility levels: 禁止用户选特定可见性级别
Account and limit:
- Maximum attachment size: 附件最大大小(默认 10 MB)
- Maximum import size: 项目导入最大
- Repository size limit: 单个仓库大小限制(0 = 不限)
1.1.2 仓库存储路径
编辑 /etc/gitlab/gitlab.rb:
# 默认
git_data_dirs({
"default" => {
"path" => "/var/opt/gitlab/git-data"
}
})
# 多路径(不同项目分布在不同磁盘)
git_data_dirs({
"default" => {
"path" => "/data/gitlab/repos"
},
"storage2" => {
"path" => "/data2/gitlab/repos"
}
})
配置后执行:sudo gitlab-ctl reconfigure
1.1.3 对象存储
把大文件(LFS、附件、CI 工件等)存到 S3 兼容的对象存储,减轻主服务器压力:
# /etc/gitlab/gitlab.rb
gitlab_rails['object_store']['enabled'] = true
gitlab_rails['object_store']['proxy_download'] = true
gitlab_rails['object_store']['connection'] = {
'provider' => 'AWS',
'region' => 'us-east-1',
'endpoint' => 'https://s3.amazonaws.com',
'aws_access_key_id' => 'YOUR_ACCESS_KEY',
'aws_secret_access_key' => 'YOUR_SECRET_KEY'
}
gitlab_rails['object_store']['objects']['artifacts']['bucket'] = 'gitlab-artifacts'
gitlab_rails['object_store']['objects']['lfs']['bucket'] = 'gitlab-lfs'
gitlab_rails['object_store']['objects']['uploads']['bucket'] = 'gitlab-uploads'
1.2 用户管理
1.2.1 创建用户
Web UI:Admin Area → Users → New user。填 Name、Username、Email。可以设初始密码(不设则系统发密码重置邮件)和权限级别(Regular / Administrator)。
命令行(Omnibus):
sudo gitlab-rails console
# 创建普通用户
user = User.new(
username: 'zhangsan',
email: 'zhangsan@example.com',
name: 'Zhang San',
password: 'TempPass123!',
password_confirmation: 'TempPass123!'
)
user.skip_confirmation! # 跳过邮箱验证
# 提升为管理员
user.admin = true
user.save!
1.2.2 用户状态控制
sudo gitlab-rails console
# 禁用
user = User.find_by_username('zhangsan')
user.block!
# 启用
user.activate!
# 查看信息
user = User.find_by_username('zhangsan')
puts "ID: #{user.id}, State: #{user.state}, Admin: #{user.admin}"
1.2.3 批量导入
CSV 格式:
name,username,email,organization,role
Zhang San,zhangsan,zhangsan@company.com,Engineering,Developer
Li Si,lisi,lisi@company.com,QA,Tester
导入路径:Admin Area → Users → Import。
1.3 群组管理
群组(Group)是 GitLab 组织和权限的核心。多个相关项目打包在一起,统一配成员权限。
1.3.1 创建群组
Admin Area → Groups → New group。
可见性:
- Private:仅成员可见
- Internal:所有登录用户可见
- Public:任何人可见
1.3.2 角色权限
| 角色 | 能做什么 |
|---|---|
| Guest | 看 Issue、创建 Issue、看 MR |
| Reporter | 拉代码、看 CI/CD 日志、项目分析 |
| Developer | 推代码、创建/管理 MR 和分支、触发 CI/CD |
| Maintainer | 管理项目设置、加成员、推到受保护分支 |
| Owner | 群组完全控制(仅群组级别有此角色) |
1.3.3 推荐的组织结构
graph TD Company[顶级群组] Company --> Backend[Backend 子群组] Company --> Frontend[Frontend 子群组] Company --> DevOps[DevOps 子群组] Backend --> ApiService[api-service 项目] Backend --> AuthService[auth-service 项目] Frontend --> WebApp[web-app 项目] Frontend --> AdminPanel[admin-panel 项目] DevOps --> Infra[infrastructure 项目] DevOps --> CiTemplates[ci-templates 项目]
1.4 项目配置
1.4.1 创建项目
三种方式:空白项目、从模板创建、从外部导入(GitHub、Bitbucket、GitLab.com 等)。
1.4.2 关键设置
项目 → Settings → General:
项目可见性
Merge requests:
- Merge method: Merge commit / semi-linear history / Fast-forward merge
- Squash commits when merging: 合并时压缩所有提交
- Merge checks: 必须通过 CI/CD Pipeline 才允许合并
- Merge approvals: 要求指定数量审批
Repository:
- Default branch: 默认分支(推荐 main)
- Push rules: 提交信息格式、文件大小限制等
- Protected branches: 分支保护规则
1.4.3 分支保护
Settings → Repository → Protected branches:
# 典型配置
Branch: main
Allowed to merge: Maintainers # 只有 Maintainer 可以合
Allowed to force push: 关闭
Code owner approval: 开启 # 要求 CODEOWNERS 审批
1.5 实例监控与维护
1.5.1 系统信息与健康检查
# 版本与组件信息
sudo gitlab-rake gitlab:env:info
# 健康检查
sudo gitlab-rake gitlab:check
# Git 仓库完整性
sudo gitlab-rake gitlab:git:fsck
# 后台任务队列
sudo gitlab-rake gitlab:sidekiq:check
1.5.2 日志位置
| 组件 | 日志路径 |
|---|---|
| Puma (Web) | /var/log/gitlab/puma/ |
| Sidekiq | /var/log/gitlab/sidekiq/ |
| PostgreSQL | /var/log/gitlab/postgresql/ |
| Gitaly | /var/log/gitlab/gitaly/ |
| Nginx | /var/log/gitlab/nginx/ |
1.6 性能监控与清理
# 数据库连接池
sudo gitlab-rails runner "puts ActiveRecord::Base.connection_pool.stat"
# 清理过期 CI/CD 工件和日志
sudo gitlab-rake gitlab:cleanup:orphan_job_artifact_files
sudo gitlab-rake gitlab:cleanup:orphan_lfs_files
1.6.1 定期维护
# root 用户 crontab
sudo crontab -e
# 每天凌晨 2 点清过期会话
0 2 * * * /opt/gitlab/bin/gitlab-rake gitlab:cleanup:sessions
# 每周日凌晨 3 点清孤立文件
0 3 * * 0 /opt/gitlab/bin/gitlab-rake gitlab:cleanup:orphan_job_artifact_files
二、管理员工作流程
flowchart LR A[登录 Admin Area] --> B{配置类型} B -->|用户管理| C[创建/禁用/导入用户] B -->|群组设置| D[创建群组/设权限] B -->|实例配置| E[修改 gitlab.rb] B -->|监控维护| F[健康检查/清理] C & D & E & F --> G[gitlab-ctl reconfigure] G --> H[验证配置生效]
三、文章引用
📌 本文首发于微信公众号 【运维知识点滴】——专注运维实战干货,微信搜索“运维知识点滴”或扫下方二维码关注,更新不迷路。
📎 微信原文:02. 装完 GitLab 先配啥?管理员视角的初始化设置清单
| 微信公众号【运维知识点滴】 | 微信小程序【A5单据合并&大试卷拆分转A4打印】 |
|---|---|
![]() |
![]() |
| 运维实战干货 · 关注追更 | Word 转 PDF · 试卷/发票打印神器 · 免费 |
💡 小程序【A5单据合并&大试卷拆分转A4打印】是干嘛的? 一个 Word 转 PDF 的打印神器,专治“文档版式和打印机对不上”:
- A3 试卷打不出来? 学校发的电子版试卷多是 A3,家用打印机只吃 A4——上传 Word 一键转换:可缩到一页 A4(页数不变),也可对半拆成两张 A4(1:1 原大、字更清晰),两种模式自选;
- 版式不乱:真实渲染引擎原样转换、绝不重排内容,转出的 PDF 和原 Word 排版一致,公式/表格/图片不跑版;
- 两张 A5 单据拼一张 A4:出租车票、火车票等报销凭证拼版后,一次打印、整齐粘贴;
- 隐私省心:无需注册,转换结果留存 5 天、最多下载 5 次即自动删除,不留任何历史记录;
- 微信扫码即用,免费、免安装,支持 doc / docx(≤50MB)。
上一篇:01. GitLab 怎么装最省心?Omnibus/Docker/K8s 三种姿势 | 下一篇:03. GitLab 角色搞不清?Member/Maintainer/Owner 权限全解

