运维学习————GitLab的搭建和使用

news2024/11/15 8:43:32

目录

一、简介

1、概念

2、 好处

3、优势 

二、 下载安装

1、准备工作

2、下载安装

3、配置

三、常用命令

四、GitLab的使用

1、解决无法访问

​编辑2、修改密码 

3、gitlab结合linux的使用

1、使用用户名和密码操作

2、使用ssh秘钥操作 

4、卸载GitLab

5、gitlab结合windows使用

1、原理图

2、在gitlab创建项目

3、克隆项目到本地

4、进入项目(本地仓库),创建目录和文件

5、添加本地文件到缓存,提交到本地仓库 

​编辑 6、推送到远程gitlab,查看

7、在D盘克隆项目,新加文件,添加,提交 推送

8、在桌面的my-repo中的项目中pull拉取 ,达到同步代码的目的 

5、gitlab结合idea开发工具使用


官网:https://gitlab.cn/

一、简介

1、概念

将工具整合到单个应用程序中,以实现无与伦比的协作、可见性和开发速度。

极狐GitLab不仅是源代码管理或CI/CD工具,它是一个覆盖完整软件开发生命周期和DevOps的开放式一体化平台

2、 好处

更高效地工作

更快地交付更好的软件

降低风险和成本

3、优势 

开源免费:GitLab提供社区免费版本,适合中小型公司使用,大大降低了企业的成本。

强大的版本控制:GitLab基于Git进行版本控制,支持离线同步以及强大的分支管理功能,让团队能够高效地管理代码、分支和合并请求,确保代码的可靠性和可追溯性。

集成化的代码管理平台:GitLab不仅提供了代码仓库功能,还集成了问题跟踪、持续集成/持续部署(CI/CD)、自动化测试等功能,使团队能够在一个平台上完成整个开发周期,提高开发效率。

便捷的GUI操作界面:GitLab提供了友好的图形用户界面(GUI),降低了使用门槛,使得团队成员能够更轻松地进行代码管理和协作。

强大的账户权限管理:GitLab支持精细化的账户权限管理,可以根据团队成员的角色和需求分配不同的权限,确保代码库的安全性和可控性。

高可用性:GitLab支持内置的高可用性(HA)配置,能够在高并发环境下保持服务的稳定运行,满足企业级应用的需求。

可扩展性:GitLab支持丰富的插件和集成,可以与其他工具(如Jenkins、Slack等)进行集成,满足不同团队的需求,并支持自定义功能和扩展。

安全性:GitLab提供了全面的安全性功能,包括代码审查、访问控制、CI/CD安全扫描等,有助于保护代码的安全性和保密性。

等等

二、 下载安装

1、准备工作

服务器建议CPU4个,内存5G以上。否则可能会出现安装或者使用卡顿

#查看Linux系统的版本信息
cat /proc/version

#查看Linux系统发行版信息
cat /etc/redhat-release

上面两个步骤为后面下载什么样的rpm包做准备

#追加本地域名
echo 192.168.170.130 gitlab >>/etc/hosts
#测试
ping gitlab
#安装gitlab依赖软件:
yum install -y curl policycoreutils openssh-server openssh-clients postfix

curl:用于上传或者下载,可以进行数据传输

openssh-server:ssh协议远程登录服务端

openssh-clients:ssh协议远程登录客户端

postfix:邮件传输协议,用于发送邮件

获取GPG密钥,保证下载的gitlab包是由gitlab官方发布的不是被篡改的软件包

GPG密钥:GPG(GNU Privacy Guard)是一种基于OpenPGP标准的加密软件,用于提供文件加密和验证的功能。GPG密钥可以保证软件下载的完整性和安全性。通过使用该公钥,你可以验证下载的软件包是否来自GitLab官方,从而确保GitLab安装的安全。

rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
#开机自启postfix并现在立即启动
service  postfix  start 或者 systemctl  start postfix  #启动服务 
systemctl  enable   postfix   #设置开启启动
systemctl  enable  postfix  --now     #相当于上面两句
#查看状态
service postfix  status

2、下载安装

下载地址:https://packages.gitlab.com/gitlab/gitlab-ce

#进入下载目录
cd /software
#下载(注意证书过期,需要根据提示加上--no-check-certificate)
wget --content-disposition https://packages.gitlab.com/gitlab/gitlab-ce/packages/el/7/gitlab-ce-16.5.8-ce.0.el7.x86_64.rpm/download.rpm  --no-check-certificate




#安装gitlab
rpm -ivh gitlab-ce-16.5.8-ce.0.el7.x86_64.rpm

安装成功!!!

3、配置

#配置访问IP及端口:
vim /etc/gitlab/gitlab.rb

#确保防火墙开放并开放上面端口
防火墙操作:
systemctl status firewalld
systemctl enable  --now firewalld
systemctl status firewalld


