跳到主要内容

独立服务器:在 Linux 上安装 GitLab

本指南是针对以下产品创建的:

(不同供应商的产品可能会有所不同,但主要概念保持不变)

介绍

GitLab 是一个全面的 DevOps 平台,帮助团队协作编写代码、自动化工作流程,并高效管理整个软件开发生命周期。本指南将讲解如何在 Linux 服务器上安装 GitLab。

准备工作

以下要求由官方 GitLab 团队 推荐,强烈建议遵循这些前提条件,以避免后续出现不便和问题。

硬件

组件最低配置推荐配置
CPU2x 2 GHz4x 2.6+ GHz
内存4 GB8 GB
存储10 GB50+ GB
带宽100 mbit/s(上下行)100 mbit/s(上下行)

软件

平台选项
操作系统Ubuntu (20.04, 22.04, 24.04), Debian(10, 11, 12), OpenSUSE (15.5)
数据库PostgreSQL 14.9+
Web 服务器NGINX(随 GitLab 捆绑)、Puma 6.4.2+
其他Redis 7.x+,Sidekiq 7.3.2+,Prometheus 2.54.1+
信息

想获取最准确、最新的规格信息,请参考 GitLab 官方的 硬件要求 文档。

准备工作

要在 Linux 服务器上安装 GitLab,必须通过 SSH 客户端建立连接。请查看我们的 初始访问(SSH) 指南了解详情。

连接建立后,即可开始安装 GitLab 实际安装所需的依赖包。

第一步:安装依赖

首先,你需要安装一些依赖,才能运行 GitLab 安装程序。使用以下命令在你的 Linux 服务器上安装所需依赖。

更新软件包列表至最新版本,并安装 OpenSSH Server 及其所需的前置依赖。GitLab 的 Web 界面面板就是通过它来托管的。

sudo apt update
sudo apt-get install -y curl openssh-server ca-certificates tzdata perl

如果你想在使用 GitLab 时发送邮件通知,可以选择安装 Postfix(SMTP 服务器)。这是可选的。

如果需要邮件通知,运行以下命令安装 Postfix:

sudo apt-get install -y postfix
信息

安装 Postfix 时可能会弹出配置界面。此时请选择“Internet Site”,按回车。邮件名(mail name)填写你的 Linux 服务器外部 DNS,按回车。如果出现其他界面,继续按回车接受默认设置。

如果你想使用其他邮件发送方案,请跳过此步骤,GitLab 安装完成后可参考官方指南 配置外部 SMTP 服务器

第二步:安装 GitLab

下载并安装所有依赖后,就可以安装 GitLab 了。

本指南将直接从官方软件源安装 GitLab。

以下脚本会将 GitLab 的软件源添加到 apt 包管理器:

curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.deb.sh | sudo bash

完成后,安装 gitlab-ee 包:

sudo apt-get install -y gitlab-ee

安装完成后,你的 Linux 服务器上就已经准备好 GitLab 了。接下来配置一些关键设置,确保服务器正常运行。

第三步:配置 GitLab

为了确保一切正常,你需要修改配置文件。用你喜欢的文本编辑器打开 GitLab 配置文件。这里以自带的 nano 编辑器为例:

sudo nano /etc/gitlab/gitlab.rb

找到 external_url 这一行,输入你的域名,或者如果没有域名,则输入 Linux 服务器的 IP 地址。

## GitLab URL
##! GitLab 可访问的 URL。
##! 更多关于配置 external_url 的信息请参考:
##! https://docs.gitlab.com/omnibus/settings/configuration.html#configuring-the-external-url-for-gitlab
##!
##! 注意:安装/升级时,环境变量 EXTERNAL_URL 的值会用来填充/替换此值。
##! 在 AWS EC2 实例上,还会尝试从 AWS 获取公共主机名/IP。
##! 详情见:https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instancedata-data-retrieval.html
external_url 'http`s`://`你的域名或 Linux 服务器 IPv4 地址`'

