在Ubuntu 18.04上安装和配置GitLab的方法

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。

简介

GitLab 是一个开源应用程序,主要用于托管 Git 仓库,并提供额外的与开发相关的功能,如问题跟踪。它旨在使用您自己的基础设施进行托管,并提供部署灵活性,可作为开发团队的内部存储库存储库、与用户进行公开交互的方式,或者是贡献者托管其自己的项目的手段。

GitLab 项目使您能够在自己的硬件上创建一个 GitLab 实例,具有最小的安装机制。在本指南中,您将学习如何在 Ubuntu 18.04 服务器上安装和配置 GitLab 社区版。

先决条件

要按照本教程进行操作,您需要:

  • 一个安装了 Ubuntu 18.04 的服务器,具有非root sudo 用户和基本防火墙。要设置这些,请按照我们的 Ubuntu 18.04 初始服务器设置指南进行操作。

发布的 GitLab 硬件要求建议使用至少具有以下配置的服务器:

  • 4 个 CPU 核心
  • 4GB 内存

尽管您可能可以通过将一些交换空间替换为内存来满足要求,但并不建议这样做。本指南中的示例将使用这些最低资源。

  • 指向您服务器的域名。有关更多信息,请阅读我们的关于在 DigitalOcean 上开始使用 DNS 的文档。本教程将使用 your_domain 作为示例,但请确保将其替换为您的实际域名。

步骤 1 — 安装依赖项

在安装 GitLab 之前,重要的是要安装安装过程中和持续使用的软件。所需的软件可以从 Ubuntu 的默认软件包存储库中安装。

首先,刷新本地软件包索引:

sudo apt update

然后通过输入以下命令安装依赖项:

sudo apt install ca-certificates curl openssh-server postfix tzdata perl

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

现在,您已经安装了依赖项,可以开始安装 GitLab。

步骤 2 — 安装 GitLab

有了依赖项,您可以安装 GitLab。此过程利用安装脚本来配置您的系统以使用 GitLab 存储库。

首先,进入 /tmp 目录:

cd /tmp

然后下载安装脚本:

curl -LO https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh

随时检查下载的脚本,以确保您对其将要执行的操作感到满意。您还可以在 GitLab 安装说明中找到托管版本的脚本:

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
状态:activeTo                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere                  
OpenSSH (v6)               ALLOW       Anywhere (v6)

当前规则允许 SSH 流量通过,但对其他服务的访问受到限制。由于 GitLab 是一个 Web 应用程序,您需要允许 HTTP 访问。由于您将利用 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
状态:activeTo                         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 的配置文件。本示例使用 nano

sudo nano /etc/gitlab/gitlab.rb

搜索 external_url 配置行。将其更新为与您的域匹配,并确保将 http 更改为 https,以自动将用户重定向到由 Let’s Encrypt 证书保护的站点:

...
## GitLab URL
##! URL on which GitLab will be reachable.
##! For more details on configuring external_url see:
##! https://docs.gitlab.com/omnibus/settings/configuration.html#configuring-the-external-url-for-gitlab
##!
##! Note: During installation/upgrades, the value of the environment variable
##! EXTERNAL_URL will be used to populate/replace this value.
##! On AWS EC2 instances, we also attempt to fetch the public hostname/IP
##! address from AWS. For more details, see:
##! https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instancedata-data-retrieval.html
external_url 'https://your_domain'
...

接下来,找到 letsencrypt['contact_emails'] 设置。如果您使用的是 nano,可以通过按 CTRL+W 启用搜索提示。在提示中输入 letsencrypt['contact_emails'],然后按 ENTER。此设置定义了 Let’s Encrypt 项目可以使用的电子邮件地址列表,以便在您的域出现问题时与您联系。建议取消注释并填写此信息,以便及时了解可能发生的任何问题:

letsencrypt['contact_emails'] = ['sammy@example.com']

完成更改后,保存并关闭文件。如果您使用的是 nano,可以按 CTRL+X,然后按 Y,然后按 ENTER 完成此操作。

运行以下命令重新配置 GitLab:

sudo gitlab-ctl reconfigure

这将使用它可以找到的关于您的服务器的信息初始化 GitLab。这是一个完全自动化的过程,因此您不必回答任何提示。该过程还将为您的域配置 Let’s Encrypt 证书。

步骤 5 —— 通过 Web 界面执行初始配置

在 GitLab 运行时,您可以通过 Web 界面对应用程序进行初始配置。

首次登录

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

https://your_domain

首次访问时,您将看到一个登录页面:

!GitLab 初始登录页面

GitLab 为您生成了一个初始安全密码。它存储在一个文件夹中,您可以作为管理员 sudo 用户访问:

