如何在 Ubuntu 上安装 GitLab:完整分步指南
GitLab 是当今最强大的开源 DevOps 平台之一,提供了一套全面的工具,包括基于 Git 的版本控制、持续集成/持续交付 (CI/CD) 管道、问题跟踪和团队协作功能 — 所有这些都集成在一个平台中。无论您是在管理一个小型开发团队还是运行企业级软件项目,在 Ubuntu 上自托管 GitLab 都能让您完全控制您的数据、工作流和基础设施。
本指南将逐步引导您在 Ubuntu 服务器上安装和配置 GitLab Community Edition (CE),从初始系统准备到启用 HTTPS 和管理服务。
先决条件
开始之前,请确保您已准备好以下内容:
- 运行 Ubuntu 20.04 或 22.04 LTS 的服务器(建议全新安装)
- 最少 4 GB RAM 和 2 个 CPU 核心(GitLab 建议生产环境至少使用 4 个核心)
- 对服务器的 Root 或 sudo 访问权限
- 指向您服务器 IP 地址的已注册域名(可选,但强烈建议用于 HTTPS)
- 防火墙中开放端口 80 和 443
> 提示:为了获得最佳 GitLab 性能,请考虑在具有足够 RAM 和 CPU 资源的 VPS Hosting 计划上部署。AlexHost VPS 计划针对 Linux 工作负载进行了优化,并提供完整的 root 访问权限,使其成为 GitLab 等自托管 DevOps 平台的理想环境。
步骤 1:更新系统软件包
在安装任何软件之前,确保您的系统软件包索引和已安装的软件包完全是最新的至关重要。这可以防止依赖关系冲突,并确保您使用的是最新的安全补丁。
sudo apt update && sudo apt upgrade -y在继续下一步之前,请等待升级过程完成。
第2步:安装所需的依赖项
GitLab 需要多个支持包才能正常运行,包括用于安全通信、时区管理和脚本编写的工具。使用以下命令安装它们:
sudo apt install -y curl openssh-server ca-certificates tzdata perl以下是每个包的作用:
| 包 | 用途 |
|---|---|
curl | 从网络下载脚本和文件 |
openssh-server | 启用对服务器的 SSH 访问 |
ca-certificates | 验证 SSL/TLS 证书 |
tzdata | 提供时区数据 |
perl | GitLab 内部脚本所需 |
第3步:添加官方GitLab存储库
GitLab维护一个官方软件包存储库,使安装和未来的升级变得简单直接。使用以下命令下载并执行存储库设置脚本:
curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash此脚本自动执行以下操作:
- 检测您的Ubuntu版本
- 将GitLab软件包存储库添加到您的APT源
- 导入存储库的GPG签名密钥以进行软件包验证
脚本完成后,您的系统已准备好直接从官方源安装GitLab。
第 4 步:安装 GitLab Community Edition
现在使用 apt 包管理器安装 GitLab CE。您必须设置 EXTERNAL_URL 环境变量为用户访问您的 GitLab 实例的 URL 或 IP 地址。
如果您有域名:
sudo EXTERNAL_URL="https://gitlab.yourdomain.com" apt install gitlab-ce如果您使用 IP 地址(例如,用于本地或私有服务器):
sudo EXTERNAL_URL="http://YOUR_SERVER_IP" apt install gitlab-ce将 gitlab.yourdomain.com 或 YOUR_SERVER_IP 替换为您的实际域名或 IP 地址。
> 注意:安装过程可能需要几分钟,因为它会下载并配置所有 GitLab 组件,包括 PostgreSQL、Redis、NGINX 和 Sidekiq。
在安装期间,GitLab 将:
- 安装所有捆绑服务(数据库、缓存、Web 服务器等)
- 根据您提供的
EXTERNAL_URL进行自我配置 - 在
/etc/gitlab/中生成初始配置文件
第5步:运行GitLab重新配置
安装后,运行重新配置命令以完成设置、初始化数据库并启动所有GitLab服务:
sudo gitlab-ctl reconfigure此命令从/etc/gitlab/gitlab.rb读取配置并应用所有设置。它还会生成SSL证书(如果配置了Let’s Encrypt)、设置数据库架构并启动所有必需的后台服务。
您应该看到一个长输出,最后显示类似以下的消息:
gitlab Reconfigured!第6步:在Web浏览器中访问GitLab
重新配置完成后,打开Web浏览器并导航到安装期间指定的URL:
https://gitlab.yourdomain.com或
http://YOUR_SERVER_IP首次登录
首次访问时,GitLab将提示您设置管理员密码。设置后,使用以下凭据登录:
- 用户名:
root - 密码: 您刚刚创建的密码
> 安全提示: 首次登录后立即更改默认 root 账户凭据。创建个人管理员账户,并仅将 root 账户限制用于紧急情况。
第7步:配置GitLab电子邮件通知(可选)
发送电子邮件通知对于生产GitLab实例至关重要——它启用了帐户验证、合并请求更新、CI/CD警报和密码重置等功能。在主GitLab配置文件中配置SMTP设置:
sudo nano /etc/gitlab/gitlab.rb添加或修改以下SMTP配置块:
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.yourmailprovider.com"
gitlab_rails['smtp_port'] = 587
gitlab_rails['smtp_user_name'] = "your_email@yourdomain.com"
gitlab_rails['smtp_password'] = "your_email_password"
gitlab_rails['smtp_domain'] = "yourdomain.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true保存文件并应用更改:
sudo gitlab-ctl reconfigure> 寻找可靠的电子邮件基础设施? AlexHost提供专业的电子邮件托管服务,与GitLab等自托管应用程序无缝集成,提供稳定的SMTP中继和高送达率。
第8步:使用Let’s Encrypt启用HTTPS(推荐)
强烈建议在任何生产或团队环境中通过HTTPS运行GitLab。GitLab内置支持Let’s Encrypt,这是一个免费的自动化SSL证书颁发机构。
> 重要:Let’s Encrypt要求您的域名可公开访问,并且服务器上的端口80处于开放状态。它不适用于原始IP地址。
打开GitLab配置文件:
sudo nano /etc/gitlab/gitlab.rb添加以下配置:
letsencrypt['enable'] = true
letsencrypt['contact_emails'] = ['your_admin_email@yourdomain.com']
letsencrypt['auto_renew'] = true
letsencrypt['auto_renew_hour'] = 12
letsencrypt['auto_renew_minute'] = 30
letsencrypt['auto_renew_day_of_month'] = "*/7"保存文件并重新配置GitLab:
sudo gitlab-ctl reconfigureGitLab将自动获取并安装您的SSL证书,auto_renew设置确保在过期前自动续期,无需任何手动干预。
> 替代方案:如果您更喜欢独立管理SSL证书或需要通配符/多域名证书,AlexHost提供一系列SSL证书,可在GitLab的NGINX设置中手动配置。
第9步:管理GitLab服务
GitLab捆绑了自己的服务管理工具,称为gitlab-ctl。使用以下命令来控制GitLab服务:
启动GitLab
sudo gitlab-ctl start停止GitLab
sudo gitlab-ctl stop重启GitLab
sudo gitlab-ctl restart检查服务状态
sudo gitlab-ctl status查看实时日志
sudo gitlab-ctl tail查看特定服务的日志(例如NGINX)
sudo gitlab-ctl tail nginx这些命令对于故障排除和日常维护非常有价值。status命令将显示所有GitLab子服务的状态,包括PostgreSQL、Redis、Sidekiq、Puma(网络服务器)和NGINX。
第 10 步:为您的组织进行初始 GitLab 配置
安装并运行 GitLab 后,现在是时候根据您的团队需求进行配置了。以下是通过 GitLab 网络界面设置的关键区域:
用户管理
导航到 管理区域 → 用户 为您的团队成员创建用户账户。您可以配置身份验证方法,包括 LDAP、OAuth 和 SAML 以实现企业单点登录。
组和项目
- 组 允许您组织相关项目并大规模管理权限
- 项目 是具有自己的问题跟踪器、Wiki 和 CI/CD 管道的单个存储库
CI/CD 管道
GitLab 的内置 CI/CD 是其最强大的功能之一。在您的存储库根目录中创建 .gitlab-ci.yml 文件来定义自动化构建、测试和部署管道。
存储库设置
在每个项目的 设置 → 存储库 部分下配置分支保护规则、合并请求批准和代码审查工作流。
备份配置
通过在 /etc/gitlab/gitlab.rb 中配置以下内容来设置自动备份:
gitlab_rails['backup_path'] = "/var/opt/gitlab/backups"
gitlab_rails['backup_keep_time'] = 604800 # Keep backups for 7 days随时使用以下命令运行手动备份:
sudo gitlab-backup create防火墙配置
如果您的 Ubuntu 服务器上启用了 UFW(简化防火墙),请确保允许 HTTP 和 HTTPS 流量:
sudo ufw allow http
sudo ufw allow https
sudo ufw allow OpenSSH
sudo ufw enable
sudo ufw status故障排除常见问题
| 问题 | 解决方案 |
|---|---|
| 安装后 GitLab 无法访问 | 检查防火墙规则;验证 EXTERNAL_URL 在 /etc/gitlab/gitlab.rb |
| 502 Bad Gateway 错误 | 运行 sudo gitlab-ctl restart;使用 sudo gitlab-ctl tail 检查日志 |
| Let's Encrypt 证书失败 | 确保端口 80 开放且域名 DNS 配置正确 |
| 内存使用率高 | 在 gitlab.rb 中减少 Puma workers:puma['worker_processes'] = 2 |
| 电子邮件通知未发送 | 验证 SMTP 凭证并运行 sudo gitlab-rails console 进行测试 |
结论
在 Ubuntu 上安装 GitLab 是一个直接的过程,可以提供完全由您控制的企业级 DevOps 平台。通过遵循本指南,您已经设置了一个功能完整的 GitLab 实例,具有 HTTPS 加密、电子邮件通知和适当的服务管理 — 准备好用于真实的开发工作流。
自托管 GitLab 为您的团队提供了自定义工作流、维护数据主权以及与现有基础设施集成的自由,无需支付经常性的 SaaS 订阅费用。顺利使用 GitLab 的关键是从可靠的高性能服务器开始。
对于需要为 GitLab 提供强大基础的团队,AlexHost 的 Dedicated Servers 提供最大的性能和隔离,而 VPS Hosting 计划为较小的团队和成长中的项目提供经济高效且可扩展的替代方案。两种选项都提供完全的 root 访问权限、SSD 存储和 24/7 技术支持 — 您需要的一切来自信地运行 GitLab。
