如何在 Ubuntu 20.04 上安装和配置 GitLab

介绍

GitLab是一个开源应用程序,主要用于托管Git仓库,具有附加的与开发相关的功能,如问题跟踪。它旨在使用自己的基础设施托管,并提供部署作为开发团队的内部仓库的灵活性,与用户交互的公共方式,或为贡献者托管自己的项目的手段。

GitLab 项目允许您在自己的硬件上创建一个 GitLab 实例,使用最小的安装机制. 在本指南中,您将学习如何在 Ubuntu 20.04 服务器上安装和配置 GitLab 社区版。

前提条件

要跟随这个教程,你需要:

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

  • 4 個核心為您的 CPU
  • 4 GB RAM 為記憶體

虽然您可能能够通过替换 RAM 的某些交换空间来解决问题,但这并不建议,本指南中的以下示例将使用这些最小资源。

步骤 1 - 安装依赖

在安装 GitLab 之前,重要的是在安装过程中并在持续的基础上安装该软件,需要的软件可以从 Ubuntu 的默认包库中安装。

首先,更新本地包索引:

1sudo apt update

然后通过输入此命令来安装依赖性:

1sudo apt install ca-certificates curl openssh-server postfix tzdata perl

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

现在你已经安装了依赖,你已经准备好安装GitLab了。

第2步:安装GitLab

有了依赖性,您可以安装 GitLab. 这个过程利用安装脚本来配置您的系统与 GitLab 存储库。

首先,进入 /tmp 目录:

1cd /tmp

下载安装脚本:

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

请自由检查下载的脚本,以确保您对它所采取的操作感到满意. 您还可以在 GitLab 安装说明书上找到脚本的托管版本:

1less /tmp/script.deb.sh

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

1sudo bash /tmp/script.deb.sh

该脚本将您的服务器设置为使用 GitLab 维护的存储库。这允许您使用相同的软件包管理工具来管理 GitLab. 一旦完成,您可以使用apt来安装实际的 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)

由于GitLab是一个Web应用程序,你需要允许HTTP访问,因为你将利用GitLab的能力来请求和启用免费的TLS/SSL证书从Let's Encrypt(LINK0),也允许HTTPS访问。