#添加请求服务
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https

#开放端口
firewall-cmd --zone=public --add-port=28080/tcp --permanent 

#重新加载防火墙
systemctl reload firewalld

#查看是否开放成功
firewall-cmd --zone=public --query-port=28080/tcp 

#查看结果
firewall-cmd --zone=public --list-all

#gitlab重新加载配置(重新加载时间可能稍微长点,占用内存可能也很多,耐心等待)
gitlab-ctl reconfigure

若结果显示“ruby_block[supervise_redis_sleep] action run”,则会一直卡无法往下进行,这时需要按住“CTRL+C”强制结束,然后运行命令“systemctl restart gitlab-runsvdir”,最后再次执行命令“gitlab-ctl reconfigure 

#重启gitlab组件

gitlab-ctl restart

#若结果显示“ok: run”,则说明配置文件修改完成。

 

三、常用命令

gitlab-ctl start # 启动所有GitLab组件
gitlab-ctl stop # 停止所有GitLab组件
gitlab-ctl restart # 重启所有GitLab组件
gitlab-ctl status # 查看服务状态

gitlab-ctl reconfigure # 重新加载配置
gitlab-rake gitlab:check SANITIZE=true --trace # 检查GitLab  SANITIZE=消毒,净化
gitlab-ctl tail # 查看日志(相当于tail -F ...)
#GitLab的守护进程关闭和重启
# 备注:GitLab的守护进程会默认开启nginx
命令:
gitlab-ctl status nginx 查看状态
gitlab-ctl stop nginx
gitlab-ctl start nginx
gitlab-ctl restart nginx
# 释放资源,关闭GitLab
命令:gitlab-ctl stop
2)服务器重启或者GitLab意外停止,执行命令“gitlab-ctl start”。
若结果显示“fail: sidekiq: runsv not running”等,则说明GitLab不能启动。可以使用下面命令来解决这个问题:
systemctl start gitlab-runsvdir
#runsvdir 是 runit 的一个组件,它负责监视一个或多个服务目录(这些目录通常包含服务的配置文件和脚本),并启动、停止和监视这些服务。runit 是一个轻量级的 Unix 初始化系统和服务管理器。
gitlab-ctl restart

四、GitLab的使用

1、解决无法访问

浏览器输入:http://192.168.37.155:28080/

发现不可以访问(需要开放iptables),如果可以访问,下面就不执行:

cd /etc/sysconfig

ls -l

结果显示“ip6tables-config”和“iptables-config”,但是没有查看到iptables文件。

yum install iptables-services -y

启动iptables

systemctl start iptables

查看状态:

systemctl status iptables

在iptables中配置开放GitLab的端口号:

vim /etc/sysconfig/iptables

添加:

-A INPUT -m state --state NEW -m tcp -p tcp --dport 18080 -j ACCEPT

重启防火墙:

service iptables restart

再次刷新浏览器地址

2、修改密码 

登录GitLab的界面,第一次登录使用的用户名为 root,而密码在文件/etc/gitlab/initial_root_password中(密码不会含空格),且会在 24 小时后自动被删除。然后修改密码即可。

cat /etc/gitlab/initial_root_password

 登录,先修改一下中文语言

保存,刷新页面就可以了

然后就是修改密码,点击保存之后,就会自动退出,重新使用新密码登录即可

3、gitlab结合linux的使用

1、使用用户名和密码操作

#安装git
yum install git -y
#创建linux环境下的本地仓库
mkdir my-repo  &&  cd  my-repo
#拉取代码
git clone http://192.168.170.110:18080/root/qy176_project_20240904_1.git
#输入GitLab的用户名和密码: root   xxxxxx

 每次操作都让输入用户名和密码,可以使用ssh秘钥方式,避免每次输入用户明和密码(配置一次ssh秘钥,后面一直使用)

2、使用ssh秘钥操作 

#安装git
yum install git -y
#生成密钥文件
ssh-keygen 回车3次
#显示生成的秘钥
cat /root/.ssh/id_rsa.pub

 

记住一定要使用SSH克隆

#在安装了git的linux下操作:
cd ../
mkdir my-repo1  &&  cd my-repo1/
#本机可以直接克隆(本机有公钥了)
git clone  git@192.168.170.110:root/qy176_project_20240904_2.git
#多次克隆,测试秘钥效果。
mkdir my-repo2 &&  cd my-repo2/
git clone  git@192.168.170.110:root/qy176_project_20240904_2.git
mkdir my-repo3 &&  cd my-repo3/
git clone  git@192.168.170.110:root/qy176_project_20240904_2.git

4、卸载GitLab

如果gitlab安装失败,那可以卸载gitlab并重装。注意:gitlab一定要卸载干净,否则会有不少麻烦。

第一步,停服务。

