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

介绍

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

GitLab 项目使您能够在自己的硬件上设置一个 GitLab 实例,并使用一个简单的安装机制,在本指南中,我们将介绍如何在 Ubuntu 16.04 服务器上安装和配置 GitLab。

前提条件

此教程将假定您可以访问新的 Ubuntu 16.04 服务器。 发布的 GitLab 硬件要求建议使用具有:

  • 2 个内核
  • 4 GB RAM

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

要开始,你需要一个非根用户,在服务器上配置了sudo访问。 设置一个基本的防火墙以提供额外的安全层也是一个好主意. 您可以遵循我们的 Ubuntu 16.04初始服务器设置指南中的步骤来获得此设置。

当您满足上述前提条件后,继续启动安装程序。

建立依赖性

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

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

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

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

安装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-get 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 访问. 如果您有与您的 GitLab 服务器相关的域名,GitLab 也可以要求并启用免费的 TLS/SSL 证书从 Let's Encrypt 项目以确保您的安装。

由于HTTP和HTTPS的端口映射协议在/etc/services文件中可用,所以我们可以以名义允许此类流量。

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

如果您再次检查ufw status命令,您应该看到对至少这两个服务的访问配置:

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

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

编辑 GitLab 配置文件

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

1sudo nano /etc/gitlab/gitlab.rb

顶部是external_url配置行,更新以匹配您的域名或IP地址. 如果您有域名,请将http更改为https,以便GitLab自动将用户重定向到受我们要求的Let’s Encrypt证书保护的网站。

1[label /etc/gitlab/gitlab.rb]
2# If your GitLab server does not have a domain name, you will need to use an IP
3# address instead of a domain and keep the protocol as `http`.
4external_url 'https://yourdomain'

接下来,如果您的 GitLab 服务器有一个域名,请搜索该文件的letsencrypt[‘enable’]设置。 删除行并将其设置为true。 这将告诉 GitLab 为您的 GitLab 域名请求一个 Let’s Encrypt 证书,并配置应用程序以与之服务。

下面,寻找letsencrypt设置. 此设置定义了 Let’s Encrypt 项目可以使用的电子邮件地址列表,以便在您的域出现问题时与您联系。

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

现在,运行以下命令来重新配置 Gitlab:

1sudo gitlab-ctl reconfigure

这将使用它可以找到关于您的服务器的信息启动GitLab,这是一个完全自动化的过程,所以您不必回答任何提示。

通过 Web 界面进行初始配置

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

首次登录

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

1http://gitlab_domain_or_IP

如果您已启用 Let’s Encrypt 并在您的 external_url 中使用https,您应该被重定向到安全的 HTTPS 连接。

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

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 密钥对,您通常可以通过键入查看公共密钥:

1cat ~/.ssh/id_rsa.pub

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

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

复制此文本,然后返回GitLab的Web界面中的Profile Settings页面。

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

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

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

1ssh-keygen

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

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

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

1cat ~/.ssh/id_rsa.pub
1[secondary_label Output]
2ssh-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 帐户凭证。

限制或禁用公共登录(可选)

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

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

GitLab administrative area button

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

GitLab administrative settings button

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

禁用签名

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

删除启用注册选项框:

GitLab deselect sign-ups enabled

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

GitLab save settings button

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

按域名限制注册

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

登录限制部分中,首先选择在登录框上发送确认电子邮件`,仅允许用户在确认电子邮件后登录。

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

GitLab restrict sign-ups by domain

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

GitLab save settings button

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

限制项目创建

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

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

GitLab set projects to zero

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

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

GitLab save settings button

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

创建一个 Cron 工作自动更新让我们加密证书

根据设计,Let’s Encrypt 证书仅有效 90 天。如果您早些时候启用了 GitLab 域的 Let’s Encrypt,则需要确保您的证书定期更新以避免服务中断。

为了自动化此过程,我们可以创建一个 cron 任务,以定期自动运行此命令。

要开始,在文本编辑器中创建并打开一个文件在 /etc/cron.daily/gitlab-le:

1sudo nano /etc/cron.daily/gitlab-le

在内部,插入以下脚本:

1[label /etc/cron.daily/gitlab-le]
2#!/bin/bash
3
4set -e
5
6/usr/bin/gitlab-ctl renew-le-certs > /dev/null

保存并关闭文件,当你完成。

通过键入标记文件为可执行:

1sudo chmod +x /etc/cron.daily/gitlab-le

现在,GitLab 应该每天自动检查其 Let's Encrypt 证书是否需要更新。

结论

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

Published At
Categories with 技术
comments powered by Disqus