如何在 Ubuntu 上安装和配置 GitLab

简介

GitLab是一个开源应用程序,主要用于托管 Git 仓库,并提供与开发相关的附加功能(如问题跟踪)。GitLab 可由用户自己的基础架构托管,可灵活部署为开发团队的内部存储库、与用户对接的公共方式或供稿者托管自己项目的途径。

通过 GitLab 项目,你可以在自己的硬件上创建一个 GitLab 实例,只需最简单的安装机制。本篇文章将教你如何在 Ubuntu 服务器上安装和配置 GitLab 社区版。

必要准备

  • 一个聪明的大脑(本篇文章内容难度偏难,适合有基础的小伙伴食用,但爱挑战困难的小伙伴也可以试试)

  • 一台Linux服务器,GitLab硬件要求建议使用至少有以下配置的服务器:

    • CPU至少有4个核心
    • 内存至少有4GB
  • 一个指向你服务器的域名。本教程将使用your_domain作为示例,但请确保替换为你自己的域名。

如果你还没有服务器,或者已有的服务器配置不满足的建议的最低配置,那可以跟着我的步骤 ,创建一台属于自己的Linux服务器,

我将会以 雨云 为例,带大家创建一台自己的云服务器,以便尝试本篇文章的内容。

注册链接: https://www.rainyun.com/NTEzMTM1_?s=blog

创建云服务器

以下内容只是参考,具体按照自己的需求选择配置即可。

点击“云产品”→“云服务器”→“立即购买”。

alt text

建议选择距离你较近的区域,以降低延迟。

alt text

选择配置,建议选择 4核4G配置的。

alt text

选择Ubuntu 22.04版本。

alt text

点击“立即购买”,并完成后续购买流程。 购买完成后,等待服务器部署完毕,进入管理面板,找到远程连接信息。

alt text

alt text

使用PowerShell进行远程连接:输入ssh root@你的服务器IP (例如ssh root@154.9.227.239),首次连接需输入yes,然后回车即可登录。

alt text

alt text

到这里,我们的服务器就创建完毕,并且能够远程SSH访问了。

第1步 — 安装依赖项

在安装GitLab之前,需要安装它在安装过程中以及持续运行中所依赖的软件。

首先,更新本地软件包:

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

运行安装程序:

sudo bash /tmp/script.deb.sh

该脚本设置你的服务器以使用GitLab维护的仓库。这使你可以使用与你用于其他系统软件包相同的包管理工具来管理GitLab。完成后,就可以使用apt安装实际的GitLab应用程序:

sudo apt install gitlab-ce

这将在你的系统上安装必要的组件,可能需要一些时间来完成。

第3步 — 调整防火墙规则

在配置GitLab之前,需要在防火墙开启部分端口,你也可以在你购买云服务器的web管理面板中开启对应协议的端口,但在本篇博客中,会使用 ufw 来开启。

通过运行以下命令查看当前活动的防火墙状态:

$ sudo ufw status# 输出
Status: active
To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)

当前规则允许SSH流量通过,但限制了对其他服务的访问。由于GitLab是一个Web应用程序,需要允许HTTP(80)访问。因为你将利用GitLab的内置的功能申请并启用Let’s Encrypt的免费TLS/SSL证书,也允许HTTPS(443)访问。

HTTP和HTTPS的协议到端口映射在/etc/services文件中可用,因此你可以通过名称允许该流量。如果你还没有启用OpenSSH流量,你应该允许该流量:

sudo ufw allow http
sudo ufw allow https
sudo ufw allow OpenSSH

你可以再次检查ufw status以确保你至少授予了这两个服务的访问权限:

$ sudo ufw status# 输出
Status: 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的配置文件。我这个例子使用nano

sudo nano /etc/gitlab/gitlab.rb
  • 搜索external_url配置行。并将它的值改成你的域名,并确保将http更改为https
...
## 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可以用来联系你的电子邮件地址列表。建议取消注释并填写,基本上是用来提醒你的域名SSL证书是否快要过期:

letsencrypt['contact_emails'] = ['you_email@gmail.com']

修改完成后保存,可以按CTRL+X,然后Y,然后ENTER来完成。

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

sudo gitlab-ctl reconfigure

这是一个完全自动化的过程,所以你不需要做什么事情。该过程还将自动为你的域名配置 Let’s Encrypt 证书。

第5步 — 通过Web界面进行初始配置

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

第一次登录

在浏览器中输入你的的 GitLab 服务器的域名:

