Gitlab 安装全流程

Version:gitlab-ce:16.2.4-ce.0

简介

Gitlab 是一个开源的 Git 代码仓库系统,可以实现自托管的 Github 项目,即用于构建私有的代码托管平台和项目管理系统。系统基于 Ruby on Rails 开发,速度快、安全稳定。它拥有与 Github 类似的功能,能够浏览源代码,管理缺陷和注释。可以管理团队对仓库的访问,它非常易于浏览提交过的版本并提供一个文件历史库。团队成员可以利用内置的简单聊天程序(Wall)进行交流。它还提供一个代码片段收集功能可以轻松实现代码复用,便于日后有需要的时候进行查找。

此次安装采用的是 Docker 形式进行安装。

镜像拉取

版本选择

在这里可以找到所有的社区办镜像版本,当前最新的为 16.2.4-ce.0 版本。

image-20230822095424293

镜像架构问题

注意看镜像支持的 OS/ARCH 仅只有 linux/amd64,如果你的系统是 x86_64 或者 amd64 的都可以正常运行,如果你是 arm 架构的就不行了。

针对 MacOS 的 M1/M2 芯片处理

如果是苹果的 M1/M2 芯片,其也是 arm 架构,但是可以通过设置 Docker Desktop 来运行。这主要是依赖于苹果的 Rosetta 2 转换器,可以将 x86 架构的应用程序自动翻译成 ARM 架构的应用程序,在 M 系列芯片上运行。

image-20230822101510517

image-20230822101527842

这两项都打开,在执行 docker run 时增加参数 --platform linux/amd64 即可。

拉取镜像

image-20230822103920004

运行镜像

准备

准备好数据存放目录,这里以 ~/Downloads/tmp/gitlab 为例。

export GITLAB_HOME=~/Downloads/tmp/gitlab
echo $GITLAB_HOMEcd $GITLAB_HOME
mkdir config logs data

运行

docker run --detach \# Mac 平台 M1/M2 芯片需要运行,需要指定。前提:已经在 Docker Desktop 中设置好对应配置。--platform linux/amd64 \# 使用域名--hostname git.tutuit.cn \# HTTPS 访问端口--publish 4443:443 \# HTTP 访问端口,尽量不要对外暴露使用,建议使用 HTTPS。如果前端进行了 Nginx 代理,可以在 Nginx 中使用此端口--publish 8880:80 \# 22 端口,用来使用 SSH 协议拉取代码--publish 4422:22 \--name gitlab \--restart always \# 配置目录--volume $GITLAB_HOME/config:/etc/gitlab \# 日志目录--volume $GITLAB_HOME/logs:/var/log/gitlab \# 数据存放目录--volume $GITLAB_HOME/data:/var/opt/gitlab \gitlab/gitlab-ce:16.2.4-ce.0

image-20230822105526543

到此,Gitlab 启动就完成了,接下来配置前端代理 Nginx。

Nginx 配置

由于要是用 HTTPS 协议,所以需要证书,我这里使用的是 git.tutuit.cn 域名,根据自己域名的不同,去生成对应的证书即可,阿里云等平台都可以生成,也可以自己本地生成。

生成的证书如下:

image-20230822105940003

增加 Nginx 配置

增加 443 HTTPS 端口监听,并配置上证书文件

