一篇学会Gitlab搭建及使用

news2024/12/25 10:35:29

目录

一、Gitlab介绍

1、什么是Gitlab

二、搭建gitlab并实现ssl

1、配置yum源或下载gitlab包

2、安装依赖软件及获取GPG密钥

3、安装gitlab-ce

4、创建私有密钥

5、创建私有证书

6、创建CRT签名证书

7、利用openssl签署pem 证书

8、配置证书到gitlab

9、初始化gitlab

10、nginx配置重写到https

11、windows配置hosts

12、windows访问测试

13、登录并修改root初始密码

14、更改语言为中文(可选)

16、关闭账户自动注册

15、管理员创建账户和组

16、管理员创建项目 

17、配置登录免密认证

18、项目成员权限分配

19、gitlab项目介绍

①项目权限

②分支角色管理

20、gitlab常用命令


一、Gitlab介绍

1、什么是Gitlab

GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的Web服务。

安装方法是参考GitLab在GitHub上的Wiki页面。Gitlab是目前被广泛使用的基于git的开源代码管理平台, 基于Ruby on Rails构建, 主要针对软件开发过程中产生的代码和文档进行管理, Gitlab主要针对group和project两个维度进行代码和文档管理, 其中group是群组, project是工程项目, 一个group可以管理多个project, 可以理解为一个群组中有多项软件开发任务, 而一个project中可能包含多个branch, 意为每个项目中有多个分支, 分支间相互独立, 不同分支可以进行归并。

二、搭建gitlab并实现ssl

1、配置yum源或下载gitlab包

方法1:创建一个新的yum源文件,文件内容如下
vim /etc/yum.repos.d/gitlab.repo
[gitlab-ce]
name=Gitlab-CE
baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el$releasever/
#此变量$releasever表示本服务器的当前系统版本号
gpgcheck=0
enabled=1
方法2:或者直接wget下载gitlab的rpm安装包
wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-15.2.2-ce.0.el7.x86_64.rpm

2、安装依赖软件及获取GPG密钥

hostnamectl set-hostname gitlab.lhj.com
#修改主机名
bash
#刷新shell
echo 192.168.30.20 gitlab.lhj.com >>/etc/hosts
#将本机对应域名添加到本机hosts文件中
yum install -y curl policycoreutils openssh-server openssh-clients postfix
#安装gitlab依赖软件
curl:用于上传或者下载,可以进行数据传输
openssh-server:ssh协议远程登录服务端
openssh-clients:ssh协议远程登录客户端
postfix:邮件传输协议,用于发送邮件
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
#获取GPG密钥,保证下载的gitlab包是由gitlab官方发布的不是被篡改的软件包
GPG密钥:GPG密钥可以保证软件下载的完整性和安全性。通过使用该公钥,你可以验证下载的软件包是否来自GitLab官方,从而确保GitLab安装的安全。
systemctl  enable  postfix --now
#开机自启postfix并现在立即启动

3、安装gitlab-ce

方法1:上面配置过gitlab的yum源了直接yum安装即可
yum install gitlab-ce -y
方法2:
curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
#curl -s:静默模式常用于脚本下载。-S若出错不止是输出错误代码,要输出错误详细信息。下载gitlab官网的rpm.sh脚本传给bash执行。不用手动编辑配置yum源
yum  install gitlab-ce  -y
#然后再yum安装gitlab

4、创建私有密钥

mkdir -p /etc/gitlab/ssl
#创建存放密钥的目录
openssl genrsa -out "/etc/gitlab/ssl/gitlab.lhj.com.key" 2048
#利用openssl创建密钥-out指定密钥输入位置
Generating RSA private key, 2048 bit long modulus
........................................................................................+++
............+++
e is 65537 (0x10001)
#创建成功输出内容
cd /etc/gitlab/ssl
ls
gitlab.lhj.com.key
#进入存放密钥的目录查看有创建的私钥

5、创建私有证书