sudo nano /etc/gitlab/initial_root_password
# 警告:此值仅在以下条件下有效
#          1. 如果手动提供(通过 `GITLAB_ROOT_PASSWORD` 环境变量或通过 `gitlab_rails['initial_root_password']` 设置在 `gitlab.rb` 中提供,它是在首次为数据库生成种子之前提供的
#          2. 密码尚未通过 UI 或命令行手动更改。
#
#          如果此处显示的密码不起作用,您必须按照 https://docs.gitlab.com/ee/security/reset_user_password.html#reset-your-root-password 进行重置管理员密码。Password: YOUR_PASSWORD# 注意:此文件将在 24 小时后的第一次重新配置运行时自动删除。

返回到登录页面,输入以下内容:

  • 用户名:root
  • 密码:[在 /etc/gitlab/initial_root_password 中列出的密码]

将这些值输入到字段中,然后单击 登录 按钮。您将登录到应用程序,并转到提示您开始添加项目的登录页面:

!作为 root 登录后的 GitLab 仪表板。

现在,您可以微调您的 GitLab 实例。

更新您的密码

登录后,您应该做的第一件事之一是更改您的密码。要进行此更改,请单击导航栏右上角的图标,然后选择 编辑个人资料

!单击用户图标并选择“编辑个人资料”以进入设置页面

然后,您将进入用户设置页面。在左侧导航栏中,选择 密码 以将您的 GitLab 生成密码更改为安全密码,然后在完成更新后单击 保存密码 按钮:

!密码设置在左侧导航栏中。您可以从这里更新您的密码。

您将被带回登录屏幕,并显示密码已更改的通知。输入您的新密码以重新登录到您的 GitLab 实例:

!更改密码后,您将被要求使用更新后的密码重新登录。

调整个人资料设置

GitLab 默认选择了一些合理的设置,但一般在开始使用该软件后,这些设置通常不再适用。

要进行必要的修改,请点击导航栏右上角的用户图标,然后选择编辑个人资料

您可以将姓名电子邮件地址从"管理员"和"admin@example.com"调整为更准确的内容。您选择的姓名将显示给其他用户,而电子邮件将用于默认头像检测、通知、通过界面进行的 Git 操作等:

!在编辑个人资料设置中更新您的姓名和电子邮件

完成更新后,点击底部的更新个人资料设置按钮。然后,您将被提示输入密码以确认更改。

确认邮件将发送到您提供的地址。请按照邮件中的说明确认您的帐户,以便开始在 GitLab 中使用它。

更改您的帐户名称

接下来,在左侧导航栏中选择帐户

!左侧导航栏中的 GitLab 帐户选择

在这里,您可以启用双因素认证并更改您的用户名。默认情况下,第一个管理员帐户被赋予名称root。由于这是一个已知的帐户名称,将其更改为其他名称更安全。您仍将拥有管理员权限;唯一变化的是名称。将root替换为您喜欢的用户名:

!将您的用户名从’root’更改为您喜欢的内容。

点击更新用户名按钮进行更改。然后,您将被提示确认更改。

下次登录 GitLab 时,请记住使用您的新用户名。

将 SSH 密钥添加到您的帐户

您可以使用 SSH 密钥与 GitLab 项目进行交互。为此,您需要将您的 SSH 公钥添加到您的 GitLab 帐户中。

在左侧导航栏中选择SSH 密钥

!您可以在此处输入您的 SSH 公钥的 SSH 密钥页面。

如果您已经在本地计算机上创建了 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 实例中的密钥文本框中。为其提供一个描述性标题,然后点击添加密钥按钮。

现在,您可以在本地计算机上管理您的 GitLab 项目和仓库,而无需提供您的 GitLab 帐户凭据。

第六步 — 限制或禁用公开注册

在当前设置下,任何人都可以在访问 GitLab 实例的登录页面时注册账户。如果您希望托管公共项目,这可能是您想要的。然而,很多时候,更严格的设置是可取的。

首先,点击顶部导航栏中的汉堡菜单,选择管理

!点击顶部导航栏中的汉堡菜单,选择“管理”以继续

从左侧导航栏中选择设置

!从管理导航栏中选择“设置”

您将进入 GitLab 实例的全局设置页面。在这里,您可以调整一些影响新用户是否可以注册以及他们的访问级别的设置。

禁用注册

如果您希望完全禁用注册,滚动到注册限制部分,点击展开以查看选项。

然后取消选中启用注册复选框:

!取消 GitLab 启用注册

在进行更改后,记得点击保存更改按钮。

现在,注册部分已从 GitLab 登录页面中移除。

按域限制注册

如果您正在使用提供与域相关的电子邮件地址的组织的 GitLab,您可以按域限制注册,而不是完全禁用注册。