命令: gitlab-ctl stop

第二步,卸载gitlab。(需确认gitlab是ce版本还是ee版本)

命令: rpm -e gitlab-ce

第三步,杀掉gitlab守护进程。(带有opt/gitlab/service log)

命令:ps -ef|grep gitlab

sudo kill -9 [PID]

第四步,删除磁盘文件。

命令: find / -name gitlab |xargs rm -rf

若结果提示“permission deny”,则手动逐层删除即可。

第五步,下载的gitlab软件包也删除。

5、gitlab结合windows使用

1、原理图

2、在gitlab创建项目

3、克隆项目到本地

输入正确的用户名和密码

4、进入项目(本地仓库),创建目录和文件

看到.git说明是仓库

git status

mkdir -p src/main/java/com/aaa/ssm/controller

mkdir -p src/main/resources

vim src/main/java/com/aaa/ssm/controller/TestControler

111

vim src/main/resources/application.properties

aaa

git status

显示红色的src

5、添加本地文件到缓存,提交到本地仓库 

git add * 提交所有文件

git status

 git commit -m '第一次提交项目'

设置用户名和邮箱

git config --global user.name "百度红尘"

git config --global user.email "123@qq.com"

再次提交:

git commit -m '第一次提交项目'

git status

 6、推送到远程gitlab,查看

让远程地址和用户origin关联

git remote add origin http://192.168.170.110:18080/root/qy176_project_20240904_1.git

因为仓库是克隆下来的,地址和用户已经绑定了,提示:remote origin already exists.

确认main分支

git branch -M main

推送

git push -uf origin main

-u set-upstream 使用流方式上传

-f force 强制的

 刷新gitlab页面:

后面如果说,新增了文件或者修改了文件或者是删除了文件,都会变为红色,循环执行上面步骤,达到代码同步结果

7、在D盘克隆项目,新加文件,添加,提交 推送

git clone http://192.168.170.110:18080/root/qy176_project_20240904_1.git

cd qy176_project_20240904_1/

vim src/main/java/com/aaa/ssm/controller/TestAController

123

git status

git add *

git status

git commit -m '添加了一个控制器'

git status

git push -uf origin main

8、在桌面的my-repo中的项目中pull拉取 ,达到同步代码的目的 

git pull http://192.168.170.110:18080/root/qy176_project_20240904_1.git

ls src/main/java/com/aaa/ssm/controller/

5、gitlab结合idea开发工具使用

第一次的话可能需要输入Token,而不是使用用户名和密码,点击Generate自动跳转

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

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

相关文章

铁路故障多分类数据集(猫脸码客 第183期 )

铁路故障多分类数据集研究:基于深度学习的ECARRNet模型 引言 东南亚地区以其庞大的铁路网络著称,这一基础设施在促进区域经济发展、加强国家间联系方面发挥着不可替代的作用。然而,随着铁路网络的不断扩展和运营时间的增长,铁路…

OpenCV结构分析与形状描述符(11)椭圆拟合函数fitEllipse()的使用

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 围绕一组2D点拟合一个椭圆。 该函数计算出一个椭圆,该椭圆在最小二乘意义上最好地拟合一组2D点。它返回一个内切椭圆的旋转矩形。使…

oracle TAB$ 基表删除恢复

接客户服务请求,说是一个好久没有用的数据库在打开时遭遇ora-00600 16703 1403 28 错误,这中一看就是oracle 的tab$基表被删除了。 客户环境 aix 平台; 索性数据库比较小只有10G左右,懒得的弄bbed,直接oracle dul 抽…

【信创】Linux终端禁用USB存储 _ 统信 _ 麒麟 _ 方德

原文链接:【信创】Linux终端禁用USB存储 | 统信 | 麒麟 | 方德 Hello,大家好啊!今天给大家带来一篇关于在Linux终端下禁用USB存储设备的文章。禁用USB存储设备可以提高系统的安全性,防止未经授权的人员将数据拷贝到外部存储设备或…

VMware Fusion 13.6 OEM BIOS 2.7 - 在 macOS 中运行 Windows 虚拟机的最佳方式

VMware Fusion 13.6 OEM BIOS 2.7 - 在 macOS 中运行 Windows 虚拟机的最佳方式 VMware Fusion 13 原版 App 中集成 OEM BIOS 请访问原文链接:https://sysin.cn/blog/vmware-fusion-13-oem/,查看最新版。原创作品,转载请保留出处。 作者主…

中国家庭收入调查(CHIP)数据合集(1988-2018年)

中国家庭收入调查(CHIP)是一项重要的社会学研究资源,它通过入户调查的方式收集了包含家庭收支信息以及其他相关的家庭和个人信息。CHIP数据合集涵盖了多个年份,包括2018、2013、2008、2007、2002、1999、1995、1988年,…

