如何在 Debian 9 上安装和配置 GitLab

介绍

GitLab CE,或社区版,是一个开源应用程序,主要用于托管Git仓库,具有附加的开发相关功能,如问题跟踪。

GitLab 项目使在自己的硬件上设置一个 GitLab 实例变得相对简单,使用一个简单的安装机制. 在本指南中,我们将介绍如何在 Debian 9 服务器上安装和配置 GitLab。

前提条件

对于这个教程,你将需要:

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

  • 2 个内核
  • 8 GB RAM

虽然您可能能够通过替换RAM的某些交换空间来解决问题,但不建议使用它. 对于本指南,我们将假设您至少有上述资源。

步骤 1 - 安装依赖

在我们能够自行安装 GitLab 之前,重要的是在安装过程中并持续地安装一些软件,幸运的是,所有所需的软件都可以从 Debian 的默认包库中轻松安装。

由于这是我们第一次在这个会话中使用apt,我们可以更新本地包索引,然后通过键入来安装依赖性:

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

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

第2步:安装GitLab

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

移动到 /tmp 目录,然后下载安装脚本:

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

请自由检查下载的脚本,以确保您对它所采取的行动感到满意. 您还可以找到一个主机版本的脚本 在这里:

1less /tmp/script.deb.sh

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

1sudo bash /tmp/script.deb.sh

该脚本将为您的服务器设置以使用 GitLab 维护的存储库。这允许您使用您在其他系统包中使用的相同的包管理工具来管理 GitLab。

1sudo apt install gitlab-ce

这将为您的系统安装所需的组件。

步骤三:调整防火墙规则

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

通过键入查看您活跃的防火墙的当前状态:

1sudo ufw status
1[secondary_label Output]
2Status: active
3
4To Action From
5--                         ------      ----
6OpenSSH ALLOW Anywhere                  
7OpenSSH (v6)               ALLOW Anywhere (v6)

正如你所看到的,当前的规则允许通过SSH流量,但对其他服务的访问受到限制. 由于GitLab是一个Web应用程序,我们应该允许HTTP访问。

我们可以通过我们的防火墙允许访问HTTP和HTTPS,允许WWW Full应用程序配置文件. 如果您尚未启用OpenSSH流量,您应该现在允许此类流量:

1sudo ufw allow "WWW Full"
2sudo ufw allow OpenSSH

再次检查ufw状态,这一次附上verbose旗帜;您应该看到至少对这两个服务配置的访问:

1sudo ufw status verbose
 1[secondary_label Output]
 2Status: active
 3Logging: on (low)
 4Default: deny (incoming), allow (outgoing), disabled (routed)
 5New profiles: skip
 6
 7To Action From
 8--                         ------      ----
 922/tcp (OpenSSH)           ALLOW IN Anywhere                  
1080,443/tcp (WWW Full)      ALLOW IN Anywhere                  
1122/tcp (OpenSSH (v6))      ALLOW IN Anywhere (v6)             
1280,443/tcp (WWW Full (v6)) ALLOW IN Anywhere (v6)

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

步骤 4 – 编辑 GitLab 配置文件

在您可以使用该应用程序之前,您需要更新配置文件并运行重组命令。

1sudo nano /etc/gitlab/gitlab.rb

接近顶部是external_url配置行. 更新它以匹配您的域名. 更改httphttps,以便 GitLab 自动将用户重定向到受 Let’s Encrypt 证书保护的网站:

1[label /etc/gitlab/gitlab.rb]
2##! For more details on configuring external_url see:
3##! https://docs.gitlab.com/omnibus/settings/configuration.html#configuring-the-external-url-for-gitlab
4external_url 'https://example.com'

接下來,尋找「letsencrypt['contact_emails']」設定. 這個設定定義了一個電子郵件地址列表,讓 Let's Encrypt 項目可以用來與您聯繫,如果您的網域有問題。

1[label /etc/gitlab/gitlab.rb]
2letsencrypt['contact_emails'] = ['[email protected]']

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

1sudo gitlab-ctl reconfigure

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

步骤 5 – 通过 Web 界面进行初始配置

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

首次登录

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

1https://example.com

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

GitLab initial password set prompt

在最初的密码提示中,输入并确认管理帐户的安全密码。

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

GitLab first sign in prompt

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

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

将这些值输入到现有用户的字段中,然后点击 ** Sign in ** 按钮,您将登录到应用程序,并被带到一个目标页面,提示您开始添加项目:

GitLab initial login landing page

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

调整您的个人资料设置

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

要进行必要的更改,请点击接口右上角的用户图标. 在出现的下载菜单中,选择 设置:

GitLab profile settings button

您将被带到您的设置的 ** 配置文件** 部分:

GitLab profile settings page

管理员[email protected]中的姓名电子邮件地址调整为更准确的东西。您选择的名称将显示给其他用户,而电子邮件将用于默认的外观者检测、通知、Git界面上的操作等。

当你完成时,点击底部的更新个人资料设置按钮:

GitLab update profile settings button

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

更改您的帐户名称

接下来,点击左侧菜单栏中的 ** 帐户** 项:

GitLab account menu item

在这里,您可以找到您的私人 API 代币或配置双重身份验证,但我们目前感兴趣的功能是 更改用户名部分。

默认情况下,第一个管理帐户将被命名为 root. 因为这是已知的帐户名称,所以更安全地将其更改为另一个名称。

GitLab change username section

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

GitLab update username button

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

将 SSH 密钥添加到您的帐户中

在大多数情况下,您需要使用 SSH 密钥与 Git 进行交互,以便与您的 GitLab 项目进行交互。

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

1[environment local]
2cat ~/.ssh/id_rsa.pub

你应该看到大量的文本,如下:

1[secondary_label Output]
2[environment local]
3ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDMuyMtMl6aWwqBCvQx7YXvZd7bCFVDsyln3yh5/8Pu23LW88VXfJgsBvhZZ9W0rPBGYyzE/TDzwwITvVQcKrwQrvQlYxTVbqZQDlmsC41HnwDfGFXg+QouZemQ2YgMeHfBzy+w26/gg480nC2PPNd0OG79+e7gFVrTL79JA/MyePBugvYqOAbl30h7M1a7EHP3IV5DQUQg4YUq49v4d3AvM0aia4EUowJs0P/j83nsZt8yiE2JEYR03kDgT/qziPK7LnVFqpFDSPC3MR3b8B354E9Af4C/JHgvglv2tsxOyvKupyZonbyr68CqSorO2rAwY/jWFEiArIaVuDiR9YM5 sammy@mydesktop

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

相反,如果您收到一个看起来像这样的消息,则您还没有在您的计算机上配置 SSH 密钥对:

1[secondary_label Output]
2[environment local]
3cat: /home/sammy/.ssh/id_rsa.pub: No such file or directory

如果是这样的情况,您可以通过键入创建一个SSH密钥对:

1[environment local]
2ssh-keygen

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

 1[secondary_label Output]
 2[environment local]
 3Generating public/private rsa key pair.
 4Enter file in which to save the key (/home/sammy/.ssh/id_rsa):
 5Enter passphrase (empty for no passphrase):
 6Enter same passphrase again:
 7Your identification has been saved in /home/sammy/.ssh/id_rsa.
 8Your public key has been saved in /home/sammy/.ssh/id_rsa.pub.
 9The key fingerprint is:
10SHA256:I8v5/M5xOicZRZq/XRcSBNxTQV2BZszjlWaIHi5chc0 [email protected]
11The key's randomart image is:
12+---[RSA 2048]----+
13|          ..%o==B|
14|           *.E =.|
15|        . ++= B  |
16|         ooo.o . |
17|      . S .o  . .|
18|     . + .. . o|
19|      +   .o.o ..|
20|       o .++o .  |
21|        oo=+     |
22+----[SHA256]-----+

一旦你有这个,你可以通过键入如下方式显示你的公共密钥:

1[environment local]
2cat ~/.ssh/id_rsa.pub
1[secondary_label Output]
2[environment local]
3ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDMuyMtMl6aWwqBCvQx7YXvZd7bCFVDsyln3yh5/8Pu23LW88VXfJgsBvhZZ9W0rPBGYyzE/TDzwwITvVQcKrwQrvQlYxTVbqZQDlmsC41HnwDfGFXg+QouZemQ2YgMeHfBzy+w26/gg480nC2PPNd0OG79+e7gFVrTL79JA/MyePBugvYqOAbl30h7M1a7EHP3IV5DQUQg4YUq49v4d3AvM0aia4EUowJs0P/j83nsZt8yiE2JEYR03kDgT/qziPK7LnVFqpFDSPC3MR3b8B354E9Af4C/JHgvglv2tsxOyvKupyZonbyr68CqSorO2rAwY/jWFEiArIaVuDiR9YM5 sammy@mydesktop

复制显示的文本块,然后返回GitLab的Web界面中的设置

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

GitLab SSH Keys menu item

在所提供的空间中插入您从本地机器复制的公共密钥. 给它一个描述性标题,然后点击添加密钥按钮:

GitLab add SSH Key

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

步骤 6 – 限制或禁用公共订阅(可选)

您可能已经注意到,当您访问 GitLab 实例的定位页时,任何人都可以注册帐户。

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

GitLab administrative area button

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

GitLab administrative settings button

您将被带到您的 GitLab 实例的全球设置. 在这里,您可以调整一些会影响新用户是否可以登录和访问水平的设置。

禁用签名

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

删除启用注册选项框:

GitLab deselect sign-ups enabled

向下滚动,然后点击保存更改按钮:

GitLab save settings button

现在应该从 GitLab 定位页中删除登录部分。

按域名限制注册

如果您正在使用 GitLab 作为提供与域相关联的电子邮件地址的组织的一部分,您可以根据域限制登录,而不是完全禁用它们。

登录限制部分中,选择登录框上的发送确认电子邮件,这将允许用户在确认电子邮件后才登录。

接下来,将您的域名或域名添加到白名单域名注册框中,每行一个域名。

GitLab restrict sign-ups by domain

向下滚动,然后点击保存更改按钮:

GitLab save settings button

现在应该从 GitLab 定位页中删除登录部分。

限制项目创建

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

在内部,您可以将 **默认项目限制 ** 更改为 0 以完全禁用新用户创建项目:

GitLab set projects to zero

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

向下滚动,然后点击保存更改按钮:

GitLab save settings button

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

更新 Let’s Encrypt 证书

默认情况下,GitLab 有一个计划的任务,设置在每四天深夜后更新 Let's Encrypt 证书,具体的分钟是基于您的 external_url. 您可以在 /etc/gitlab/gitlab.rb 文件中修改这些设置。

1[label /etc/gitlab/gitlab.rb]
2letsencrypt['auto_renew_hour'] = "12"
3letsencrypt['auto_renew_minute'] = "30"
4letsencrypt['auto_renew_day_of_month'] = "*/7"

您也可以通过在 /etc/gitlab/gitlab.rb 中添加额外的设置来禁用自动更新:

1[label /etc/gitlab/gitlab.rb]
2letsencrypt['auto_renew'] = false

有了自动更新,您不必担心服务中断。

结论

您现在应该有一个运行的 GitLab 实例托管在自己的服务器上。您可以开始导入或创建新项目,并为您的团队配置适当的访问级别。

Published At
Categories with 技术
comments powered by Disqus