https://your_domain

第一次访问,会看到一个登录页面:

首次访问需要使用 root 用户登录

GitLab initial login page

GitLab会生成一个初始的安全密码。可以使用sudo用户查看改文件中的密码:

sudo nano /etc/gitlab/initial_root_password

# WARNING: This value is valid only in the following conditions#          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 first time#          2. Password hasn't been changed manually, either via UI or via command line.##          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.Password: YOUR_PASSWORD  # 在这里!!!# NOTE: This file will be automatically deleted in the first reconfigure run after 24 hours.

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

  • 用户名:root
  • 密码:/etc/gitlab/initial_root_password中查看到的密码

然后点击登录按钮,就可以看到 以下画面了:

Your GitLab dashboard after logging in as root.

接下来可以在管理面板中修改部分信息。

更新密码

登录后要做的第一件事就是更改密码。要更改密码,请单击导航栏右上角的图标,然后选择Edit profile

Click on the user icon and select 'Edit Profile' to enter the Settings page

然后进入用户设置页面。在左侧导航栏选择Password,将 GitLab 生成的复杂密码更改为你自己的密码,完成更新后点击Save password按钮:

The Password setting is in the left navigation bar. You can update your password from here.

然后需要重新登录 GitLab。

After changing your password, you'll be asked to log back in with your updated password.

修改配置文件设置

点击导航栏右上角的用户图标,选择 Edit Profile

建议将 Full nameEmail 修改为自己的。

Update your Name and Email within the Edit Profile settings

完成修改后,点击 Update Profile settingsGitlab 会让你验证一次密码。

并且会根据上面填写的 Email 信息,由Gitlab官方,发送一封确认邮件,按提示完成即可。

更改账户名称

在左侧导航栏中选择 Account

GitLab Account selection in the left navigation bar

可以将默认的 root 修改为你自己喜欢的用户名

image-20241103182300874

点击 Update username 进行更改。

下次再登录 Gitlab 的时候,就可以使用你自己喜欢的用户明名登录即可。

为账户添加 SSH 密钥

你可以通过 Git 启用 SSH 密钥来与 GitLab 项目交互。为此,你需要在 GitLab 账户中添加 SSH 公钥。

The SSH Keys page where you can enter your SSH public key.

如果已在本地计算机上创建了 SSH 密钥对,则可输入以下内容查看公钥:

cat ~/.ssh/id_rsa.pub# 正确输出
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDMuyMtMl6aWwqBCvQx7YXvZd7bCFVDsyln3yh5/8Pu23LW88VXfJgsBvhZZ9W0rPBGYyzE/TDzwwITvVQcKrwQrvQlYxTVbqZQDlmsC41HnwDfGFXg+QouZemQ2YgMeHfBzy+w26/gg480nC2PPNd0OG79+e7gFVrTL79JA/MyePBugvYqOAbl30h7M1a7EHP3IV5DQUQg4YUq49v4d3AvM0aia4EUowJs0P/j83nsZt8yiE2JEYR03kDgT/qziPK7LnVFqpFDSPC3MR3b8B354E9Af4C/JHgvglv2tsxOyvKupyZonbyr68CqSorO2rAwY/jWFEiArIaVuDiR9YM5 you_computer_name@mydesktop# 错误输出
cat: ~/.ssh/id_rsa.pub: No such file or directory

如果你输出了:错误输出

可以在本地运行 ssh-keygen 命令,按照提示输入信息即可:

$ ssh-keygen
# 输出,并按提示按 Enter 即可
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 you_computer_name@mydesktop

复制输出的文本并将其填写到 GitLab 实例中的 Key 文本框。

现在,你无需提供 GitLab 账户凭证,就能在本地计算机上管理 GitLab 项目和仓库了。

第 6 步 - 限制或禁用公开注册

在当前的设置下,任何人都有可能在访问 GitLab 实例的登陆页面时注册一个账户。如果你想托管一个公共项目,那这可能就是你想要的效果。

但是如果你需要你自己用,或者你们团队、你们组织内部使用,那么就需要禁用公开注册了,以下内容将会教你:

首先,点击顶部导航栏的菜单,从下拉菜单中选择Admin,进入管理区:

Press the hamburger menu in the top navigation bar and select 'Admin' to proceed

从左侧导航栏中选择 Settings

Select 'Settings' from the administrative navigation bar

你将进入 GitLab 实例的全局设置。在这里,你可以调整一系列影响新用户注册与否及其访问级别的设置。

