您已决定开始使用 GitLab 进行项目管理,但不确定如何安全地安装 GitLab?安装 GitLab 不仅是一个复杂的过程,而且如果不正确操作,您的数据可能会有风险。但不要担心,您来对地方了!
在本教程中,您将学习到安全安装 GitLab 的整个过程,以便设置 SSL 加密并为 GitLab 配置最佳性能。
听起来有趣吗?立即开始吧!
先决条件
本教程将进行实际演示。如果您想跟着做,请确保您具备以下条件:
- A Linux server with root access – This demo uses Ubuntu 20.04 LTS, but any Linux distribution will work.
- A fully qualified domain name (FQDN) pointing to your server.
- 在服务器上安装 Let’s Encrypt。
- 最低要求 – 8 GB 的 RAM,50-100 Mb/s 的带宽,2 GHz 处理器和 20 GB 的磁盘空间。
安装 GitLab 社区版
现在,您已经有了一个完全合格的域名和准备好的服务器,是时候安装 GitLab 了。有几种安装 GitLab 的方法,例如使用 Omnibus 包或从源代码编译。但本教程专注于使用 GitLab 开发人员提供的 GitLab 仓库安装 GitLab。
GitLab有两个版本:
- GitLab社区版(CE) – 适用于偏好开源、社区支持版本的用户。
- GitLab企业版(EE) – 适用于需要GitLab企业版提供的额外功能的用户。
但是,此演示使用社区版在您的开发环境中测试应用程序。
1. 打开终端并运行以下apt update
命令,以确保系统可以访问所有最新的软件更新。
apt update
命令会更新apt
实用程序使用的软件包索引文件,以检索有关可用软件包的信息。

2. 接下来,运行以下apt install
命令,下载(curl
)并安装GitLab安装所需的以下依赖项:
openssh-server
软件包 – 包含OpenSSH服务器守护程序和相关工具,如主机密钥管理工具和服务器,以提供对用户的远程登录访问。ca-certificates
软件包 – 包含CA证书列表。此软件包提供了使您的服务器支持HTTPS所需的文件。

3. 运行下面的curl
命令从GitLab下载(curl
)安装脚本(https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce
)。然后,将安装脚本保存为shell脚本(script.deb.sh
)并以超级用户(sudo bash
)身份运行它。
一旦curl
命令完成,您将获得以下输出。

4. 运行下面的apt-cache
命令验证您是否成功添加了GitLab仓库。

5. 现在,重新运行apt update
命令以更新可用软件包的列表。此命令确保在安装GitLab时,您的系统将使用新添加的GitLab仓库。
6. 最后,运行下面的apt install
命令以在您的系统上安装GitLab(gitlab-ce
)。

安装过程可能需要一段时间,但当安装完成时,您将看到以下输出。此输出确认您已成功在系统上安装了GitLab。

配置您的GitLab安装
你现在在系统上安装了GitLab,但在使用GitLab之前,您需要进行一些配置更改。GitLab的配置文件(/etc/gitlab/gitlab.rb)包含了GitLab的全局设置,这些设置不特定于GitLab服务器的环境。
您将修改GitLab的配置文件以设置您的FQDN域名和与您的域的安全连接。
1. 使用您喜欢的文本编辑器打开/etc/gitlab/gitlab.rb配置文件。
GitLab配置文件中最重要的条目之一是external url指令,如下所示。此指令允许用户通过Web浏览器访问GitLab。
将external url指令的值从http://gitlab.example.com更改为https://gitlab.yourdomain.com,其中yourdomain.com是您的FQDN域名。

2. 接下来,转到底部的Let’s Encrypt integration部分,并使用以下配置指令:
- 通过删除前面的
#
取消注释letsencrypt['enable']
指令,并将值从nil
更改为true
。此指令告诉GitLab在您的服务器上自动配置HTTPS。 - 通过删除前面的
#
取消注释letsencrypt['contact_emails']
指令,并将您的电子邮件地址放入值中。Let’s Encrypt将使用此电子邮件地址在需要更新SSL证书时与您联系(每90天一次)。 - 保存更改并退出编辑器。

3. 最后,运行以下命令以重新配置并将更改应用到 GitLab 的 /etc/gitlab/gitlab.rb 配置文件中。

配置防火墙以进行 SSL 连接
现在您已经配置了 GitLab,您需要配置防火墙规则以允许 SSL 和安全连接到您的服务器。 未简化的防火墙(UFW)是 Ubuntu 中管理防火墙规则的默认程序。
如果您将服务器放在防火墙后面,则需要打开 HTTP 端口 80
和 HTTPS 端口 443 以进行 SSL 连接。
运行以下命令以为您的 GitLab 服务器打开 OpenSSH
、HTTP
和 HTTPS
端口。

现在,运行以下命令以检查您的防火墙状态。