另外,建议在 letsencrypt['contact_emails'] 行填写你的邮箱,这样 Let's Encrypt 可以向你发送自动免费 SSL 证书的通知和联系信息。

备注

如果想用 Let's Encrypt 免费 SSL 证书,必须使用域名,不能直接用 IP 地址申请。

################################################################################
# Let's Encrypt 集成
################################################################################
# letsencrypt['enable'] = nil
# letsencrypt['contact_emails'] = [`你的邮箱`] # 这里应该是一个邮箱地址数组
# letsencrypt['group'] = 'root'
# letsencrypt['key_size'] = 2048
# letsencrypt['owner'] = 'root'
# letsencrypt['wwwroot'] = '/var/opt/gitlab/nginx/www'
# 更多设置见:https://docs.gitlab.com/omnibus/settings/ssl/index.html#renew-the-certificates-automatically
# letsencrypt['auto_renew'] = true
# letsencrypt['auto_renew_hour'] = 0
# letsencrypt['auto_renew_minute'] = nil # 可以是数字或 cron 表达式
# letsencrypt['auto_renew_day_of_month'] = "*/4"
# letsencrypt['auto_renew_log_directory'] = '/var/log/gitlab/lets-encrypt'
# letsencrypt['alt_names'] = []
提示

你可以用 CTRL+W 搜索 letsencrypt['contact_emails'],这样不用手动翻找整个文件。

修改完成后,按 CTRL+X,然后按 Y,最后按回车保存退出。

最后,运行以下命令用新配置重新配置 GitLab:

sudo gitlab-ctl reconfigure

这个过程可能需要一些时间,会根据更新的配置初始化 GitLab,自动处理相关流程。如果使用了域名,SSL 证书也会自动申请。

第四步:访问 Web 界面

初始化完成后,你可以通过浏览器访问服务器。输入你的域名或 IP 地址访问:

https://[你的域名] 或 http://[你的 IP 地址]

首次访问时,会看到登录页面。

首次登录请用 root 用户名登录。

密码需要从服务器上的一个文件中获取。用以下命令打开文件,找到 Password 字段:

sudo nano /etc/gitlab/initial_root_password
# 警告:此密码仅在以下条件下有效

# 1. 如果手动提供(通过 `GITLAB_ROOT_PASSWORD` 环境变量或 `gitlab_rails['initial_root_password']` 设置),且在数据库初始化前提供。

# 2. 密码未被手动更改(无论是通过 UI 还是命令行)。

#

# 如果此密码无效,请参考 https://docs.gitlab.com/ee/security/reset_user_password.html#reset-your-root-password 重置管理员密码。

Password: `[你的密码在这里]`

# 注意:此文件将在首次重新配置后 24 小时内自动删除。

在登录页面输入用户名和密码,首次进入你的 GitLab 仪表盘。现在你可以访问自己 Linux 服务器上的 GitLab 面板了。

强烈建议创建新用户和/或修改 root 用户密码。进入左下角的 Admin,选择 Overview->Users,即可管理 GitLab 实例的用户。

可选:使用 ufw 设置防火墙

如果你不想配置防火墙,或者比如在 OpenSUSE 已经使用了 firewalld,可以跳过这部分。

确保允许端口 80/443 和 22。

安装 ufw

如果你已经安装了 ufw,可以跳过此步骤。

sudo apt-get install -y ufw

开放必要端口

sudo ufw allow http
sudo ufw allow https
sudo ufw allow OpenSSH

启用防火墙

注意

默认情况下,这会阻止除允许端口外的所有访问。确保白名单设置正确后再启用。

启用防火墙:

sudo ufw enable

总结

恭喜你,GitLab 安装成功!如果有任何问题或疑问,欢迎随时联系我们的支持团队,我们每天都在线帮你解决!

如果想做更多配置,推荐阅读 官方 GitLab 文档 了解后续步骤。