注册限制部分,选择注册时发送确认电子邮件框,这将允许用户在确认电子邮件后才能登录。

接下来,将您的域或域添加到注册的域名白名单框中,每行一个域。您可以使用星号“*”来指定通配符域:

!按域限制注册

完成后,点击保存更改按钮。

现在,注册部分已从 GitLab 登录页面中移除。

限制项目创建

默认情况下,新用户可以创建多达 10 个项目。如果您希望允许外部新用户查看和参与,但希望限制他们创建新项目的访问权限,您可以在帐户和限制设置部分进行设置。

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

!从“帐户和限制”设置中,您可以将项目限制设置为零

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

更新后,记得点击保存更改按钮。

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

更新 Let’s Encrypt 证书

默认情况下,GitLab 设置了定时任务,在每隔四天的午夜后更新 Let’s Encrypt 证书,具体分钟数基于您的 external_url。您可以在 /etc/gitlab/gitlab.rb 文件中修改这些设置。

例如,如果您希望在每隔 7 天的 12:30 进行更新,您可以进行配置。首先,进入配置文件:

sudo nano /etc/gitlab/gitlab.rb

然后,在文件中找到以下行,去掉 # 并更新如下:

...
################################################################################
# Let's Encrypt 集成
################################################################################
# letsencrypt['enable'] = nil
letsencrypt['contact_emails'] = ['sammy@digitalocean'] # 这应该是要添加为联系人的电子邮件地址数组
# letsencrypt['group'] = 'root'
# letsencrypt['key_size'] = 2048
# letsencrypt['owner'] = 'root'
# letsencrypt['wwwroot'] = '/var/opt/gitlab/nginx/www'
# 有关这些设置的更多信息,请参阅 http://docs.gitlab.com/omnibus/settings/ssl.html#automatic-renewal
letsencrypt['auto_renew'] = true
letsencrypt['auto_renew_hour'] = "12"
letsencrypt['auto_renew_minute'] = "30"
letsencrypt['auto_renew_day_of_month'] = "*/7"
...

您还可以通过将 letsencrypt['auto_renew'] 设置为 false 来禁用自动更新:

...
letsencrypt['auto_renew'] = false
...

有了自动更新,您就不需要担心服务中断。

结论

您现在在自己的服务器上托管了一个可用的 GitLab 实例。您可以开始导入或创建新项目,并为团队配置适当的访问级别。GitLab 定期添加功能并对其平台进行更新,因此请务必查看项目的主页,以了解任何改进或重要通知。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/36851.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

为什么IP地址会被列入黑名单?

您是否曾经历过网站访客数量骤减或电子邮件投递失败的困扰?这背后或许隐藏着一个常被忽略的原因:您的IP地址可能已经被列入了黑名单内。尽管您并没有进行任何违法的网络操作,但这个问题依然可能出现。那么,究竟黑名单是什么&#…

PostgreSQL 性能优化与调优(六)

1. 索引优化 1.1 创建索引 索引可以显著提高查询性能。创建索引的基本语法如下: CREATE INDEX index_name ON table_name (column_name);例如,为 users 表的 username 列创建索引: CREATE INDEX idx_username ON users (username); 1.2 …

【VMware】VMware 开启的虚拟机无法联网的解决方案

目录 🌊1. 问题说明 🌊2. 解决方案 🌍2.1 查看虚拟网络编辑器 🌍2.2 设置 vmnet 🌍2.3 设置虚拟机网络 🌍2.4 Xshell连接虚拟机 🌊1. 问题说明 虚拟机 ping 其他网页显示失败,比如&#…

数据质量管理-时效性管理

前情提要 根据GB/T 36344-2018《信息技术 数据质量评价指标》的标准文档,当前数据质量评价指标框架中包含6评价指标,在实际的数据治理过程中,存在一个关联性指标。7个指标中存在4个定性指标,3个定量指标; 定性指标&am…

Linux内存管理--系列文章陆——可执行文件的装载

应届生面试时,经常会有人问程序和进程有什么区别。简单来讲,程序是一个静态物品,就是存放在磁盘上的一些预先编译好的指令和数据的文件。而进程是一种运行的实例,它是程序在操作系统中的一次运行活动,具有生命周期。进…

汇编语言中的内存管理与寻址方式

在计算机科学中,内存管理是确保程序和数据能够高效、安全地存储和访问的关键环节。汇编语言,作为最接近硬件的编程语言,为程序员提供了直接控制内存的能力。 内存管理基础 内存管理涉及到数据如何在内存中存储、访问和操作。在汇编语言层面…

创建一个快速、高效的网络爬虫:PHP和Selenium示例