禁用注册

如果你希望完全禁用注册,请滚动到 Sign-up Restrictions 部分并按下 Expand 查看选项。

然后取消选择 Sign-up enabled 复选框:

GitLab deselect sign-ups enabled

最后保存即可。

限制项目创建

默认情况下,新用户最多可以创建 10 个项目。如果希望允许外部新用户查看和参与,但又想限制他们创建新项目的权限,可以在 Account and Limit Settings 部分中进行限制。

可以将 Default projects limit 更改为 0,以完全禁止新用户创建项目:

From the 'Account and limit' setting, you can set project limits to zero

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

更新 Let’s Encrypt 证书

默认情况下,GitLab 会在每隔四天的晚上更新 Let’s Encrypt 证书,具体时间取决于 external_url 文件。你可以在 /etc/gitlab/gitlab.rb 文件中修改这些设置。

例如,如果你想每隔 7 天在 12:30 更新一次,你可以这样配置。

首先,使用 nano 打开配置文件:

sudo nano /etc/gitlab/gitlab.rb

然后,在文件中找到以下几行,删除 # 并更新为以下内容:

...
################################################################################
# Let's Encrypt integration
################################################################################
# letsencrypt['enable'] = nil
letsencrypt['contact_emails'] = ['you_email@gmail.com'] # This should be an array of email addresses to add as contacts
# letsencrypt['group'] = 'root'
# letsencrypt['key_size'] = 2048
# letsencrypt['owner'] = 'root'
# letsencrypt['wwwroot'] = '/var/opt/gitlab/nginx/www'
# See http://docs.gitlab.com/omnibus/settings/ssl.html#automatic-renewal for more on these settings
# 以下四行内容
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
...

有了自动续订功能,就无需担心 HTTPS 服务中断。

相关链接
雨云 - 新一代云服务提供商: https://www.rainyun.com/NTEzMTM1_?s=blog
我的博客:https://blog.ivwv.site

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

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

相关文章

c语言-常量和变量

文章目录 一、常量是什么?(1)整型常量:(2)实型常量:(3)字符常量:(4)字符串常量(5)地址常量 二、define 和 con…

【Linux】进程间通信(匿/命名管道、共享内存、消息队列、信号量)

文章目录 1. 进程通信的目的2. 管道2.1 原理2.2 匿名管道2.3 管道通信场景:进程池2.4 命名管道 3. System V共享内存3.1 操作共享内存3.2 使用共享内存通信 4. System V 消息队列(了解)5. System V 信号量(了解)5.1 信…

VirtualBox 解决虚拟机Cable Unplugged 无法上网问题

问题描述 VirtualBox 中的虚拟机无法上网,在虚拟机中查看网络设置显示 Cable Unplugged。 解决方案 选择VirtualBox 上方任务栏的控制->设置->网络,勾选接入网线即可解决。

大学适合学C语言还是Python?

在大学学习编程时,选择C语言还是Python,这主要取决于你的学习目标、专业需求以及个人兴趣。以下是对两种语言的详细比较,帮助你做出更明智的选择: C语言 优点: 底层编程:C语言是一种底层编程语言&#x…

【深入浅出】深入浅出Bert(附面试题)

本文的目的是为了帮助大家面试Bert,会结合我的面试经历以及看法去讲解Bert,并非完整的技术细致讲解,介意请移步。 深入浅出】深入浅出Bert(附面试题) 网络结构Pre-TrainingFine-Tuning 输入编码词向量编码句子编码位置…

thrift rpc 四种类型的服务端的实现详细介绍

thrift rpc 四种类型的服务端的实现详细介绍 这里主要是使用 thrift 开发的时候服务器端的实现,以及 thrift 提供给我们多钟的服务的实现,以及每个实现的服务器的特点和 API 介绍,TServer 主要包含以下几种实现 TSimpleServer 阻塞的但线程…

Python | Leetcode Python题解之第530题二叉搜索树的最小绝对差

题目: 题解: # Definition for a binary tree node. # class TreeNode(object): # def __init__(self, x): # self.val x # self.left None # self.right Noneclass Solution(object):def isValidBST(self, root):"…

[Prometheus学习笔记]从架构到案例,一站式教程

文章目录 Prometheus 优势Prometheus 的组件、架构Prometheus Server 直接从监控目标中或者间接通过推送网关来拉取监控指标,它在本地存储所有抓取到的样本数据,并对此数据执行一系列规则,以汇总和记录现有数据的新时间序列或生成告警。可以通…

