如何在Ubuntu18.04上安装和配置GitLab

来自菜鸟教程
跳转至:导航、​搜索

介绍

GitLab CE 或 Community Edition,是一个开源应用程序,主要用于托管 Git 存储库,具有其他与开发相关的功能,如问题跟踪。 它旨在使用您自己的基础架构进行托管,并为您的开发团队作为内部存储库进行部署提供了灵活性,提供了一种与用户交互的公共方式,或者为贡献者托管他们自己的项目提供了一种方式。

GitLab 项目使得在您自己的硬件上通过简单的安装机制设置 GitLab 实例变得相对简单。 在本指南中,我们将介绍如何在 Ubuntu 18.04 服务器上安装和配置 GitLab。

先决条件

对于本教程,您将需要:

发布的 GitLab 硬件要求 建议使用具有以下功能的服务器:

  • 2个核心
  • 8GB 内存

虽然你可以用一些交换空间来代替 RAM,但不建议这样做。 对于本指南,我们假设您至少拥有上述资源。

  • 指向您的服务器的域名。 有关更多信息,请参阅我们关于如何 在 DigitalOcean 上开始使用 DNS 的文档。 本教程将使用域名 example.com

第 1 步 — 安装依赖项

在我们可以安装 GitLab 本身之前,重要的是安装它在安装过程中和持续使用的一些软件。 幸运的是,所有必需的软件都可以从 Ubuntu 的默认软件包存储库中轻松安装。

由于这是我们在此会话期间第一次使用 apt,我们可以刷新本地包索引,然后通过键入以下命令安装依赖项:

sudo apt update
sudo apt install ca-certificates curl openssh-server postfix

您可能已经安装了其中的一些软件。 对于 postfix 安装,在出现提示时选择 Internet Site。 在下一个屏幕上,输入服务器的域名以配置系统发送邮件的方式。

第 2 步 — 安装 GitLab

现在依赖项已经到位,我们可以安装 GitLab 本身。 这是一个简单的过程,它利用安装脚本为您的系统配置 GitLab 存储库。

进入/tmp目录,然后下载安装脚本:

cd /tmp
curl -LO https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh

随意检查下载的脚本,以确保您对它将采取的操作感到满意。 您还可以在 此处找到脚本 的托管版本:

less /tmp/script.deb.sh

一旦您对脚本的安全性感到满意,请运行安装程序:

sudo bash /tmp/script.deb.sh

该脚本将设置您的服务器以使用 GitLab 维护的存储库。 这使您可以使用与其他系统包相同的包管理工具来管理 GitLab。 完成后,您可以使用 apt 安装实际的 GitLab 应用程序:

sudo apt install gitlab-ce

这将在您的系统上安装必要的组件。

第 3 步 — 调整防火墙规则

在配置 GitLab 之前,您需要确保您的防火墙规则足够允许 Web 流量。 如果您遵循先决条件中链接的指南,您将启用 ufw 防火墙。

通过键入以下内容查看活动防火墙的当前状态:

sudo ufw status
OutputStatus: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere                  
OpenSSH (v6)               ALLOW       Anywhere (v6)

如您所见,当前规则允许 SSH 流量通过,但对其他服务的访问受到限制。 由于 GitLab 是一个 Web 应用程序,我们应该允许 HTTP 访问。 因为我们将利用 GitLab 从 Let's Encrypt 请求和启用免费 TLS/SSL 证书的能力,所以我们也允许 HTTPS 访问。

HTTP 和 HTTPS 的协议到端口映射在 /etc/services 文件中可用,因此我们可以按名称允许该流量进入。 如果您还没有启用 OpenSSH 流量,您现在也应该允许该流量:

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

再次检查ufw status; 您应该看到至少配置了以下两个服务的访问权限:

sudo ufw status
OutputStatus: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere                  
80/tcp                     ALLOW       Anywhere                  
443/tcp                    ALLOW       Anywhere                  
OpenSSH (v6)               ALLOW       Anywhere (v6)             
80/tcp (v6)                ALLOW       Anywhere (v6)             
443/tcp (v6)               ALLOW       Anywhere (v6)

上面的输出表明,一旦我们配置了应用程序,GitLab Web 界面就可以访问。

第 4 步 — 编辑 GitLab 配置文件

在使用应用程序之前,您需要更新配置文件并运行重新配置命令。 首先,打开Gitlab的配置文件:

sudo nano /etc/gitlab/gitlab.rb

靠近顶部的是 external_url 配置行。 更新它以匹配您的域。 将 http 更改为 https 以便 GitLab 自动将用户重定向到受 Let's Encrypt 证书保护的站点:

/etc/gitlab/gitlab.rb

##! For more details on configuring external_url see:
##! https://docs.gitlab.com/omnibus/settings/configuration.html#configuring-the-external-url-for-gitlab
external_url 'https://example.com'