词嵌入(一):基于矩阵分解的静态词嵌入(VSM、TF-IDF、SVD)

文章目录 一、从几种直观思路的不足谈到理想的Word Representation1.1 独热编码1.2 共现矩阵1.3 理想的Word Representation应当满足的要求 二、静态词嵌入与动态词嵌入三、基于矩阵分解的静态词嵌入3.1 Distributional Hypothesis3.2 向量空间模型(Vector Space Mo…

【详解】网络隔离环境下,跨网文件交换存在的核心问题及解决方法

一、为什么要进行网络隔离? 随着互联网技术的发展和推进,人们对于网络使用的场景也越来越多元化,而网络黑客入侵、病毒攻击、网络泄密等安全事件的不断发生,也让人们认识到网络安全的重要性。企业、社会、国家机构在日常经营管理…

基于Pytorch框架的深度学习U2Net网络精细天空分割系统源码

第一步:准备数据 头发分割数据,总共有10276张图片,里面的像素值为0和1,所以看起来全部是黑的,不影响使用 第二步:搭建模型 级联模式 通常多个类似U-Net按顺序堆叠,以建立级联模型&#xff0c…

STM32(十二):DMA直接存储器存取

DMA(Direct Memory Access)直接存储器存取 DMA可以提供外设和存储器或者存储器和存储器之间的高速数据传输,无须CPU干预,节省了CPU的资源。(运行内存SRAM、程序存储器Flash、寄存器) 12个独立可配置的通道&…

【stata】自写命令分享twfe_stgdid,一键完成staggered-DID

1. 命令简介 仿照CSDID命令一键出实证结果、出图,我写了一个twfe_stgdid命令。基于双向固定效应模型(TWFE)一键式完成staggered-DID分析。TWFE估计did estimator时难以避免负权重带来的问题(异质性处理效应)。所以&am…

C++11新特性——右值引用与移动语义

左值引用和右值引用 在C中,左值是一个表示数据的表达式,我们可以获取它的地址,一般可以对它赋值,通常可以出现在左边或右边,左值引用就是对左值的引用,相当于给左值起了一个别名。 例子: int …

macOS安装Java和Maven

安装Java Java Downloads | Oracle 官网下载默认说最新的Java22版本,注意这里我们要下载的是Java8,对应的JDK1.8 需要登陆Oracle,没有账号的可以百度下。账号:908344069qq.com 密码:Java_2024 Java8 jdk1.8配置环境变量 open -e ~/.bash_p…

Autosar--Can收发器通俗讲解

Autosar网络管理的休眠唤醒功能,Can收发器起到比较大的作用,充当唤醒源以及最终执行网络休眠。 Autosar--Can收发器通俗讲解 唤醒/休眠请求 进入normol ComM_EcuM_WakeUpIndication 有唤醒源事件 CanSM_RequestComMode 有通信请求 CanSM_NetworkStatemachine() 更新CANS…

【C++】list(下)

个人主页~ list(上)~ list 四、模拟实现1、list.h(1)关于整个list的搭建①节点②迭代器③接口 (2)自定义类型实例化 2、test.cpp(1)test1(2)test2 五、额外小…

大模型入门 ch02:数据集准备

本文是github上的大模型教程LLMs-from-scratch的学习笔记,教程地址:教程链接 Chapter 2: Working with Text 这一章节包括了数据的准备和采样阶段。 1. Tokenizer 大模型通过将token转变为embedding(词嵌入)运作。 首…

【机器学习】高斯网络的基本概念和应用领域以及在python中的实例

引言 高斯网络(Gaussian Network)通常指的是一个概率图模型,其中所有的随机变量(或节点)都遵循高斯分布 文章目录 引言一、高斯网络(Gaussian Network)1.1 高斯过程(Gaussian Proces…

Android14音频进阶之高通Elite架构指定通道播放(八十四)

简介: CSDN博客专家、《Android系统多媒体进阶实战》一书作者 新书发布:《Android系统多媒体进阶实战》🚀 优质专栏: Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏: 多媒体系统工程师系列【原创干货持续更新中……】🚀 优质视频课程:AAOS车载系统+…

【Linux】多线程:线程概念,线程与进程的区别与联系,多线程相较于多进程的优势

目录 一、进程基本属性回顾 二、线程概念 三、操作系统为什么要引入线程—多进程和多线程的区别 为什么多线程比多线程调度效率更快? 四、线程的优点 五、线程的缺点 六、线程异常 一、进程基本属性回顾 在学习线程之前,我们先来回顾一下进程的基…

6. LinkedList与链表

一、ArrayList的缺陷 通过源码知道,ArrayList底层使用数组来存储元素,由于其底层是一段连续空间,当在ArrayList任意位置插入或者删除元素时,就需要将后序元素整体往前或者往后搬移,时间复杂度为O(n),效率比…