HTTP 和 HTTPS 的端口映射协议在 `/etc/services’ 文件中可用,因此您可以以名义允许此类流量。

1sudo ufw allow http
2sudo ufw allow https
3sudo ufw allow OpenSSH

您可以再次检查UFW状态,以确保您已获得至少这两个服务的访问权限:

1sudo ufw status
 1[secondary_label Output]
 2Status: active
 3
 4To Action From
 5--                         ------      ----
 6OpenSSH ALLOW Anywhere                  
 780/tcp ALLOW Anywhere                  
 8443/tcp ALLOW Anywhere                  
 9OpenSSH (v6)               ALLOW Anywhere (v6)             
1080/tcp (v6)                ALLOW Anywhere (v6)             
11443/tcp (v6)               ALLOW Anywhere (v6)

此输出表明,在配置应用程序后,GitLab Web 界面现在可访问。

步骤 4 – 编辑 GitLab 配置文件

在您可以使用该应用程序之前,请更新配置文件并运行重组命令. 首先,使用您喜爱的文本编辑器打开 GitLab 的配置文件。

1sudo nano /etc/gitlab/gitlab.rb

更新它以匹配您的域,并确保更改httphttps,以便自动将用户重定向到受 Let’s Encrypt 证书保护的网站:

 1[label /etc/gitlab/gitlab.rb]
 2...
 3## GitLab URL
 4##! URL on which GitLab will be reachable.
 5##! For more details on configuring external_url see:
 6##! https://docs.gitlab.com/omnibus/settings/configuration.html#configuring-the-external-url-for-gitlab
 7##!
 8##! Note: During installation/upgrades, the value of the environment variable
 9##! EXTERNAL_URL will be used to populate/replace this value.
10##! On AWS EC2 instances, we also attempt to fetch the public hostname/IP
11##! address from AWS. For more details, see:
12##! https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instancedata-data-retrieval.html
13external_url 'https://your_domain'
14...

接下来,找到letsencrypt['contact_emails']设置. 如果您正在使用nano,您可以通过点击CTRL+W来启用搜索提示。 将letsencrypt['contact_emails']写入提示,然后按ENTER设置。 此设置定义了一个电子邮件地址列表,让Let's Encrypt项目可以用来与您联系,如果您的域存在问题。 建议您放弃评论并填写此信息,以便告知您可能发生的任何问题:

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

完成更改后,保存并关闭文件. 如果您使用nano,您可以按CTRL+X,然后按Y,然后按ENTER

运行以下命令来重新配置 GitLab:

1sudo gitlab-ctl reconfigure

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

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

随着 GitLab 运行,您可以通过 Web 界面执行应用程序的初始配置。

首次登录

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

1https://your_domain

在您第一次访问时,您将收到一个登录页面:

GitLab initial login page

GitLab为您生成一个初始的安全密码. 它存储在一个文件夹中,您可以作为一个管理sudo用户访问:

1sudo nano /etc/gitlab/initial_root_password
 1[label /etc/gitlab/initial_root_password]
 2# WARNING: This value is valid only in the following conditions
 3#          1. If provided manually (either via `GITLAB_ROOT_PASSWORD` environment variable or via `gitlab_rails['initial_root_password']` setting in `gitlab.rb`, it was provided before database was seeded for the firs$
 4#          2. Password hasn't been changed manually, either via UI or via command line.
 5#
 6#          If the password shown here doesn't work, you must reset the admin password following https://docs.gitlab.com/ee/security/reset_user_password.html#reset-your-root-password.
 7
 8Password: YOUR_PASSWORD
 9
10# NOTE: This file will be automatically deleted in the first reconfigure run after 24 hours.

回到 login 页面,输入以下内容:

  • 用户名: root
  • 密码: [在 /etc/gitlab/initial_root_password 上列出的密码]

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

Your GitLab dashboard after logging in as root.

现在你可以精心调节你的GitLab实例。

更新您的密码

登录后,您应该做的第一件事之一是更改密码. 要进行此更改,请点击导航栏右上角的图标,然后选择 Edit Profile:

Click on the user icon and select 'Edit Profile' to enter the Settings page

在左导航栏中,选择 ** 密码** 以更改您的 GitLab 生成的密码,以安全密码,然后点击 ** 保存密码** 按钮,当您完成更新时:

The Password setting is in the left navigation bar. You can update your password from here.

您将被带回登录屏幕,通知您的密码已更改. 输入您的新密码来重新登录您的 GitLab 实例:

After changing your password, you'll be asked to log back in with your updated password.

调整您的个人资料设置

GitLab 会选择一些合理的默认值,但一旦您开始使用该软件,它们通常是不合适的。

要进行必要的更改,请点击导航栏的右上角的用户图标,然后选择 Edit Profile

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

Update your Name and Email within the Edit Profile settings

当您完成更新时,点击底部的更新个人资料设置按钮,您将被要求输入密码以确认更改。

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

更改您的帐户名称

接下来,在左侧导航栏中选择 ** 帐户**:

GitLab Account selection in the left navigation bar

在这里,您可以启用双重身份验证并更改您的 用户名. 默认情况下,第一个管理帐户将被命名为 root. 由于这是已知的帐户名称,所以更安全地将其更改为另一个名称。

Change your username from 'root' into something you prefer.

点击更新用户名按钮进行更改,您将被要求随后确认更改。

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

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

您可以使用 Git 允许 SSH 密钥与您的 GitLab 项目进行交互. 要做到这一点,您需要将 SSH 公共密钥添加到您的 GitLab 帐户中。

在左侧的导航栏中,选择 SSH 密钥:

The SSH Keys page where you can enter your SSH public key.

如果您已经在本地计算机上创建了 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 实例中的 ** Key** 文本框中。

如果相反,您收到另一个消息,则您尚未在您的计算机上配置 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 实例中的 ** Key** 文本框中,给它一个描述性标题,然后点击 ** Add key** 按钮。

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

步骤 6 – 限制或禁用公共订阅

有了当前的设置,任何人都可以在您访问 GitLab 实例的定位页面时注册帐户. 如果您想要托管公共项目,这可能是您想要的。

首先,点击上面的导航栏中的 汉堡菜单,然后从下方选择 Admin:

Press the hamburger menu in the top navigation bar and select 'Admin' to proceed

从左侧的导航栏中选择 Settings:

Select 'Settings' from the administrative navigation bar

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

禁用签名

如果您想完全禁用登录,请滚动到 ** 登录限制** 部分,然后按 ** 扩展** 查看选项。

然后删除启用注册选项框:

GitLab deselect sign-ups enabled

请记住,在更改后点击保存更改按钮。

登录部分现在已从 GitLab 定位页面中删除。

按域名限制注册

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

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

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

Restrict sign-ups by domain

当你完成时,点击保存更改按钮。

登录部分现在已从 GitLab 定位页面中删除。

限制项目创建

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

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

From the 'Account and limit' setting, you can set project limits to zero

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

更新后,请记住点击保存更改按钮。

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

更新 Let’s Encrypt 证书

默认情况下,GitLab 有一个计划的任务,设置在每四天深夜后更新 Let's Encrypt 证书,具体的分钟是基于您的 external_url

例如,如果您想在 12:30 每 7 天更新,则可以将其配置为此。

1sudo nano /etc/gitlab/gitlab.rb

然后,在文件中找到以下行,删除#并更新它以以下方式:

 1[label /etc/gitlab/gitlab.rb]
 2...
 3################################################################################
 4# Let's Encrypt integration
 5################################################################################
 6# letsencrypt['enable'] = nil
 7letsencrypt['contact_emails'] = ['sammy@digitalocean'] # This should be an array of email addresses to add as contacts
 8# letsencrypt['group'] = 'root'
 9# letsencrypt['key_size'] = 2048
10# letsencrypt['owner'] = 'root'
11# letsencrypt['wwwroot'] = '/var/opt/gitlab/nginx/www'
12# See http://docs.gitlab.com/omnibus/settings/ssl.html#automatic-renewal for more on these settings
13letsencrypt['auto_renew'] = true
14letsencrypt['auto_renew_hour'] = "12"
15letsencrypt['auto_renew_minute'] = "30"
16letsencrypt['auto_renew_day_of_month'] = "*/7"
17...

您也可以通过将 letsencrypt['auto_renew'] 设置为 `false' 来禁用自动更新:

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

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

结论

您现在可以开始导入或创建新项目,并为团队配置适当的访问级别. GitLab 正在定期添加功能并对其平台进行更新,所以请务必检查项目的主页以获取任何改进或重要通知。

Published At
Categories with 技术
comments powered by Disqus