介绍
GitLab CE,或社区版,是一个开源应用程序,主要用于托管Git仓库,具有附加的开发相关功能,如问题跟踪。
GitLab 项目使在自己的硬件上设置一个 GitLab 实例变得相对简单,使用一个简单的安装机制. 在本指南中,我们将介绍如何在 Debian 9 服务器上安装和配置 GitLab。
前提条件
对于这个教程,你将需要:
- 一个 Debian 9 服务器,具有非root
sudo
用户和基本防火墙. 要设置此功能,请遵循我们的 Debian 9 初始服务器设置指南。
发布的GitLab硬件要求建议使用具有以下服务器:
- 2 个内核
- 8 GB RAM
虽然您可能能够通过替换RAM的某些交换空间来解决问题,但不建议使用它. 对于本指南,我们将假设您至少有上述资源。
- 指向您的服务器的域名. 有关更多信息,请参阅我们关于如何在DigitalOcean上开始使用DNS的文档(https://www.digitalocean.com/docs/networking/dns/quickstart/)。
步骤 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
配置行. 更新它以匹配您的域名. 更改http
到https
,以便 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 登录页面:
在这里,您可以使用您刚刚设置的密码登录。
- 用户名: root
- 密码: [您设置的密码]
将这些值输入到现有用户的字段中,然后点击 ** Sign in ** 按钮,您将登录到应用程序,并被带到一个目标页面,提示您开始添加项目:
您现在可以做出一些简单的更改,以便您可以按照您想要的方式设置 GitLab。
调整您的个人资料设置
您在新安装后应该做的第一件事之一就是让您的个人资料变得更好. GitLab 会选择一些合理的默认值,但一旦您开始使用该软件,这些通常是不合适的。
要进行必要的更改,请点击接口右上角的用户图标. 在出现的下载菜单中,选择 设置:
您将被带到您的设置的 ** 配置文件** 部分:
将管理员
和[email protected]
中的姓名
和电子邮件
地址调整为更准确的东西。您选择的名称将显示给其他用户,而电子邮件将用于默认的外观者检测、通知、Git界面上的操作等。
当你完成时,点击底部的更新个人资料设置
按钮:
一个确认电子邮件将发送到您提供的地址. 按照电子邮件中的说明来确认您的帐户,以便您可以开始使用它与GitLab。
更改您的帐户名称
接下来,点击左侧菜单栏中的 ** 帐户** 项:
在这里,您可以找到您的私人 API 代币或配置双重身份验证,但我们目前感兴趣的功能是 更改用户名部分。
默认情况下,第一个管理帐户将被命名为 root. 因为这是已知的帐户名称,所以更安全地将其更改为另一个名称。
点击更新用户名
按钮进行更改:
下次您登录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 项目和存储库,而无需提供您的 GitLab 帐户凭证。
步骤 6 – 限制或禁用公共订阅(可选)
您可能已经注意到,当您访问 GitLab 实例的定位页时,任何人都可以注册帐户。
首先,通过点击页面顶部主菜单栏中的 **wrench 图标来进入管理区域:
在下面的页面上,您可以看到整个 GitLab 实例的概述. 要调整设置,请点击左侧菜单底部的 Settings 项:
您将被带到您的 GitLab 实例的全球设置. 在这里,您可以调整一些会影响新用户是否可以登录和访问水平的设置。
禁用签名
如果您希望完全禁用登录(您仍然可以手动为新用户创建帐户),请向下滚动到登录限制
部分。
删除启用注册
选项框:
向下滚动,然后点击保存更改
按钮:
现在应该从 GitLab 定位页中删除登录部分。
按域名限制注册
如果您正在使用 GitLab 作为提供与域相关联的电子邮件地址的组织的一部分,您可以根据域限制登录,而不是完全禁用它们。
在登录限制
部分中,选择登录
框上的发送确认电子邮件
,这将允许用户在确认电子邮件后才登录。
接下来,将您的域名或域名添加到白名单域名注册
框中,每行一个域名。
向下滚动,然后点击保存更改
按钮:
现在应该从 GitLab 定位页中删除登录部分。
限制项目创建
默认情况下,新用户可以创建最多 10 个项目. 如果您希望允许来自外部的新用户进行可见性和参与,但想要限制他们的访问,以创建新项目,您可以在 帐户和限制设置部分这样做。
在内部,您可以将 **默认项目限制 ** 更改为 0 以完全禁用新用户创建项目:
新的用户仍然可以手动添加到项目,并且可以访问由其他用户创建的内部或公共项目。
向下滚动,然后点击保存更改
按钮:
新用户现在可以创建帐户,但无法创建项目。
更新 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 实例托管在自己的服务器上。您可以开始导入或创建新项目,并为您的团队配置适当的访问级别。