### HTTPS server
server {listen 443 ssl;server_name git.tutuit.com;index index.html index.htm;ssl_certificate /opt/homebrew/etc/nginx/ssl/gitlab/git.tutuit.cn.pem;ssl_certificate_key /opt/homebrew/etc/nginx/ssl/gitlab/git.tutuit.cn.key;ssl_session_timeout 5m;ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;ssl_protocols TLSv1 TLSv1.1 TLSv1.2;ssl_prefer_server_ciphers on;client_max_body_size 1024M;fastcgi_connect_timeout 1200s;fastcgi_send_timeout 1200s;fastcgi_read_timeout 1200s;proxy_read_timeout 300s;client_body_timeout 500s;send_timeout 500s;location / {proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;# proxy_set_header X-Forwarded-Proto https;proxy_pass http://127.0.0.1:8880;}
}

自定义 hosts

由于这里只是本地演示项目,就不去做域名解析工作了,直接修改本地 hosts,使之对应上即可。

image-20230822110543718

访问

Gitlab 镜像、Nginx 都已启动完毕,开始访问:https://git.tutuit.cn/

image-20230822114403940

默认用户名:root

默认密码:在挂载的 $GITLAB_HOME/config/initial_root_password 文件中。

后续

关闭公开注册

登录成功之后会看到如下警告信息:

image-20230822114635617

建议把公开注册关闭掉,使用邀请注册。

image-20230822114915208

HTTPS 和 SSH 拉取代码

创建一个 Demo 项目,点击 Clone 可以看到如下信息:

image-20230822115925225

这里有两个问题:

  1. 这里 SSH 协议提供的链接是无法正常拉取代码的,因为在启动 Gitlab Docker 镜像时,为了防止和宿主机冲突,使用了宿主机的 4422 端口映射到了容器的 22 端口,这里提供的 SSH 协议是默认的走 22 端口,所以不行。

image-20230822121415684

  1. 这里 HTTP 项只显示了 HTTP,而非 HTTPS,这是因为未对 Gitlab 本身做 HTTPS 的配置,如果你使用它来 clone 代码,同样会得到错误,因为在 Nginx 上并没有配置 HTTP(80) 的监听,也不建议使用 HTTP。

image-20230822121543247

遇到了问题,也知道了大致原理,就可以一个一个解决了。

解决问题 1

既然 Gitlab 默认生成的 SSH 链接是走的 22 端口,那是不是可以通过配置让他生成走 4422 端口的?没错,确实可以。编辑文件 $GITLAB_HOME/config/gitlab.rb,增加如下配置然后重启:

# gitlab.rb 中
gitlab_rails['gitlab_shell_ssh_port'] = 4422# 重启 Gitlab
docker restart gitlab

新的 SSH 链接如下:

image-20230822122106591

这时再用其拉取代码试试:

image-20230822122140025

OK,大功告成,第一个问题解决。

解决问题 2

问题 2 的原因在于没有配置过 Gitlab 的 HTTPS 相关的配置,这导致其生成的链接默认是 HTTP 的,那不用说了,肯定也有配置是可以修改 HTTPS 相关内容。可以加入以下配置项:

# gitlab.rb 中
# 默认的域名 URL
external_url 'https://git.tutuit.cn'# 开启 HTTP 到 HTTPS 的重定向
nginx['redirect_http_to_https'] = true
# 之前 Nginx 使用的证书,把他复制到 $GITLAB_HOME/config/ssl 目录下
nginx['ssl_certificate'] = "/etc/gitlab/ssl/git.tutuit.cn.pem"
nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/git.tutuit.cn.key"# 重启 Gitlab
docker restart gitlab

再访问发现又出问题了:

image-20230822123033651

为啥呢?简单分析得出:在浏览器访问 https://git.tutuit.cn/root/demo 会被 Nginx 代理,Nginx 代理的是 8880 端口:

image-20230822123152427

对应着 Gitlab 这个容器的 80 端口,而在上面更改 Gitlab 配置的时候,增加了 nginx['redirect_http_to_https'] = true 的配置,也就是说形成了“循环”,浏览器 =>(443) Nginx =>(80) Gitlab,那 Gitlab 一看是 80 访问,就给重定向了,如此循环往复。所以浏览器就噶掉了。

那就把 Nginx =>(80) Gitlab 改成 443 试试。

image-20230822124402300

重启 Nginx 之后重新访问:

image-20230822124554198

clone 代码结果:

image-20230822124608214

至此,大功告成。

邮件通知

有时,我们可能会用到邮件通知工能,比如:

  • 通过邮箱新增用户,注册信息会直接发送到对应的邮箱。
  • CI/CD 的结果进行通知。
  • 代码审查、合并通知。
  • 等等。

$GITLAB_HOME/config/gitlab.rb 中增加配置:

# gitlab.rb 中
# 开启 smtp 协议
gitlab_rails['smtp_enable'] = true
# smtp 服务地址
gitlab_rails['smtp_address'] = "smtp.ym.163.com"
# TLS 端口
gitlab_rails['smtp_port'] = 994
gitlab_rails['smtp_user_name'] = "你的邮箱"
gitlab_rails['smtp_password'] = "你的密码"
# 登录方式
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
# 启用 TLS
gitlab_rails['smtp_tls'] = true 
gitlab_rails['gitlab_email_from'] = '发件人'
# 服务域
gitlab_rails['smtp_domain'] = "ym.163.com"

重启邮箱即可生效。

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

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

相关文章

CentOS 7重置root密码

CentOS 7 如何找回被您 遗忘得 root密码呢? 步骤如下: 步骤一:在开机出现如下界面的时候就按“e”键 步骤二:在步骤一按下”e”键之后,出现如下界面,按 ↓键一直到底部找到“LANGzh_CN.UTF-8”这句&…

Authing 官网新升级,「客户第一」是我们的方法论

赶在立秋前,我们上线了全新一版官网。 官网链接:http://www.authing.com 如果你说,在几个月前我会怎么描述我们的官网,我会说:它很好,很标准。和其它绝大多数企业的官网一样,它作为展示信息的页…

Django实现音乐网站 ⑿

使用Python Django框架制作一个音乐网站, 本篇主要是加载静态资源和推荐页-轮播图、推荐歌单功能开发。 目录 加载静态资源 引入jquery.js 引入bootstrap资源文件 创建基类模板样式文件 推荐页开发 轮播图开发 下载 加载swiper 自定义引入继承块设置 使用…

中英双语对话大语言模型:ChatGLM-6B

介绍 ChatGLM-6B 是一个开源的、支持中英双语的对话语言模型,基于 General Language Model (GLM) 架构,具有 62 亿参数。结合模型量化技术,用户可以在消费级的显卡上进行本地部署(INT4 量化级别下最低只需 6GB 显存)。…

Stable Diffusion 系列教程 | 快速入门

目录 1.基本原理 2.主流方式 3.配置要求 3.1 显卡方面 4.基本界面 4.1 模型设置区 4.2 菜单栏区域 4.3 提示词区 4.4 出图设置区 5.文生图基本操作流程 5.1 选用模型,撰写提示词 5.2 进行出图设置 5.3 再次出图! 5.4 保存 1.基本原理 在20…

容器和云原生(三):kubernetes搭建与使用

目录 单机K8S docker containerd image依赖 kubeadm初始化 验证 crictl工具 K8S核心组件 上文安装单机docker是很简单docker,但是生产环境需要多个主机,主机上启动多个docker容器,相同容器会绑定形成1个服务service,微服务…

下线40万辆,欧拉汽车推出2023款好猫尊荣型和GT木兰版

欧拉汽车是中国新能源汽车制造商,成立于2018年。截至目前,已经下线了40万辆整车,可见其在市场的影响力和生产实力。为了庆祝这一里程碑,欧拉汽车推出了品牌书《欧拉将爱进行到底》,在其中讲述了欧拉汽车的发展历程和未…

【Unity】UI的一些简单知识

Canvas 新建一个Canvas Render Mode Canvas 中有一个Render Mode(渲染模式),有三种渲染模式: Screen Space-Overlay (屏幕空间)Screen Space-Camara 、 World Space 其中,Space- Overlay是默认显示在…

[C语言]分支与循环

导言: 在人生中我们总会有选择,**如下一顿吃啥?**又或者每天都是在重复,吃饭!!!!,当然在C语言中也有选择和重复那就是分支语句与循环语句 文章目录 分支循环循环中的关键…

阿里云ECS服务器安装PostgreSQL

1. 概述 PostgreSQL是一个功能强大的开源数据库,它支持丰富的数据类型和自定义类型,其提供了丰富的接口,可以自行扩展其功能,支持使用流行的编程语言编写自定义函数 PostgreSQL数据库有如下优势: PostgreSQL数据库时…

jmeter CSV 数据文件设置

创建一个CSV数据文件:使用任何文本编辑器创建一个CSV文件,将测试数据按照逗号分隔的格式写入文件中。例如: room_id,arrival_date,depature_date,bussiness_date,order_status,order_child_room_id,guest_name,room_price 20032,2023-8-9 14:…

ChatGLM-Med,HuaTuo,ChatDoctor

ChatGLM-Med:基于中文医学知识的ChatGLM模型微调 HuaTuo:基于中文医学知识的LLaMA微调模型 ChatDoctor:基于常见医疗数据微调的LLaMA 目录 ChatGLM-MedHuaTuoChatDoctor ChatGLM-Med 模型为ChatGLM-6B,微调数据集为:医…

LeetCode150道面试经典题-- 二叉树的最大深度(简单)

1.题目 给定一个二叉树 root ,返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 2.示例 3.思路 深度优先遍历 一个二叉树要查询到最大深度,可以将问题转为从根节点出发,查看左右子树的最大深度&am…

【核磁共振成像】傅里叶重建

目录 一、傅里叶重建二、填零三、移相四、数据窗函数五、矩形视野六、多线圈数据重建七、图像变形校正八、缩放比例九、基线校准 长TR,长TE,是T2加权像; 短TR,短TE,是T1加权像; 长TR,短TE&#…

TCP滑动窗口

为什么会有滑动窗口 在计算机网络中,数据通常被分成小块(也叫数据段)在网络中传输(为什么会被分成小块,请了解拥塞窗口和流量控制)。这些小块可能会在传输的过程中遇到延迟、丢失或乱序等问题。为了保证数据…

Mybatis之动态SQL及映射结果(带你了解动态SQL的魅力)

目录 前言 一、Mybatis之动态SQL 1. 简介 2. 作用及重要性 3. 应用场景 二、动态SQL讲解 1. 原生使用工具类(BaseDao)的SQL 2. 运用动态SQL编写方法 2.1 Mybatis动态SQL的常用标签 2.2 Mybatis动态SQL的常用函数 2.3 案例展示 if标签的运用 f…

angular中如何定义一个全局组件?

需求,我们需要新建一个navBreadcrumb的全局组件。这是一个面包屑导航,在不同的页面引入时传入一个路由数组即可。 第一步:我们新建这个组件: ng g c navBreadcrumb ng g m navBreadcrumb----------nav-breadcrumb.module-------…

AMBA总线协议(8)——AHB(六):分割传输

一、前言 在之前的文章中,我们重点介绍了AHB传输的仲裁,首先介绍了仲裁相关的信号,然后分别介绍了请求总线访问,授权总线访问,猝发提前终止,锁定传输和默认主机总线,在本文中我们将继续介绍AHB的…

论文《LoRA: Low-Rank Adaptation of Large Language Models》阅读

论文《LoRA: Low-Rank Adaptation of Large Language Models》阅读 BackgroundIntroducitonProblem StatementMethodology Δ W \Delta W ΔW 的选择 W W W的选择 总结 今天带来的是由微软Edward Hu等人完成并发表在ICLR 2022上的论文《LoRA: Low-Rank Adaptation of Large Lan…

交叉编译 libzdb

参考博客:移植libzdb3.2.2到arm_configure: error: no available database found or s_酣楼驻海的博客-CSDN博客 编译时间 2023-08-23 libzdb 下载: 源码访问如下: https://bitbucket.org/tildeslash/libzdb/src/master/ git 下载链接 …