如何在 Ubuntu 上安装和配置 GitLab

news2024/11/5 19:45:02

简介

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.coloradmin.cn/o/2231388.html

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

相关文章

Windows部署rabbitmq

本次安装环境: 系统:Windows 11 软件建议版本: erlang OPT 26.0.2rabbitmq 3.12.4 一、下载 1.1 下载erlang 官网下载地址: 1.2 下载rabbitmq 官网下载地址: 建议使用解压版,安装版可能会在安装软件…

vue2和vue3在html中引用组件component方式不一样

我的vue版本是&#xff1a;20.17.0 一、在HTML中&#xff0c;引用组件格式区别。 vue2引用组件可以是file.vue格式&#xff0c;需要导入&#xff1a;<script src"https://unpkg.com/http-vue-loader"></script>才可以识别vue格式。 vue3引用组件格式是…

uniapp下载文件的方案,包括H5,App方案解决办法

1. 在uniapp需要下载文件&#xff0c;但是显示情况是不能下载。所以只能使用该办法来进行下载。 2. 这有一个注意点是&#xff1a;如果你做的是H5的方案&#xff0c;那么我已经替你踩好坑了&#xff0c;UC浏览器是不支持blob类型的下载&#xff0c;以及创建a标签的方案来进行下…

【ubuntu】双系统无grub引导菜单中没有windows引导项

无GRUB选择系统界面 修改一下配置即可 # 1. 更新下工具 sudo apt update sudo apt install vim# 2. 修改引导设置 sudo vim /etc/default/grub按i编辑&#xff0c; 编辑好ESC推出到控制模式&#xff0c;shift: 输入wq 回车保存 修改GRUB_TIMEOUT_STYLE改为菜单模式 # 3. 修改…

六 在WEB中应用MyBatis(使用MVC架构模式)

六、在WEB中应用MyBatis&#xff08;使用MVC架构模式&#xff09; 实现功能&#xff1a; 银行账户转账 使用技术&#xff1a; HTML Servlet MyBatis WEB应用的名称&#xff1a; bank 6.1 需求描述 6.2 数据库表的设计和准备数据 6.3 实现步骤 第一步&#xff1a;环境…

Rust 力扣 - 73. 矩阵置零

文章目录 题目描述题解思路题解代码题目链接 题目描述 题解思路 我们使用两个变量记录矩阵初始状态的第一行与第一列是否存在0 然后我们遍历矩阵&#xff08;跳过第一行与第一列&#xff09;&#xff0c;如果矩阵中元素为0则将该元素映射到矩阵第一行与矩阵第一列的位置置为0…

ExpandingCard扩展卡片

文章目录 演示效果分析思路核心代码总结 源码 演示效果 分析思路 使用flex布局&#xff0c;每个卡片的宽度都由flex进行灵活调整交互可以增加和删除active&#xff0c;来实现宽度扩增和恢复还需要使用transition进行动画过渡&#xff0c;使得平滑切换 核心代码 首先创建一个…

QT找不到ffmpeg链接库解决方法

error: undefined reference to avformat_network_init() 一个神奇的报错&#xff0c;查了很久&#xff0c;检查步骤&#xff1a; 1、检查了 pro工程文件 2、链接库的真实性和正确性 在main.cpp中调用没有报错&#xff0c;在其它cpp文件中调用就报错。 破案了&#xff0c;…

【Python单元测试】pytest框架单元测试常用用例

【Python单元测试】pytest框架单元测试 配置 命令行操作 测试报告 覆盖率 常用用例 本文重点介绍使用的Mock写法&#xff0c; pytest的基本用法&#xff0c;非本文重点。 pytest 相较于unittest, 写法更加简便。对测试用例直接assert是否符合预期即可 # 定义mock对象, 测试…

OmniGen: Unified Image Generation(代码的复现)

文章目录 论文简介模型的部署需要下载的预训练权重 模型的生成效果图像编辑的效果风格迁移的效果 总结 论文简介 OmniGen的github项目地址 OmniGen: Unified Image Generation。OmniGen 在各种图像生成任务中都表现出了卓越的性能&#xff0c;并可能大大超过现有扩散模型的极…

景联文科技医疗数据处理平台:强化医疗数据标注与管理,推动医疗数字化新篇章