接下来,寻找 letsencrypt['contact_emails'] 设置。 此设置定义了一个电子邮件地址列表,如果您的域出现问题,Let's Encrypt 项目可以使用这些地址与您联系。 取消注释并填写此内容是个好主意,以便您了解任何问题:

/etc/gitlab/gitlab.rb

letsencrypt['contact_emails'] = ['sammy@example.com']

保存并关闭文件。 运行以下命令重新配置 Gitlab:

sudo gitlab-ctl reconfigure

这将使用它可以找到的有关您的服务器的信息来初始化 GitLab。 这是一个完全自动化的过程,因此您无需回答任何提示。 该过程还将为您的域配置 Let's Encrypt 证书。

第 5 步 — 通过 Web 界面执行初始配置

随着 GitLab 运行并允许访问,我们可以通过 Web 界面执行应用程序的一些初始配置。

首次登录

在 Web 浏览器中访问 GitLab 服务器的域名:

https://example.com

在您第一次访问时,您应该会看到为管理帐户设置密码的初始提示:

在初始密码提示中,提供并确认管理帐户的安全密码。 完成后点击更改密码按钮。

您将被重定向到传统的 GitLab 登录页面:

在这里,您可以使用刚刚设置的密码登录。 凭证是:

  • 用户名:root
  • 密码:[您设置的密码]

在现有用户的字段中输入这些值,然后单击 登录 按钮。 您将登录应用程序并进入一个登录页面,提示您开始添加项目:

您现在可以进行一些简单的更改,以按照您想要的方式设置 GitLab。

调整您的个人资料设置

全新安装后您应该做的第一件事就是让您的个人资料变得更好。 GitLab 选择了一些合理的默认值,但是一旦您开始使用该软件,这些通常就不合适了。

要进行必要的修改,请单击界面右上角的用户图标。 在出现的下拉菜单中,选择Settings

您将被带到设置的 Profile 部分:

将“Administrator”和“admin@example.com”中的 NameEmail 地址调整为更准确的地址。 您选择的名称将显示给其他用户,而电子邮件将用于默认头像检测、通知、通过界面的 Git 操作等。

完成后单击底部的更新配置文件设置按钮:

确认电子邮件将发送到您提供的地址。 按照电子邮件中的说明确认您的帐户,以便您可以开始在 GitLab 中使用它。

更改您的帐户名称

接下来,点击左侧菜单栏中的 Account 项:

在这里,您可以找到您的私有 API 令牌或配置双因素身份验证。 但是,我们目前感兴趣的功能是 Change username 部分。

默认情况下,第一个管理帐户的名称为 root。 由于这是一个已知的帐户名称,因此将其更改为其他名称会更安全。 您仍将拥有管理权限; 唯一会改变的是名字。 将 root 替换为您的首选用户名:

单击更新用户名按钮进行更改:

下次登录 GitLab 时,请记住使用您的新用户名。

向您的帐户添加 SSH 密钥

在大多数情况下,您会希望将 SSH 密钥与 Git 一起使用来与您的 GitLab 项目进行交互。 为此,您需要将 SSH 公钥添加到 GitLab 帐户。

如果您已经在 本地计算机 上创建了 SSH 密钥对,您通常可以通过键入以下内容查看公钥:

cat ~/.ssh/id_rsa.pub

您应该会看到一大段文本,如下所示:

Outputssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDMuyMtMl6aWwqBCvQx7YXvZd7bCFVDsyln3yh5/8Pu23LW88VXfJgsBvhZZ9W0rPBGYyzE/TDzwwITvVQcKrwQrvQlYxTVbqZQDlmsC41HnwDfGFXg+QouZemQ2YgMeHfBzy+w26/gg480nC2PPNd0OG79+e7gFVrTL79JA/MyePBugvYqOAbl30h7M1a7EHP3IV5DQUQg4YUq49v4d3AvM0aia4EUowJs0P/j83nsZt8yiE2JEYR03kDgT/qziPK7LnVFqpFDSPC3MR3b8B354E9Af4C/JHgvglv2tsxOyvKupyZonbyr68CqSorO2rAwY/jWFEiArIaVuDiR9YM5 sammy@mydesktop

复制此文本并返回 GitLab Web 界面中的配置文件设置页面。

相反,如果您收到如下所示的消息,则您的计算机上尚未配置 SSH 密钥对:

Outputcat: /home/sammy/.ssh/id_rsa.pub: No such file or directory

如果是这种情况,您可以通过键入以下内容来创建 SSH 密钥对:

ssh-keygen

接受默认值并可选择提供密码以在本地保护密钥:

OutputGenerating public/private rsa key pair.
Enter file in which to save the key (/home/sammy/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/sammy/.ssh/id_rsa.
Your public key has been saved in /home/sammy/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:I8v5/M5xOicZRZq/XRcSBNxTQV2BZszjlWaIHi5chc0 sammy@gitlab.docsthat.work
The key's randomart image is:
+---[RSA 2048]----+
|          ..%o==B|
|           *.E =.|
|        . ++= B  |
|         ooo.o . |
|      . S .o  . .|
|     . + .. .   o|
|      +   .o.o ..|
|       o .++o .  |
|        oo=+     |
+----[SHA256]-----+

一旦你有了这个,你可以通过键入以下内容显示你的公钥:

cat ~/.ssh/id_rsa.pub
Outputssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDMuyMtMl6aWwqBCvQx7YXvZd7bCFVDsyln3yh5/8Pu23LW88VXfJgsBvhZZ9W0rPBGYyzE/TDzwwITvVQcKrwQrvQlYxTVbqZQDlmsC41HnwDfGFXg+QouZemQ2YgMeHfBzy+w26/gg480nC2PPNd0OG79+e7gFVrTL79JA/MyePBugvYqOAbl30h7M1a7EHP3IV5DQUQg4YUq49v4d3AvM0aia4EUowJs0P/j83nsZt8yiE2JEYR03kDgT/qziPK7LnVFqpFDSPC3MR3b8B354E9Af4C/JHgvglv2tsxOyvKupyZonbyr68CqSorO2rAwY/jWFEiArIaVuDiR9YM5 sammy@mydesktop

复制显示的文本块并返回到 GitLab Web 界面中的个人资料 Settings

点击左侧菜单中的 SSH Keys 项:

在提供的空间中粘贴您从本地计算机复制的公钥。 给它一个描述性的标题,然后单击 Add key 按钮:

您现在应该能够从本地计算机管理您的 GitLab 项目和存储库,而无需提供您的 GitLab 帐户凭据。

第 6 步 — 限制或禁用公开注册(可选)

您可能已经注意到,当您访问 GitLab 实例的登录页面时,任何人都可以注册一个帐户。 如果您希望托管公共项目,这可能是您想要的。 然而,很多时候,更严格的设置是可取的。

首先,通过单击页面顶部主菜单栏中的 扳手图标 进入管理区域:

在随后的页面上,您可以看到整个 GitLab 实例的概览。 要调整设置,请单击左侧菜单底部的 Settings 项:

您将被带到 GitLab 实例的全局设置。 在这里,您可以调整一些设置,这些设置会影响新用户是否可以注册以及他们的访问级别。

禁用注册

如果您希望完全禁用注册(您仍然可以为新用户手动创建帐户),请向下滚动到 注册限制 部分。

取消选中 Sign-up enabled 复选框:

向下滚动到底部并单击保存更改按钮:

现在应该从 GitLab 登录页面中删除注册部分。

按域限制注册

如果您将 GitLab 用作提供与域关联的电子邮件地址的组织的一部分,则可以按域限制注册,而不是完全禁用它们。

注册限制 部分,选择 注册时发送确认电子邮件 框,这将允许用户只有在确认电子邮件后才能登录。

接下来,将您的一个或多个域添加到 注册白名单域 框中,每行一个域。 您可以使用星号“*”指定通配符域:

向下滚动到底部并单击保存更改按钮:

现在应该从 GitLab 登录页面中删除注册部分。

限制项目创建

默认情况下,新用户最多可以创建 10 个项目。 如果您希望允许来自外部的新用户查看和参与,但希望限制他们创建新项目的访问权限,您可以在 帐户和限制设置 部分进行。

在内部,您可以将 Default projects limit 更改为 0 以完全禁止新用户创建项目:

新用户仍然可以手动添加到项目中,并且可以访问其他用户创建的内部或公共项目。

向下滚动到底部并单击保存更改按钮:

新用户现在可以创建帐户,但无法创建项目。

更新 Let's Encrypt 证书

默认情况下,GitLab 有一个计划任务设置为每第四天午夜后更新 Let's Encrypt 证书,确切的分钟数基于您的 external_url。 您可以在 /etc/gitlab/gitlab.rb 文件中修改这些设置。 例如,如果你想在每 7 天的 12:30 更新一次,你可以这样配置:

/etc/gitlab/gitlab.rb

letsencrypt['auto_renew_hour'] = "12"
letsencrypt['auto_renew_minute'] = "30"
letsencrypt['auto_renew_day_of_month'] = "*/7"

您还可以通过向 /etc/gitlab/gitlab.rb 添加附加设置来禁用自动更新:

/etc/gitlab/gitlab.rb

letsencrypt['auto_renew'] = false

有了自动续订,您无需担心服务中断。

结论

您现在应该在自己的服务器上托管了一个可用的 GitLab 实例。 您可以开始导入或创建新项目并为您的团队配置适当的访问级别。 GitLab 会定期添加功能并对其平台进行更新,因此请务必查看项目的主页以了解任何改进或重要通知的最新信息。