如何在 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 主机计划上部署。AlexHost VPS 计划针对 Linux 工作负载进行了优化,并提供完整的 root 访问权限,是自托管 DevOps 平台(如 GitLab)的理想环境。
步骤 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 将:
- 安装所有捆绑的服务(数据库、缓存、网络服务器等)
- 根据您提供的
EXTERNAL_URL进行自我配置 - 在
/etc/gitlab/中生成初始配置文件
步骤 5:运行 GitLab 重新配置
安装后,运行重新配置命令以完成设置、初始化数据库并启动所有 GitLab 服务:
sudo gitlab-ctl reconfigure此命令从 /etc/gitlab/gitlab.rb 读取配置并应用所有设置。它还会生成 SSL 证书(如果配置了 Let’s Encrypt)、设置数据库架构并启动所有必需的后台服务。
您应该看到一个很长的输出,最后显示类似以下的消息:
gitlab Reconfigured!步骤 6:在网络浏览器中访问 GitLab
重新配置完成后,打开网络浏览器并导航到您在安装期间指定的 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 中 |