随着医疗科技快速进步与广泛应用&#xff0c;医疗信息的规模正在迅速扩张&#xff0c;如何有效管理这些医疗数据成为了关键议题。 医疗数据不仅包括传统的纸质病历&#xff0c;还有电子病历、实验室检测结果、医学影像等多样化的数字信息。为确保这些数据能为临床决策、科研分析…

在线学习新体验:SpringBoot精品试题库系统

1 绪论 1.1 研究背景 现在大家正处于互联网加的时代&#xff0c;这个时代它就是一个信息内容无比丰富&#xff0c;信息处理与管理变得越加高效的网络化的时代&#xff0c;这个时代让大家的生活不仅变得更加地便利化&#xff0c;也让时间变得更加地宝贵化&#xff0c;因为每天的…

Fluent Editor 富文本开源2个月的总结:增加格式刷、截屏、TypeScript 类型声明等新特性

你好&#xff0c;我是 Kagol&#xff0c;个人公众号&#xff1a;前端开源星球。 Fluent Editor 是一个基于 Quill 2.0 的富文本编辑器&#xff0c;在 Quill 基础上扩展了丰富的模块和格式&#xff0c;框架无关、 功能强大、开箱即用。 2024年8月12日&#xff0c;Fluent Edito…

redis v6.0.16 安装 基于Ubuntu 22.04

redis安装 基于Ubuntu 22.04 本文演示如何在ubuntu22.04下&#xff0c;安装redis v6.0.16&#xff0c;并配置测试远程访问。 Step1 更新环境 sudo apt updateStep2 安装redis sudo apt install redis-server -yStep3 启动 sudo systemctl restart redissudo systemctl sta…

python画出圣诞树(简易版,matplotlib.pyplot) 代码实现

需求 使用python的turtle库绘制圣诞树 绘制结果 代码实现 import matplotlib.pyplot as plt import matplotlib.patches as patches import numpy as npdef draw_christmas_tree(ax):# 定义树的基本参数base_width 6 # 底部宽度height 12 # 总高度levels 3 # 层次数量…

【1个月速成Java】基于Android平台开发个人记账app学习日记——第4天,注册登录逻辑代码

24.11.03 1.输入手机号跳转功能 第一个要设计的功能是&#xff0c;输入手机号以后跳转到另一个页面&#xff0c;输入获取得到的验证码页面。先拿这个功能练练手。 首先看一下此时的完整项目结构&#xff1a; 主要是添加了2个活动类和对应的界面&#xff0c;下面看详细的代码…

使用GraphQL构建现代API

使用GraphQL构建现代API GraphQL简介 安装GraphQL 使用npm安装GraphQL 使用Yarn安装GraphQL 创建GraphQL服务器 定义Schema 编写Resolver 查询数据 变更数据 使用Apollo Client GraphQL订阅 数据验证 错误处理 分页查询 拆分和组合Schema 总结 随着API的发展&#xff0c;传统…

炒到天价的数字头像如何用AI制作——教你用Midjourney轻松打造像素风NFT头像

​ ​ 近年来&#xff0c;NFT数字头像成了热门话题&#xff0c;许多以像素风格为主的头像被炒到天价&#xff0c;像最近比较火的星球兽头像。 它们之所以备受追捧&#xff0c;不仅是因为视觉风格独特&#xff0c;更是因其在NFT领域的稀缺性。 那如果想自己制作一个像素风头像…

网络层2--IP协议

目录 一、虚拟互连网络 二、IP地址 1、IP地址表示方法 2、IP地址分类 3、无分类编址CIDR &#xff08;1&#xff09;网络前缀 &#xff08;2&#xff09;地址块 、 地址掩码 4、IP地址特点 5、地址解析协议ARP &#xff08;1&#xff09;原理 &#xff08;2&#xf…

进程间通信(命名管道 共享内存)

文章目录 命名管道原理命令创建命名管道函数创建命名管道 共享内存原理shmgetFIOK 代码应用&#xff1a;premsnattch 命名管道 用于两个毫无关系的进程间的通信。 原理 Linux文件的路径是多叉树&#xff0c;故文件的路径是唯一的。 让内核缓冲区不用刷新到磁盘中&#xff0c…