通过 Web 界面保护 GitLab
您的防火墙已启用,但这是否意味着您的 GitLab 是安全的?增加安全层永远不会太多。 因此,您将通过 Web 界面进一步保护您的 GitLab 安装。
1. 打开您喜爱的网络浏览器,并导航到您的 GitLab 服务器。 例如,http://gitlab.example.com,其中 example.com 是您的 FQDN 域名。
选择在访问GitLab服务器时使用Chrome或Firefox以提高安全性。这些Web浏览器使用它们自己的HTTP/HTTPS协议,有助于执行安全策略。
下面,您可以看到GitLab登录页面。

2. 接下来,单击地址栏旁边的挂锁图标(左上角),您将看到连接状态。此演示显示连接是安全的,表示您与服务器的连接是通过HTTPS进行的。

返回到您的终端,并运行下面的cat
命令以获取您的initial_root_password
。
默认情况下,GitLab安装会带有自动生成的初始根密码。
复制并保存您的初始根密码在一个安全的地方。您将使用此密码登录GitLab(第四步)。

4. 返回到您的Web浏览器,键入root作为用户名,并输入初始根密码作为密码。单击登录以登录到您的GitLab服务器。

登录到GitLab服务器后,您的浏览器将重定向到如下所示的GitLab仪表板。

将SSH密钥添加到您的GitLab帐户
除了Web界面,您还可以通过在终端中运行命令以安全的方式访问GitLab。如何?您首先需要添加SSH密钥到您的帐户,这样您就可以通过在终端上运行命令访问GitLab而无需输入密码。
1. 运行ssh-keygen
命令以生成适用于SSH连接的SSH密钥对。在提示时,按Enter键保留SSH密钥的默认保存位置(/root/.ssh/id_rsa),不要添加密码。

2. 运行以下cat
命令以在屏幕上打印您的公钥,如下所示。复制整个ssh-rsa公钥字符串并将其保存在安全位置。稍后将此公钥添加到您的GitLab(第三步)。

3. 返回浏览器上的GitLab仪表板,使用以下方法添加您的公钥:
- 单击SSH密钥菜单位于用户设置页面的左侧面板,以访问SSH密钥页面。
- 将您复制的公钥(第二步)粘贴到密钥字段中,如下所示
- 在标题字段中提供您喜欢的密钥名称。但是对于此演示,名称设置为ATA–GitHub。
- 单击添加密钥以完成向您的帐户添加公钥。

禁用公共注册
为了增加安全性,您可以在GitLab上禁用公共注册。为什么? GitLab中的公共注册功能允许任何人在GitLab服务器上创建帐户。禁用此功能可避免您的服务器受到暴力攻击。
1. 从 GitLab 仪表板,点击 菜单 —> 管理员 进入管理员面板,然后点击 设置 进入管理员面板的 常规 设置页面(第二步)。

2. 在 注册限制 部分下禁用 启用注册 选项。这样做将禁用 GitLab 的公共注册功能。

3. 向下滚动并点击 保存更改(底部)以保存对注册限制设置所做的更改。

4. 最后,退出您的帐户并导航到您的 GitLab 登录屏幕。
如下图所示,立即注册 链接已消失。

测试您的 GitLab 服务器
此时,您已经配置和保护了您的 GitLab 服务器,这很好!但是您如何知道您的 GitLab 服务器实际上正在运行?您将通过在 GitLab 仪表板上创建一个 GitLab 项目并将该项目克隆到您的服务器来测试您的服务器。
1. 在 GitLab 仪表板上,点击搜索框旁边的加号 (+) 图标,然后点击 新建项目,如下图所示,创建一个新的 GitLab 项目。

2. 接下来,提供您首选的 项目 名称,但对于此演示,项目名称设置为 ATA GitLab,项目 slug 设置为 (ata–gitlab)。
点击 创建 项目 来创建您的新项目。

3. 回到你的终端并运行以下命令来设置你的全局用户名(--global user.name
)和电子邮件(--global user.email
)用于 Git。每个用户名和电子邮件在 GitLab 服务器上的所有帐户中都是全局唯一的。
4. 现在,运行下面的git clone
命令将 ATA GitLab 项目(步骤二)克隆到当前目录。用你的 FQDN 替换yourdomain.com
。
如果一切顺利,你会看到类似于下面的输出。克隆完成后,你将拥有一个名为ATA-GitLab的新目录。

5. 最后,运行ls
命令验证 ATA-GitLab 目录是否存在。
由于你可以克隆新的 ATA GitLab 项目,并且 ATA GitLab 目录存在,下面的输出证实你的 GitLab 服务器正常工作。

结论
在本教程中,你学会了如何在你的 Ubuntu Linux 系统上执行安全的 GitLab 安装。你确保通过 Web 界面保护了你的 GitLab 服务器,向你的 GitLab 帐户添加了 SSH 密钥,并测试了你的 GitLab 服务器是否工作。
有了这些新的知识,也许你想学习如何使用 GitLab 设置自动化的持续集成(CI)系统?