介绍
GitLab是一个开源应用程序,主要用于托管Git仓库,具有附加的与开发相关的功能,如问题跟踪。它旨在使用自己的基础设施托管,并提供部署作为开发团队的内部仓库的灵活性,与用户交互的公共方式,或为贡献者托管自己的项目的手段。
GitLab 项目允许您在自己的硬件上创建一个 GitLab 实例,使用最小的安装机制. 在本指南中,您将学习如何在 Ubuntu 20.04 服务器上安装和配置 GitLab 社区版。
前提条件
要跟随这个教程,你需要:
- 具有非root
sudo
用户和基本防火墙的 Ubuntu 20.04 服务器. 要设置此功能,请遵循我们的 Ubuntu 20.04 初始服务器设置指南。
发布的GitLab硬件要求建议使用至少有以下服务器:
- 4 個核心為您的 CPU
- 4 GB RAM 為記憶體
虽然您可能能够通过替换 RAM 的某些交换空间来解决问题,但这并不建议,本指南中的以下示例将使用这些最小资源。
- 指向您的服务器的域名. 有关更多信息,请阅读我们关于如何在DigitalOcean上开始使用DNS的文档(https://docs.digitalocean.com/products/networking/dns/quickstart//)。
步骤 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
更新它以匹配您的域,并确保更改http
到https
,以便自动将用户重定向到受 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为您生成一个初始的安全密码. 它存储在一个文件夹中,您可以作为一个管理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 ** 按钮. 您将登录到应用程序并被带到一个目标页面,提示您开始添加项目:
现在你可以精心调节你的GitLab实例。
更新您的密码
登录后,您应该做的第一件事之一是更改密码. 要进行此更改,请点击导航栏右上角的图标,然后选择 Edit Profile:
在左导航栏中,选择 ** 密码** 以更改您的 GitLab 生成的密码,以安全密码,然后点击 ** 保存密码** 按钮,当您完成更新时:
您将被带回登录屏幕,通知您的密码已更改. 输入您的新密码来重新登录您的 GitLab 实例:
调整您的个人资料设置
GitLab 会选择一些合理的默认值,但一旦您开始使用该软件,它们通常是不合适的。
要进行必要的更改,请点击导航栏的右上角的用户图标,然后选择 Edit Profile。
您可以将管理员
和[email protected]
中的姓名
和电子邮件
地址调整为更准确的东西。您选择的名称将显示给其他用户,而电子邮件将用于默认的外观者检测、通知、Git界面上的操作等:
当您完成更新时,点击底部的更新个人资料设置
按钮,您将被要求输入密码以确认更改。
一个确认电子邮件将发送到您提供的地址. 按照电子邮件中的说明来确认您的帐户,以便您可以开始使用它与GitLab。
更改您的帐户名称
接下来,在左侧导航栏中选择 ** 帐户**:
在这里,您可以启用双重身份验证并更改您的 用户名. 默认情况下,第一个管理帐户将被命名为 root. 由于这是已知的帐户名称,所以更安全地将其更改为另一个名称。
点击更新用户名
按钮进行更改,您将被要求随后确认更改。
下次你登录GitLab时,请记住使用你的新用户名。
将 SSH 密钥添加到您的帐户中
您可以使用 Git 允许 SSH 密钥与您的 GitLab 项目进行交互. 要做到这一点,您需要将 SSH 公共密钥添加到您的 GitLab 帐户中。
在左侧的导航栏中,选择 SSH 密钥:
如果您已经在本地计算机上创建了 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:
从左侧的导航栏中选择 Settings:
您将被带到您的 GitLab 实例的全球设置. 在这里,您可以调整一些会影响新用户是否可以登录和访问水平的设置。
禁用签名
如果您想完全禁用登录,请滚动到 ** 登录限制** 部分,然后按 ** 扩展** 查看选项。
然后删除启用注册
选项框:
请记住,在更改后点击保存更改
按钮。
登录部分现在已从 GitLab 定位页面中删除。
按域名限制注册
如果您正在使用 GitLab 作为提供与域相关联的电子邮件地址的组织的一部分,您可以根据域限制登录,而不是完全禁用它们。
在登录限制
部分中,选择登录
框上的发送确认电子邮件
,这将允许用户在确认电子邮件后才登录。
接下来,将您的域名或域名添加到白名单域名注册
框中,每行一个域名。
当你完成时,点击保存更改
按钮。
登录部分现在已从 GitLab 定位页面中删除。
限制项目创建
默认情况下,新用户可以创建最多 10 个项目. 如果您希望允许来自外部的新用户进行可见性和参与,但想要限制他们的访问,以创建新项目,您可以在 帐户和限制设置部分这样做。
在内部,您可以将 **默认项目限制 ** 更改为 0 以完全禁用新用户创建项目:
新的用户仍然可以手动添加到项目,并且可以访问由其他用户创建的内部或公共项目。
更新后,请记住点击保存更改
按钮。
新用户现在可以创建帐户,但无法创建项目。
更新 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 正在定期添加功能并对其平台进行更新,所以请务必检查项目的主页以获取任何改进或重要通知。