随着互联网的不断发展,数据爬取已经成为了许多人的必备技能。而网络爬虫则是实现数据爬取的重要工具之一。 网络爬虫可以自动化地访问网站、获取内容、分析页面并提取所需数据。其中,Selenium是一款非常优秀的网络自动化测试工具,能够模拟真…

Window安全配置

任何本地登录的用户都属于Interactive组Ipconfig/all :用于显示所有网络适配器的完整TCP/IP配置信息route print:用于显示路由表中的当前项目tracert –d:禁止tracert将中间路由器的IP地址解析为名称。这样可以加速显示tracert的结果nslookup…

面向对象分析与设计

文章目录 设计的重点在于模块间的通信,而不在于模块的属性和方法程序就是一群对象,通过消息要求对方做点事情对象间相互协作(消息)以完成系统功能 设计的重点在于模块间的通信,而不在于模块的属性和方法 程序就是一群对象,通过消…

【旭日x3派】部署官方yolov5全流程

地平线旭日x3派部署yolov5--全流程 前言一、深度学习环境安装二、安装docker三、部署3.1、安装工具链镜像3.2、配置天工开物OpenExplorer工具包3.3、创建深度学习虚拟空间,安装依赖:3.4、下载yolov5项目源码并运行3.5、pytorch的pt模型文件转onnx3.6、最…

前端git约定式规范化提交-commitizen

当使用commitizen进行代码提交时,commitizen会提示你在提交代码时填写所必填的提交字段信息内容。 1、全局安装commitizen npm install -g commitizen4.2.4 2、安装并配置 cz-customizeable 插件 2.1 使用 npm 下载 cz-customizeable npm i cz-customizeable6.…

Spark SQL----Troubleshooting

Spark SQL----Troubleshooting JDBC驱动程序类必须对客户端会话和所有executor上的原始类加载器可见。这是因为Java的DriverManager类进行安全检查,导致它在打开连接时忽略所有原始类加载器不可见的驱动程序。一种方便的方法是在所有worker节点上修改compute_classp…

【论文复现】——基于LM优化的NDT点云配准算法

目录 一、算法原理1、论文概述2、参考文献二、代码实现三、结果展示本文由CSDN点云侠原创,原文链接,爬虫自重。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫与GPT生成的文章。 一、算法原理 1、论文概述 传统的正态分布变换配准算法处理初始位姿变换相…

办公软件WPS与Office的区别

临近计算机考试很多同学在纠结我是报wps好?还是ms office好?下面就来详细说说。 1、wps属于国内金山公司的办公软件,里面包含word、Excel和PPT。考试是2021年开始的! 2、MS(Microsoft 微软) office属于美…

AI产品经理面试

把优秀当习惯把优秀当习惯肯定不是口头说说,那有什么判断标准吗? 当我做完一件事儿的时候,我会看它有没有突破我的舒适圈、能不能惊艳到我自己。这就是我的判断标准。 在自我介绍和经历介绍时,面试者应该注重以下几个方面&#xf…

核方法总结(四)——高斯过程回归学习笔记

一、定义 基于核方法的线性回归模型和传统线性回归一样,可以用未知数据进行预测,但不能确定 预测的可信度。在参考书第二章中可知,基于贝叶斯方法可以实现对未知数据依概率预测,进而可得到预测的可信度。这一方法中,通…

爬虫是什么 | Python爬虫应该学习什么知识点?

什么是爬虫 如果说把互联网比喻成蜘蛛网,那么爬虫就是在这张网上的蜘蛛,它可以在上面爬来爬去。在互联网中,爬虫就是机器人,你应该对百度和 Google 很熟悉吧,为什么我们可以很快的从它们的搜索引擎中获取到资料呢&…

嵌入式Linux系统编程 — 4.7 regcomp、regexec、regfree正则表达式函数

目录 1 为什么需要正则表达式 2 正则表达式简介 3 正则表达式规则 4 regcomp、regexec、regfree函数 4.1 函数介绍 4.2 URL格式案例 1 为什么需要正则表达式 在许多的应用程序当中, 有这样的应用场景: 给定一个字符串,检查该字符串是否…

分布式锁及其实现与应用场景

分布式锁及其实现与应用场景 分布式锁是一种用于在分布式系统中协调多个进程或线程对共享资源进行访问的机制。它的主要目的是确保在同一时间只有一个进程或线程可以访问特定资源,从而避免数据竞争和不一致问题。分布式锁通常用于集群环境中,例如微服务…

Rpc服务的提供方(Rpcprovider)的调用流程

首先,服务的提供方,会通过rpcprovider向rpc服务方注册rpc服务对象和服务方法, 那么,我们通过protobuf提供的抽象层的service和method,将服务对象和它所对应的服务方法记录在map表中, 当它启动以后&#xff…