本教程的先前版本由Justin Ellingwood编写
介绍
GitLab CE或Community Edition是一个开源应用程序,主要用于托管Git存储库,以及其他与开发相关的功能,如问题跟踪。 它旨在使用您自己的基础架构进行托管,并为您的开发团队提供部署内部存储库的灵活性,与用户交互的公共方式,或者为贡献者提供托管自己项目的方法。
GitLab项目使用简单的安装机制在您自己的硬件上设置GitLab实例变得相对简单。 在本指南中,我们将介绍如何在Ubuntu 18.04服务器上安装和配置GitLab。
先决条件
在本教程中,您将需要:
- 一个Ubuntu 18.04服务器,带有非root sudo用户和基本防火墙。 要进行此设置,请按照我们的Ubuntu 18.04初始服务器设置指南进行操作 。
已发布的GitLab硬件要求建议使用服务器:
- 2个核心
- 8GB的RAM
虽然您可以通过替换一些交换空间来获取RAM,但不建议这样做。 对于本指南,我们假设您至少拥有上述资源。
- 域名指向您的服务器。 有关更多信息,请参阅有关如何在DigitalOcean上开始使用DNS的文档。 本教程将使用域名example.com 。
第1步 - 安装依赖项
在我们自己安装GitLab之前,安装一些在安装过程中持续使用的软件非常重要。 幸运的是,可以从Ubuntu的默认包存储库轻松安装所有必需的软件。
由于这是我们第一次在此会话期间使用apt
,因此我们可以刷新本地包索引,然后键入以下内容来安装依赖项:
sudo apt update
sudo apt install ca-certificates curl openssh-server postfix
您可能已经安装了一些此软件。 对于postfix
安装,请在出现提示时选择“ Internet站点” 。 在下一个屏幕上,输入服务器的域名以配置系统发送邮件的方式。
第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访问。
/etc/services
文件中提供了HTTP和HTTPS的端口映射协议,因此我们可以按名称允许该流量。 如果您尚未启用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
在top附近是external_url
配置行。 更新它以匹配您的域。 将http
更改为https
以便GitLab自动将用户重定向到受Let's加密证书保护的站点:
##! 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的加密项目可以用来与您联系。 取消注释并填写此内容是一个好主意,以便您知道任何问题:
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选择了一些合理的默认值,但是一旦开始使用该软件,这些默认值通常都不合适。
要进行必要的修改,请单击界面右上角的用户图标。 在显示的下拉菜单中,选择设置 :
您将进入设置的“ 个人资料”部分:
将名称和电子邮件地址从“管理员”和“ admin@example.com ”调整为更准确的名称。 您选择的名称将显示给其他用户,而电子邮件将用于默认头像检测,通知,通过界面的Git操作等。
完成后,单击底部的“ 更新配置文件设置”按钮:
确认电子邮件将发送至您提供的地址。 按照电子邮件中的说明确认您的帐户,以便您可以开始使用GitLab。
更改您的帐户名称
接下来,单击左侧菜单栏中的Account项:
在这里,您可以找到您的私有API令牌或配置双因素身份验证。 但是,我们目前感兴趣的功能是更改用户名部分。
默认情况下,第一个管理帐户的名称为root 。 由于这是一个已知的帐户名称,因此将其更改为其他名称会更安全。 您仍将拥有管理权限; 唯一会改变的是名字。 用您首选的用户名替换root :
单击“ 更新用户名”按钮进行更改:
下次登录GitLab时,请记住使用新用户名。
在您的帐户中添加SSH密钥
在大多数情况下,您需要使用带有Git的SSH密钥与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界面中的配置文件设置 。
单击左侧菜单中的SSH Keys项:
在提供的空间中粘贴从本地计算机复制的公钥。 为其指定一个描述性标题,然后单击“ 添加”键按钮:
您现在应该能够从本地计算机管理GitLab项目和存储库,而无需提供GitLab帐户凭据。
第6步 - 限制或禁用公共注册(可选)
您可能已经注意到,当您访问GitLab实例的登录页面时,任何人都可以注册一个帐户。 如果您希望托管公共项目,这可能是您想要的。 然而,很多时候,需要更多限制性设置。
首先,点击页面顶部主菜单栏中的扳手图标 ,进入管理区域:
在随后的页面上,您可以看到整个GitLab实例的概述。 要调整设置,请单击左侧菜单底部的“设置”项:
您将进入GitLab实例的全局设置。 在这里,您可以调整一些影响新用户是否可以注册的设置及其访问级别。
禁用注册
如果您希望完全禁用注册(您仍然可以为新用户手动创建帐户),请向下滚动到“ 注册限制”部分。
取消选中已启用注册复选框:
向下滚动到底部,然后单击“ 保存更改”按钮:
现在应该从GitLab登录页面中删除注册部分。
通过域限制注册
如果您将GitLab用作提供与域关联的电子邮件地址的组织的一部分,则可以按域限制注册,而不是完全禁用它们。
在“ 注册限制”部分中,选择“ 在注册时发送确认电子邮件”框,这样,用户只有在确认其电子邮件后才能登录。
接下来,将您的域或域添加到白名单域以进行注册 ,每行一个域。 您可以使用星号“*”指定通配符域:
向下滚动到底部,然后单击“ 保存更改”按钮:
现在应该从GitLab登录页面中删除注册部分。
限制项目创建
默认情况下,新用户最多可以创建10个项目。 如果您希望允许来自外部的新用户进行可见性和参与,但希望限制他们创建新项目的权限,则可以在“ 帐户和限制设置”部分中执行此操作。
在内部,您可以将默认项目限制更改为0以完全禁用新用户创建项目:
新用户仍可手动添加到项目中,并可访问其他用户创建的内部或公共项目。
向下滚动到底部,然后单击“ 保存更改”按钮:
新用户现在可以创建帐户,但无法创建项目。
更新让我们加密证书
默认情况下,GitLab的计划任务设置为每隔四天午夜后更新Let的加密证书,确切的分钟基于您的external_url
。 您可以在/etc/gitlab/gitlab.rb
文件中修改这些设置。 例如,如果您想在12:30每7天更新一次,可以按如下方式进行配置:
letsencrypt['auto_renew_hour'] = "12"
letsencrypt['auto_renew_minute'] = "30"
letsencrypt['auto_renew_day_of_month'] = "*/7"
您还可以通过向/etc/gitlab/gitlab.rb
添加其他设置来禁用自动续订:
letsencrypt['auto_renew'] = false
通过自动续订,您无需担心服务中断。
结论
您现在应该在自己的服务器上托管一个正常工作的GitLab实例。 您可以开始导入或创建新项目,并为您的团队配置适当的访问级别。 GitLab会定期添加功能并对其平台进行更新,因此请务必查看项目主页以及时了解最新任何改进或重要通知。