GitLab 是一个功能强大的开源 DevOps 平台,它集成了代码仓库管理、CI/CD 流水线、问题跟踪、Wiki 文档等核心功能,是企业或团队进行私有化代码托管与协作开发的理想选择。相比于完全托管在云端的服务,自托管 GitLab 让你能够完全掌控代码和数据的安全。
本文将详细介绍如何在 Ubuntu 或 Debian 系统上,一步步完成 GitLab 社区版 (CE) 的安装、基础配置与优化,帮助你快速搭建一个稳定可靠的企业级代码托管平台。
一、系统环境要求
在开始安装之前,请确保你的服务器满足以下最低配置要求。为了获得更好的性能体验,推荐配置应高于此标准。
- 操作系统:Ubuntu 20.04/22.04 LTS 或 Debian 11/12
- CPU:至少 4 核(推荐 8 核或以上)
- 内存:至少 4GB RAM(GitLab 内存消耗较大,推荐 8GB 以上)
- 存储空间:至少 50GB 可用磁盘空间(用于存储代码仓库、CI/CD 产物等数据)
- 网络:稳定的互联网连接,用于下载软件包
- 权限:具有
sudo 权限的用户账号
- 域名(推荐):准备一个域名以便通过 HTTPS 访问,提升安全性与专业性。
二、安装前的准备工作
1. 更新系统软件包
首先,更新系统的软件包列表并升级现有软件到最新版本。
sudo apt update && sudo apt upgrade -y
2. 安装必要依赖
安装 GitLab 运行所需的基础依赖包。
sudo apt install -y curl openssh-server ca-certificates tzdata perl
3. 配置防火墙
如果你的服务器启用了防火墙(如 UFW),需要开放 GitLab 服务所需的端口。
开放 SSH、HTTP 和 HTTPS 端口:
sudo ufw allow ssh
sudo ufw allow http
sudo ufw allow https
或者,直接开放具体的端口号(22, 80, 443):
sudo ufw allow 22
sudo ufw allow 80
sudo ufw allow 443
启用防火墙(如果之前未启用):
sudo ufw enable
三、安装 GitLab 社区版 (CE)
1. 导入 GitLab GPG 公钥
为确保软件包来源可信,需要先导入官方的 GPG 密钥。
curl -fsSL https://packages.gitlab.com/gpg.key | gpg --dearmor -o /usr/share/keyrings/gitlab_gitlab-ce-archive-keyring.gpg
2. 添加 GitLab 软件源
为了获得更快的下载速度,这里使用清华大学提供的镜像源。根据你的操作系统版本,选择对应的源进行添加。
创建并编辑软件源列表文件:
sudo nano /etc/apt/sources.list.d/gitlab-ce.list
将以下对应你系统版本的其中一行添加到文件中:
- Ubuntu 20.04 (Focal)
deb [signed-by=/usr/share/keyrings/gitlab_gitlab-ce-archive-keyring.gpg] https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/ubuntu focal main
- Ubuntu 22.04 (Jammy)
deb [signed-by=/usr/share/keyrings/gitlab_gitlab-ce-archive-keyring.gpg] https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/ubuntu jammy main
- Debian 11 (Bullseye)
deb [signed-by=/usr/share/keyrings/gitlab_gitlab-ce-archive-keyring.gpg] https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/debian bullseye main
- Debian 12 (Bookworm)
deb [signed-by=/usr/share/keyrings/gitlab_gitlab-ce-archive-keyring.gpg] https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/debian bookworm main
保存并关闭文件(在 nano 编辑器中按 Ctrl+X,输入 Y 确认,再按 Enter)。
3. 安装 GitLab CE 软件包
更新软件包列表并执行安装。
sudo apt update
sudo apt install gitlab-ce -y
安装过程可能需要几分钟,具体时间取决于服务器性能和网络状况。
四、初始配置 GitLab
1. 编辑主配置文件
GitLab 的所有配置都集中在 /etc/gitlab/gitlab.rb 文件中。
sudo nano /etc/gitlab/gitlab.rb
找到并修改以下几个关键配置项:
- 配置访问地址:将
external_url 修改为你的服务器 IP 地址或域名。
external_url ‘http://your-server-ip‘ # 或 ‘http://your-domain.com‘
- 配置时区(可选):
gitlab_rails[‘time_zone‘] = ‘Asia/Shanghai‘
- 配置 SMTP 邮件服务(可选,用于发送系统通知、重置密码等邮件):
gitlab_rails[‘smtp_enable‘] = true
gitlab_rails[‘smtp_address‘] = “smtp.example.com”
gitlab_rails[‘smtp_port‘] = 587
gitlab_rails[‘smtp_user_name‘] = “user@example.com”
gitlab_rails[‘smtp_password‘] = “password”
gitlab_rails[‘smtp_domain‘] = “example.com”
gitlab_rails[‘smtp_authentication‘] = “login”
gitlab_rails[‘smtp_enable_starttls_auto‘] = true
2. 重新配置并启动服务
应用配置文件中的修改,这个进程会初始化数据库、配置组件等。
sudo gitlab-ctl reconfigure
配置完成后,启动所有 GitLab 服务。
sudo gitlab-ctl start
五、首次访问与登录
1. 获取初始管理员密码
安装后,系统会为 root 用户生成一个随机密码。
sudo cat /etc/gitlab/initial_root_password
从输出中复制 Password 后面的字符串。
2. 登录 GitLab Web 界面
打开浏览器,访问你在 external_url 中设置的地址(例如 http://your-server-ip)。
3. 修改初始密码
出于安全考虑,首次登录后系统会强制要求修改 root 用户的密码。请务必设置一个高强度的密码。
六、基础安全与功能配置
1. 配置 SSH 密钥
为了更安全地进行代码推送和拉取,建议在本地生成 SSH 密钥并添加到 GitLab 账户。
在本地计算机生成密钥对:
ssh-keygen -t rsa -b 4096 -C “your-email@example.com”
查看并复制公钥内容:
cat ~/.ssh/id_rsa.pub
登录 GitLab,点击右上角头像 -> “偏好设置” -> “SSH 密钥”,将复制的公钥粘贴添加。
2. 创建与管理项目
点击左上角 “新建项目”,即可创建你的第一个代码仓库。你可以选择创建空白项目、从模板导入或从其他仓库导入。
七、常见问题排查
在安装和使用过程中,你可能会遇到以下问题,这里提供基本的排查思路。
问题1:GitLab 服务启动失败
- 可能原因:内存不足、端口冲突或配置错误。
- 解决方案:
- 检查服务状态:
sudo gitlab-ctl status
- 查看详细日志:
sudo gitlab-ctl tail
- 使用
top 或 htop 命令检查系统资源使用情况,确保内存充足。
问题2:无法通过浏览器访问
- 可能原因:防火墙阻止、服务未运行或 Nginx 配置问题。
- 解决方案:
- 确认服务已启动:
sudo gitlab-ctl status
- 检查防火墙规则,确保 80/443 端口已开放:
sudo ufw status
- 检查 GitLab 的 Nginx 服务是否正常:
sudo gitlab-ctl tail nginx
问题3:忘记管理员密码
八、生产环境优化建议
1. 启用 HTTPS
使用 HTTPS 加密数据传输是生产环境的基本要求。你可以修改 external_url 为 https:// 开头,并使用 Let‘s Encrypt 自动获取免费证书(GitLab 内置支持)。
# 在 /etc/gitlab/gitlab.rb 中修改
external_url ‘https://your-domain.com‘
重新配置即可:sudo gitlab-ctl reconfigure。
2. 配置定期备份
数据无价,必须设置定期备份。首先在配置文件中指定备份路径和保留时间。
gitlab_rails[‘backup_path‘] = ‘/var/opt/gitlab/backups‘
gitlab_rails[‘backup_keep_time‘] = 604800 # 保留7天
执行 sudo gitlab-ctl reconfigure 后,可以手动创建备份:
sudo gitlab-rake gitlab:backup:create
要实现自动化,可以通过 Crontab 添加定时任务,这类运维与测试任务是保障服务稳定性的关键。
sudo crontab -e
# 添加以下行,表示每天凌晨2点执行备份
0 2 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create CRON=1
3. 集成 GitLab Runner 实现 CI/CD
GitLab 强大的 CI/CD 功能依赖于 Runner 来执行构建任务。安装并注册 Runner 后,你的项目就能自动运行测试、构建和部署。
# 安装 GitLab Runner
curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh | sudo bash
sudo apt install gitlab-runner -y
# 注册 Runner(需要从GitLab项目设置中获取URL和令牌)
sudo gitlab-runner register
通过合理配置 CI/CD 流水线,你可以将代码提交、测试、打包和发布等一系列DevOps流程自动化,极大提升交付效率。
总结
至此,你已经成功在 Ubuntu/Debian 服务器上部署了一套功能完整的 GitLab 代码托管平台。从代码管理、协作评审到自动化构建部署,GitLab 为团队提供了一站式的 开源实战 与协作解决方案。
后续你可以根据需要,深入探索仓库权限管理、合并请求(Merge Request)流程、内置容器仓库、监控仪表盘等高级功能。如果在使用中遇到更复杂的问题,查阅 GitLab 官方文档 或在 技术文档 社区寻求解决方案都是很好的途径。