前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。
简介
GitLab CE(Community Edition)是一个开源应用程序,主要用于托管 Git 仓库,并提供额外的与开发相关的功能,如问题跟踪。它旨在使用您自己的基础设施进行托管,并提供灵活性,可将其部署为开发团队的内部仓库存储,公开作为与用户交互的方式,甚至作为贡献者托管其自己项目的方式。
GitLab 项目使在自己的硬件上设置 GitLab 实例相对简单,具有简单的安装机制。在本指南中,我们将介绍如何在 Ubuntu 16.04 服务器上安装和配置 GitLab。
先决条件
本教程假定您可以访问一个全新的 Ubuntu 16.04 服务器。发布的 GitLab 硬件要求建议使用具有以下配置的服务器:
- 2 个核心
- 4GB 的 RAM
尽管您可能可以通过将一些交换空间替换为 RAM 来满足要求,但不建议这样做。在本指南中,我们将假设您至少具有上述资源。
为了开始,您需要在服务器上配置一个具有 sudo
访问权限的非根用户。另外,设置一个基本的防火墙以提供额外的安全层也是一个好主意。您可以按照我们的 Ubuntu 16.04 初始服务器设置指南中的步骤进行设置。
当您满足上述先决条件后,继续开始安装过程。
安装依赖项
在安装 GitLab 本身之前,重要的是安装一些在安装过程中和持续运行中它所利用的软件。幸运的是,所有必需的软件都可以轻松地从 Ubuntu 的默认软件包存储库中安装。
由于这是我们在本次会话中第一次使用 apt
,我们可以通过输入以下命令来刷新本地软件包索引,然后安装依赖项:
sudo apt-get update
sudo apt-get install ca-certificates curl openssh-server postfix
您可能已经安装了其中一些软件。对于 postfix
安装,选择在提示时选择 Internet Site。在下一个屏幕上,输入您的服务器域名或 IP 地址以配置系统发送邮件的方式。
安装 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-get install gitlab-ce
这将在您的系统上安装必要的组件。
调整防火墙规则
在配置 GitLab 之前,您需要确保您的防火墙规则足够宽松,以允许 Web 流量。如果您按照先决条件中的链接中的指南进行操作,您将启用 ufw
防火墙。
通过输入以下命令查看当前活动防火墙的状态:
sudo ufw status
状态:active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
如您所见,当前规则允许 SSH 流量通过,但对其他服务的访问受限。由于 GitLab 是一个 Web 应用程序,我们应该允许 HTTP 访问。如果您的 GitLab 服务器关联有域名,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
状态:active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
80 ALLOW Anywhere
443 ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
80 (v6) ALLOW Anywhere (v6)
443 (v6) ALLOW Anywhere (v6)
上述输出表明一旦我们配置应用程序,GitLab Web 界面将是可访问的。
编辑 GitLab 配置文件
在使用该应用程序之前,您需要更新一个配置文件并运行重新配置命令。首先,打开 Gitlab 的配置文件:
sudo nano /etc/gitlab/gitlab.rb
在文件顶部附近是 external_url
配置行。将其更新为与您自己的域名或 IP 地址匹配。如果您有一个域名,请将 http
更改为 https
,这样 GitLab 将自动将用户重定向到由我们将要请求的 Let’s Encrypt 证书保护的站点。
# 如果您的 GitLab 服务器没有域名,您将需要使用 IP 地址而不是域名,并保持协议为 `http`。
external_url 'https://yourdomain'
接下来,如果您的 GitLab 服务器有一个域名,请搜索文件以查找 letsencrypt['enable']
设置。取消注释该行并将其设置为 true
。这将告诉 GitLab 为您的 GitLab 域请求 Let’s Encrypt 证书并配置应用程序以使用它提供流量。
在下面,查找 letsencrypt['contact_emails']
设置。此设置定义了 Let’s Encrypt 项目可以使用的电子邮件地址列表,以便在您的域名出现问题时与您联系。取消注释并填写这个设置也是个好主意,这样您就会知道是否有任何问题:
letsencrypt['enable'] = true
letsencrypt['contact_emails'] = ['sammy@yourdomain.com']
保存并关闭文件。现在,运行以下命令以重新配置 Gitlab:
sudo gitlab-ctl reconfigure
这将使用它可以找到的关于您的服务器的信息初始化 GitLab。这是一个完全自动化的过程,因此您不必回答任何提示。如果您启用了 Let’s Encrypt 集成,证书应该已经为您的域配置好了。
通过 Web 界面执行初始配置
现在 GitLab 正在运行并且允许访问,我们可以通过 Web 界面对应用程序进行一些初始配置。
首次登录
在 Web 浏览器中访问您的 GitLab 服务器的域名:
http://gitlab_domain_or_IP
如果您启用了 Let’s Encrypt 并在您的 external_url
中使用了 https
,您应该会被重定向到一个安全的 HTTPS 连接。
在首次访问时,您应该会看到一个初始提示,要求为管理员帐户设置密码:
!GitLab 初始密码设置提示
在初始密码提示中,提供并确认管理员帐户的安全密码。完成后,单击 Change your password 按钮。
您将被重定向到常规的 GitLab 登录页面:
!GitLab 首次登录提示
在这里,您可以使用刚刚设置的密码登录。凭证为:
- 用户名:root
- 密码:[您设置的密码]
将这些值输入到现有用户字段中,然后单击 Sign in 按钮。您将登录到应用程序,并被带到一个提示您开始添加项目的着陆页面:
!GitLab 初始登录着陆页面
现在,您可以进行一些简单的更改,以使 GitLab 以您喜欢的方式设置。
调整您的个人资料设置
在新安装后,您应该做的第一件事之一是将您的个人资料整理好。GitLab 选择了一些合理的默认值,但一旦您开始使用该软件,这些通常是不合适的。
要进行必要的修改,请单击界面右上角的用户图标。在出现的下拉菜单中,选择 Settings:
!GitLab 个人资料设置按钮
您将被带到您的设置的 Profile 部分:
!GitLab 个人资料设置页面
将 Name 和 Email 地址从 “Administrator” 和 “admin@example.com” 调整为更准确的内容。您选择的名称将显示给其他用户,而电子邮件将用于默认头像检测、通知、通过界面进行的 Git 操作等。
完成后,单击底部的 Update Profile settings 按钮:
!GitLab 更新个人资料设置按钮
确认电子邮件将发送到您提供的地址。按照电子邮件中的说明确认您的帐户,以便您可以开始在 GitLab 中使用它。
更改您的帐户名
接下来,单击左侧菜单栏中的 Account 项目:
!GitLab 帐户菜单项
在这里,您可以找到您的私人 API 令牌或配置双因素身份验证。但是,我们目前感兴趣的功能是 Change username 部分。
默认情况下,第一个管理员帐户被赋予名称 root。由于这是一个已知的帐户名,将其更改为不同的名称更安全。您仍将拥有管理员权限;唯一会改变的是名称:
!GitLab 更改用户名部分
单击 Update username 按钮进行更改:
!GitLab 更新用户名按钮
下次登录到 GitLab 时,请记住使用您的新用户名。
将 SSH 密钥添加到您的账户
在大多数情况下,您会希望使用 SSH 密钥与 Git 交互以访问您的 GitLab 项目。为此,您需要将您的 SSH 公钥添加到您的 GitLab 账户。
如果您已经在本地计算机上创建了 SSH 密钥对,您通常可以通过输入以下命令查看公钥:
cat ~/.ssh/id_rsa.pub
您应该会看到一大段文本,就像这样:
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDMuyMtMl6aWwqBCvQx7YXvZd7bCFVDsyln3yh5/8Pu23LW88VXfJgsBvhZZ9W0rPBGYyzE/TDzwwITvVQcKrwQrvQlYxTVbqZQDlmsC41HnwDfGFXg+QouZemQ2YgMeHfBzy+w26/gg480nC2PPNd0OG79+e7gFVrTL79JA/MyePBugvYqOAbl30h7M1a7EHP3IV5DQUQg4YUq49v4d3AvM0aia4EUowJs0P/j83nsZt8yiE2JEYR03kDgT/qziPK7LnVFqpFDSPC3MR3b8B354E9Af4C/JHgvglv2tsxOyvKupyZonbyr68CqSorO2rAwY/jWFEiArIaVuDiR9YM5 sammy@mydesktop
复制这段文本,然后返回到 GitLab 网页界面的个人资料设置页面。
如果您得到的是以下消息,说明您的计算机上尚未配置 SSH 密钥对:
cat: /home/sammy/.ssh/id_rsa.pub: No such file or directory
如果是这种情况,您可以通过输入以下命令来创建 SSH 密钥对:
ssh-keygen
接受默认设置,并可选择提供密码以在本地保护密钥:
Generating 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
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDMuyMtMl6aWwqBCvQx7YXvZd7bCFVDsyln3yh5/8Pu23LW88VXfJgsBvhZZ9W0rPBGYyzE/TDzwwITvVQcKrwQrvQlYxTVbqZQDlmsC41HnwDfGFXg+QouZemQ2YgMeHfBzy+w26/gg480nC2PPNd0OG79+e7gFVrTL79JA/MyePBugvYqOAbl30h7M1a7EHP3IV5DQUQg4YUq49v4d3AvM0aia4EUowJs0P/j83nsZt8yiE2JEYR03kDgT/qziPK7LnVFqpFDSPC3MR3b8B354E9Af4C/JHgvglv2tsxOyvKupyZonbyr68CqSorO2rAwY/jWFEiArIaVuDiR9YM5 sammy@mydesktop
复制显示的文本块,然后返回到 GitLab 网页界面的个人资料设置。
点击左侧菜单中的SSH Keys项:
!GitLab SSH Keys 菜单项
在提供的空间中粘贴您从本地计算机复制的公钥。给它一个描述性的标题,然后点击Add key按钮:
!GitLab 添加 SSH 密钥
现在,您应该能够在本地计算机上管理您的 GitLab 项目和仓库,而无需提供您的 GitLab 账户凭据。
限制或禁用公共注册(可选)
您可能已经注意到,当您访问您的 GitLab 实例的登录页面时,任何人都可以注册帐户。如果您希望托管公共项目,这可能是您想要的。然而,许多时候,更严格的设置是可取的。
首先,点击页面顶部主菜单栏中的扳手图标,进入管理区域:
!GitLab 管理区域按钮
在接下来的页面上,您可以看到整个 GitLab 实例的概述。要调整设置,请点击左侧菜单底部的设置选项。
!GitLab 管理设置按钮
您将进入到 GitLab 实例的全局设置页面。在这里,您可以调整一些影响新用户是否可以注册以及他们的访问级别的设置。
禁用注册
如果您希望完全禁用注册(您仍然可以手动创建新用户的帐户),请滚动到注册限制部分。
取消选择启用注册复选框:
!GitLab 取消选择启用注册
滚动到页面底部,点击保存按钮:
!GitLab 保存设置按钮
注册部分现在应该从 GitLab 登录页面中移除了。
按域限制注册
如果您正在使用 GitLab 作为提供与域相关的电子邮件地址的组织的一部分,您可以通过域来限制注册,而不是完全禁用它们。
在注册限制部分,首先选择注册时发送确认电子邮件框,只有在用户确认了他们的电子邮件后才允许登录。
接下来,将您的域或域添加到注册白名单域框中,每行一个。您可以使用星号“*”来指定通配符域:
!GitLab 按域限制注册
滚动到页面底部,点击保存按钮:
!GitLab 保存设置按钮
注册部分现在应该从 GitLab 登录页面中移除了。
限制项目创建
默认情况下,新用户可以创建多达 10 个项目。如果您希望允许外部新用户进行可见性和参与,但希望限制他们创建新项目的访问权限,您可以在帐户和限制设置部分进行设置。
在其中,您可以将默认项目限制更改为 0,以完全禁止新用户创建项目:
!GitLab 将项目设置为零
新用户仍然可以手动添加到项目中,并且可以访问其他用户创建的内部或公共项目。
滚动到页面底部,点击保存按钮:
!GitLab 保存设置按钮
新用户现在可以创建帐户,但无法创建项目。
创建定期任务以自动更新 Let’s Encrypt 证书
根据设计,Let’s Encrypt 证书仅有效期为 90 天。如果您之前为您的 GitLab 域启用了 Let’s Encrypt,您需要确保定期更新您的证书,以避免服务中断。GitLab 提供了gitlab-ctl renew-le-certs
命令,在当前资产接近到期时请求新证书。
为了自动化这个过程,我们可以创建一个定期任务,定期运行这个命令。该命令只会在证书接近到期时进行更新,因此我们可以安全地定期运行它。
首先,在您的文本编辑器中创建并打开/etc/cron.daily/gitlab-le
文件:
sudo nano /etc/cron.daily/gitlab-le
在其中,粘贴以下脚本:
#!/bin/bash
set -e
/usr/bin/gitlab-ctl renew-le-certs > /dev/null
完成后保存并关闭文件。
通过输入以下命令将文件标记为可执行:
sudo chmod +x /etc/cron.daily/gitlab-le
现在,GitLab 应该每天自动检查其 Let’s Encrypt 证书是否需要更新。如果需要,命令将自动更新证书。
结论
您现在应该在自己的服务器上拥有一个正常运行的 GitLab 实例。您可以开始导入或创建新项目,并为您的团队配置适当的访问级别。GitLab 定期添加功能并对其平台进行更新,因此请务必查看项目的主页,以了解任何改进或重要通知的最新信息。