openssl req -new -key "/etc/gitlab/ssl/gitlab.lhj.com.key" -out "/etc/gitlab/ssl/gitlab.lhj.com.csr"
#创建私有证书签名 
req表示使用openssl工具生成证书签名请求。
-new:表示创建一个新的证书签名请求。
-key:表示指定使用的私钥文件
-out:表示将csr文件保存到此路径下
#填写生成证书的信息,如下:
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:CN   #国家,CN表示中国
State or Province Name (full name) []:JS  #省份江苏
Locality Name (eg, city) [Default City]:NJ   #城市南京
Organization Name (eg, company) [Default Company Ltd]:test  #组织单位test
Organizational Unit Name (eg, section) []:test              #单位名称test
Common Name (eg, your name or your server's hostname) []:gitlab.lhj.com  #主机名称
Email Address []:test123@qq.com                            #邮箱地址

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:123456                        #设置证书密码123456
An optional company name []:test                       #公司名称test

6、创建CRT签名证书

openssl x509 -req -days 365 -in "/etc/gitlab/ssl/gitlab.lhj.com.csr" -signkey "/etc/gitlab/ssl/gitlab.lhj.com.key" -out "/etc/gitlab/ssl/gitlab.lhj.com.crt"
#利用生成的私钥和私有证书签名CRT证书
-days:证书有效期为365天 
-in:指定私有证书
-signkey指定私钥,生成的签名证书为gitlab.lhj.com.crt
cd /etc/gitlab/ssl/
ls
#现在应该有以下三个文件
gitlab.lhj.com.crt  gitlab.lhj.com.csr  gitlab.lhj.com.key

7、利用openssl签署pem 证书

openssl dhparam -out /etc/gitlab/ssl/dhparams.pem  2048
#dhparam:表示使用 OpenSSL 工具生成 DH 参数。
#-out /etc/gitlab/ssl/dhparams.pem:表示将生成的 DH 参数保存在指定的文件 /etc/gitlab/ssl/dhparams.pem 中。
cd /etc/gitlab/ssl/
chmod 600 *
ll
#修改ssl下所有证书权限为600

8、配置证书到gitlab

[root@gitlab ssl]# vim /etc/gitlab/gitlab.rb 
external_url 'https://gitlab.lhj.com'      
#改为https协议和自己服务器的域名
nginx['redirect_http_to_https'] = true           
#取消#号更改注释并为true,将http重定向到https
# nginx['ssl_certificate'] = "/etc/gitlab/ssl/gitlab.lhj.com.crt"     
#更改crt证书路径
# nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/gitlab.lhj.com.key"     
#更改路径私钥路径
# nginx['ssl_dhparam'] = "/etc/gitlab/ssl/dhparams.pem"   
#更改pem证书路径  后面的注释不用管# Path to dhparams.pem, eg.  /etc/gitlab/ssl/dhparams.pem

9、初始化gitlab

gitlab-ctl reconfigure 
#初始化gitlab,过程时间较长耐心等待gitlab-ctl用于管理gitlab

10、nginx配置重写到https

cd /var/opt/gitlab/nginx/conf
ls
gitlab-health.conf  gitlab-http.conf  nginx.conf  nginx-status.conf
vim gitlab-http.conf  
#在server   listen *:80;下一行添加
server_name gitlab.lhj.com; 
#有servername就不写
rewrite ^(.*)$ https://$host$1 permanent;      
#重写所有都到https,permanent永久重定向
gitlab-ctl restart
#重启gitlab

11、windows配置hosts

在Windows系统里C:\Windows\System32\drivers\etc\hosts 添加以下内容
192.168.30.20     gitlab.lhj.com
#配置完毕后在cmd的窗口中ping  gitlab.lhj.com 查看是否能ping通

12、windows访问测试

13、 登录并修改root初始密码

cat /etc/gitlab/initial_root_password
#查看gitlab初始密码

 

 

14、更改语言为中文(可选)

16、 关闭账户自动注册

 

15、管理员创建账户和组

 

 

 

 

16、管理员创建项目 

 

17、配置登录免密认证

Gitlab的登录免密验证,配置完成后,可以使得我们的Gitlab自动执行Git命令而无需登录,对于脚本的编写以及其他项目(如Jenkins)的运用这一步是必须的。

首先,在想要进行验证的设备上执行命令:
ssh-keygen
#四个回车生成免密登录秘钥

 

18、项目成员权限分配

19、gitlab项目介绍

①项目权限

权限名称

权限类型

权限说明

私有

Private

只有属于该项目成员才有权限查看和操作项目

内部

Internal

具有GitLab账号的人员登陆后都可以克隆项目

公开

Public

任何人都可以克隆

②分支角色管理

角色名称

角色类型

角色说明

匿名用户

Guest

访客【只能创建问题和留言评论】

报告人

Reporter

可以理解为测试员、产品经理等,一般负责提交问题等

开发人员

Developer

负责项目开发

管理者

Master

一般是组长,负责对Master分支进行维护

所有者

Owner

一般是项目经理【拥有所有权限】

20、gitlab常用命令

命令

说明

git add

添加文件到暂存区

git status

查看仓库当前的状态,显示有变更的文件。

git diff

比较文件的不同,即暂存区和工作区的差异。

git commit

提交暂存区到本地仓库。

git reset

回退版本。

git rm

删除工作区文件。

git mv

移动或重命名工作区文件。

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

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

相关文章

读书笔记:《图解CIO工作指南》

《图解CIO工作指南》第 4 版,日 . 野村综合研究所系统咨询事业本部 著,周自恒 译 大数据、云计算时代下的IT战略和IT实务 CIO工作:IT管理、IT架构、IT实践 以着眼企业未来的观点进行构思:可视化(业务与系统&am…

初始化vue中data中的数据

当组件的根元素使用了v-if的时候, 并不会初始化data中的数据 如果想完全销毁该组件并且初始化数据,需要在使用该组件的本身添加v-if 或者是手动初始化该组件中的数据 初始化化数据的一些方法 Object.assign(this.$data, this.$options.data()) this.$data:当前的da…

TortoiseGit(大乌龟)安装教程(Git 图形化工具,告别手敲命令)

TortoiseGit安装教程 1. 下载TortoiseGit 官方下载地址:https://tortoisegit.org/download/ 自行选择下载对应版本(大部分位64位),进行下载 2. 安装TortoiseGit 打开安装包,如下图所示: 点击 Next&…

IDM绿色最新2023中文版磁力下载工具

Internet Download Manager(idm)是一款优秀的多线程下载工具。它支持自动捕获剪贴板及浏览器及流媒体网站的音视频下载链接,还有批量队列下载、静默下载、站点抓取等众多功能选项,可以说是 Windows 平台上功能最为强大的多线程下载…

通过栈/队列/优先级队列/了解容器适配器,仿函数和反向迭代器

文章目录 一.stack二.queue三.deque(双端队列)四.优先级队列优先级队列中的仿函数手搓优先级队列 五.反向迭代器手搓反向迭代器 vector和list我们称为容器,而stack和queue却被称为容器适配器。 这和它们第二个模板参数有关系,可以…

录屏界鼻祖Camtasia 2023中文版功能介绍/下载安装激活教程

随着网络科技的迅速发展,所以对于电脑的使用率也就越来越高了!然而,也可能跟这有关系,目前各种类型的软件层出不穷,当然也就包括了电脑录屏软件。这给我们造成了一些困难,究竟哪一款适合自己呢?…

DMA的补充笔记

DMA有两个总线: 1、DMA存储器总线:DMA通过该总线来执行存储器数据的传入和传出。 2、DMA外设总线:DMA通过该总线访问AHB外设(AHB主要是针对高效率、高频宽以及快速系统模块所设计的,主要有Flash 存储器、复位和时钟控…

栈和队列OJ题思路分享之栈和队列互换(C语言实现)

💓博主CSDN主页:杭电码农-NEO💓   ⏩专栏分类:刷题分享⏪   🚚代码仓库:NEO的学习日记🚚   🌹关注我🫵带你刷更多C语言和数据结构的题!   🔝🔝 栈和队列刷题分享二 1. 前言⚡…

基于人类反馈的强化学习(RLHF) 理论

gpt 进程 GPT-1 用的是无监督预训练 有监督微调,只有简单的单向语言模型任务;GPT-2用的是纯无监督预训练,使用更多的数据,更大的模型,又新增了几个辅助的训练任务;GPT-3 沿用了 GPT-2 的纯无监督预训练&a…

postgresql standby启动流程分析

专栏内容:postgresql内核源码分析个人主页:我的主页座右铭:天行健,君子以自强不息;地势坤,君子以厚德载物. 目录 前言 概述 原理机制 关键流程 备节点启动 walreceiver启动的时机 结尾 前…

网络协议与攻击模拟-07-TCP连接-三次握手

传输层协议 1.TCP 2.UDP TCP 协议 回顾内容 1.传输层功能:定义应用层协议数据报文的端口号,流量控制 2.对原始数据进行分段处理 传输层所提供服务 1.传输连接服务 2.数据传输服务:流量控制…

基于条纹投影的物体三维形貌测量理论与仿真实验-含Matlab代码

▒▒本文目录▒▒ ✳️ 一、引言✳️ 二、条纹投影原理✳️ 2.1 相移轮廓术✳️ 2.2 傅里叶变换轮廓术 ✳️ 三、仿真分析✳️ 3.1 傅里叶变换轮廓术仿真实验✳️ 3.1.1 Matlab代码获取 ✳️ 3.2 相移轮廓术仿真实验✳️ 3.2.1 Matlab代码获取 ✳️ 参考文献 ✳️ 一、引言 基…

玩转axios, 我行你行吗

一.axios是什么? Axios是一个基于Promise网络请求库,作用于node.js和浏览器中, 它是 isomorphic 的(即同一套代码可以运行在浏览器和node.js中)。 在服务端它使用原生node.js http模块,而在客户端(浏览端)则使用XMLHttpRequests。 二.特性 1.从浏览器创…

SpringCloud:微服务保护之流量控制

雪崩问题虽然有四种方案,但是限流是避免服务因突发的流量而发生故障,是对微服务雪崩问题的预防。我们先介绍这种模式。 1.簇点链路 当请求进入微服务时,首先会访问DispatcherServlet,然后进入Controller、Service、Mapper&#…

c++ static修饰类的成员

静态成员就是成员变量和成员函数前面加上static,称为静态成员 1.static修饰成员变量 (1)所有对象共享static成员变量,一旦一个对象数据对其进行改动,所有对象调用其数据也会改变,一改全改。 (2)编译阶段分配内存,static成员变量…

定积分比较大小的常用手段。

1.常用手段 ①区间对称&#xff0c;利用被积函数奇偶性 ②放缩(利用常用不等式,结论等) ③将 1 转换成定积分 ④直接算 ⑤“拆区间&#xff0c;变量代换改区间再合并” 2.常用不等式 1.基本不等式 sinx < x < tanx (0 , Π/2) (几何或者夹逼证明) ex > 1 x (-∞&a…

【数据结构】set 与 map

目录 一、关联式容器 二、set 1、set的介绍 2、set的模板参数列表 3、set的构造 4、set的迭代器 5、set的容量 6、set修改操作 7、set 与 multiset 三、map 1、map的介绍 2、map的模板参数列表 3、map的构造 4、map的迭代器 5、map的容量与元素访问 6、map中元素…

代码随想录算法训练营第五十三天| 1143.最长公共子序列 、1035.不相交的线、53. 最大子序和 动态规划

文章目录 1143.最长公共子序列:star:1035.不相交的线53. 最大子序和 动态规划 1143.最长公共子序列⭐️ 题目链接&#xff1a;代码随想录 解题思路&#xff1a; 1.dp数组&#xff1a;长度为[0, i - 1]的字符串text1与长度为[0, j - 1]的字符串text2的最长公共子序列为dp(i)[j]…

记录一次从exe到python源码

找到要解析源码的exe&#xff0c;用7zip解压出来&#xff0c;可以看到打包前的目录&#xff08;这里并不是所有的exe都可以&#xff09;。 如下图所示&#xff0c;由于这个是一个前后端打包的exe&#xff0c;这里的server是后端的服务&#xff0c;resources是前端&#xff0c;这…

【现代机器人学】学习笔记十二:轮式移动机器人

这一章讲移动机器人相关的内容。许久没有更新了&#xff0c;有人私聊我是不是烂尾了。写的这几篇屁文我本来是拿来当自己的笔记本的&#xff0c;不以为有人会认真看。没想到居然还有人追&#xff0c;真是受宠若惊。在这里深表感谢&#xff01;一直没更新其实是因为年后的工作实…