抓住亚马逊、shein新品扶持期,利用测评提升搜索排名与销量

亚马逊的卖家们应该意识到,新发布的产品在上线后的2到4周内,通常会获得平台的流量支持。这一阶段被称为“新品流量黄金期”,在此期间,产品的搜索排名和曝光率通常会比平时更高。因此,如何有效利用这一阶段,…

轻松入门WordPress:在Ubuntu上搭建本地网站并配置公网访问地址

文章目录 前言1. 安装WordPress2. 创建WordPress数据库3. 安装相对URL插件4. 安装内网穿透发布网站4.1 命令行方式:4.2. 配置wordpress公网地址 5. 配置WordPress固定公网地址 前言 本文主要介绍如何在Linux Ubuntu系统上使用WordPress搭建一个本地网站&#xff0c…

华为云计算知识总结——及案例分享

目录 一、华为云计算基础知识二、华为云计算相关案例实战案例一:搭建弹性云服务器(ECS)并部署Web应用案例二:构建基于OBS的图片存储和分发系统案例三:基于RDS的高可用数据库应用案例四:使用华为云DDoS防护保…

银行金融知识竞赛活动策划方案

根据《中国人民银行**市中心支行“创新金融服务,支持经济发展”业务竟赛活动实施方案》安排,中支决定于9月28日举办**市人民银行系统“创新金融服务,支持经济发展”现场业务竞赛,为确保业务竞赛组织工作顺利开展,特制定…

动态规划 01背包(算法)

现有四个物品,小偷的背包容量为8,怎么可以偷得价值较多的物品 如: 物品编号: 1 2 3 4 物品容量: 2 3 4 5 物品价值: 3 4 5 8 记f(k,w) ,当背包容量为w,可以偷k件物品…

引领数字时代:万码优才如何变革IT人才招聘新体验(这里有更精准的推荐)

目录 引领数字时代:万码优才如何变革IT人才招聘新体验引领未来科技,精准链接IT精英精准匹配,高效对接海量资源,覆盖广泛优化体验,简化流程 全面升级:AI赋能数字人才职业成长AI模拟面试职场千问智能简历评估…

Rocky Linux 9安装后无法远程ssh密码登录解决

在Rocky Linux 9版本中,为了增加安全性,默认情况下禁用SSH root密码登录。这是系统默认设定的规则,我们同样也可以更改它。   允许Rocky Linux 9 root用户通过ssh登录方法: 1.编辑SSH配置文件 2.找到以下内容 PermitRootLogin …

1.2 图像处理基本操作

在本实战中,我们将学习如何使用OpenCV进行基本的图像处理操作。首先,我们将通过cv2.imread()函数读取图像,并使用cv2.imshow()在窗口中显示它。接着,我们将探索如何通过cv2.imwrite()保存图像,并设置不同的参数以控制图…

【C++】哈希表模拟:开散列技术与哈希冲突处理

C语法相关知识点可以通过点击以下链接进行学习一起加油!命名空间缺省参数与函数重载C相关特性类和对象-上篇类和对象-中篇类和对象-下篇日期类C/C内存管理模板初阶String使用String模拟实现Vector使用及其模拟实现List使用及其模拟实现容器适配器Stack与QueuePriori…

「Mac畅玩鸿蒙与硬件18」鸿蒙UI组件篇8 - 高级动画效果与缓动控制

高级动画可以显著提升用户体验,为应用界面带来更流畅的视觉效果。本篇将深入介绍鸿蒙框架的高级动画,包括弹性动画、透明度渐变和旋转缩放组合动画等示例。 关键词 高级动画弹性缓动自动动画缓动曲线 一、Animation 组件的高级缓动曲线 缓动曲线&#…

SpringBoot源码解析(二):启动流程之引导上下文DefaultBootstrapContext

SpringBoot源码系列文章 SpringBoot源码解析(一):启动流程之SpringApplication构造方法 SpringBoot源码解析(二):启动流程之引导上下文DefaultBootstrapContext 目录 前言一、入口二、DefaultBootstrapContext1、BootstrapRegistry接口2、BootstrapCon…

ELK之路第三步——日志收集筛选logstash和filebeat

logstash和filebeat(偷懒版) 前言logstash1.下载2.修改配置文件3.测试启动4.文件启动 filebeat1.下载2.配置3.启动 前言 上一篇,我们说到了可视化界面Kibana的安装,这一篇,会简单介绍logstash和filebeat的安装和配置。…