Linux搭建Gitlab保姆级教程

news2025/9/15 6:50:55

文章目录

  • 1、gitlab安装
    • 1.1、gitlab介绍
      • 1.1.1、概念
      • 1.1.2、gitlab与github的区别
      • 1.1.3、gitlab的优势
      • 1.1.4、gitlab主要服务构成
      • 1.1.5、gitlab的工作流程
    • 1.2、准备工作
    • 1.3、安装
    • 1.4、配置
    • 1.5、启动
    • 1.6、测试
  • 2、gitlab安装目录
  • 3、gitlab常用命令
  • 4、注册账号
  • 5、gitlab相关设置
    • 5.1、设置中文
    • 5.2、创建组
    • 5.3、创建项目
    • 5.4、组添加成员
    • 5.5、创建readme文件
    • 5.6、拉取项目
    • 5.7、提交代码
  • 6、小结

1、gitlab安装

1.1、gitlab介绍

1.1.1、概念

Gitlab是一个开源分布式版本控制系统,由Ruby开发,有管理项目源代码、版本控制、代码复用与查找等功能

1.1.2、gitlab与github的区别

  • github是分布式在线代码托管仓库,个人版本可直接在线免费使用,企业版本收费且需要服务器安装
  • gitlab是分布式在线代码仓库托管软件,分社区免费版本与企业收费版本,都需要服务器安装

1.1.3、gitlab的优势

  1. 开源免费,社区免费版本适合中小型公司
  2. 差异化的版本管理,离线同步以及强大分支管理功能
  3. 便捷的GUI操作界面以及强大账户权限管理功能
  4. 集成度很高,能够集成绝大多数的开发工具
  5. 支持内置HA,保证在高并发下仍旧实现高可用性

1.1.4、gitlab主要服务构成

  • Nginx 静态Web服务器
  • Gitlab-workhorse 轻量级的反向代理服务器
  • Gitlab-shell 用于处理Git命令和修改authorized keys列表
  • Logrotate 日志文件管理工具
  • Postgresql 数据库 Redis 缓存服务器

1.1.5、gitlab的工作流程

  1. 创建并克隆项目
  2. 创建项目某Feature分支
  3. 编写代码并提交至该分支
  4. 推送该项目分支至远程Gitlab服务器
  5. 进行代码检查并提交Master主分支合并申请
  6. 项目领导审查代码并确认合并申请

1.2、准备工作

我们演示的场景是在Linux系统中安装gitlab,所以需要有一个Linux环境,那我这里的方式是在本地装了一个虚拟机,然后安装了CentOS7的系统,如果你不会在本地安装虚拟机和CentOS7的话,可以参考我的这篇文章:https://blog.csdn.net/wujiangbo520/article/details/119043758,照着一步一步做就可以了

1.3、安装

好,上面我们已经准备好了Linux环境,那么我们现在就开始安装gitlab,但是安装gitlab方式有很多种,我们这里采取的是:通过rpm包进行安装

不同版本的Linux对应不同的rpm包

  • 若Linux版本为Centos 7,则需要下载el7版本的GitLab
  • 若Linux版本为Centos 8,则需要下载el8版本的GitLab
  • 若Linux版本为Alibaba Cloud Linux release 3,则需要下载el8版本的GitLab

我这里是CentOS7系统,所以需要下载el7版本的GitLab,下载地址是:https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7,如下:

image-20230104160049623

下载的文件如下:

image-20230104160501323

然后将文件上传到opt目录中,如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bUcHfoCe-1673165001970)(null)]

然后我们在opt目录下执行下面命令:

yum install -y curl policycoreutils openssh-server openssh-clients

如下:

image-20230104155239852

然后我们可以设置成开机启动:

#启动ssh服务
systemctl start sshd
#ssh服务设置为开机启动
systemctl enable sshd

如下:

image-20230104155359627

然后安装Postfix,Postfix是一个邮件服务器,GitLab发送邮件需要用到:

#安装postfix
yum install -y postfix
 
#启动postfix并设置为开机启动
systemctl start postfix
systemctl enable postfix

如下:

image-20230104155506140

image-20230104155520259

然后开放ssh以及http服务(80端口):

#开放ssh、http服务
firewall-cmd --add-service=ssh --permanent
firewall-cmd --add-service=http --permanent

如下:

image-20230104155701212

如上图,说明设置成功了

然后关闭防火墙以及开机自动关闭防火墙:

systemctl stop firewalld
systemctl disable firewalld
setenforce 0

如下:

image-20230104155847516

接下来可以安装gitlab了:

rpm -ivh gitlab-ce-10.0.2-ce.0.el7.x86_64.rpm

如果出现下图,则说明安装成功:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yJuPAmTR-1673165001742)(null)]

1.4、配置

安装完gitlab需要修改配置文件,并加载

vim /etc/gitlab/gitlab.rb     进入配置文件

image-20230104161449314

找到下面一行,修改IP:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aydGawat-1673165001686)(null)]

还需要配置发邮件的相关参数:

gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.qq.com"
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = "11334135987@qq.com"
gitlab_rails['smtp_password'] = "授权码"
gitlab_rails['smtp_domain'] = "smtp.qq.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = true
gitlab_rails[‘gitlab_email_from’] = '11334135987@qq.com'

如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZV2jM0ux-1673165001643)(null)]

先按字母【i】进入编辑模式,修改完成后,按【Esc】然后输入【:wq】保存并退出即可

1.5、启动

修改好配置文件后,要使用下面命令重新加载一下配置文件,否则不生效

gitlab-ctl reconfigure

执行上面命令后,启动过程时间较长,需要耐心等待,结果如下:

image-20230104162146318

然后执行下面命令查看一下gitlab的状态:

gitlab-ctl status

结果如下:

image-20230104162209531

重启成功后,可以测试一下是否可以正常发邮件,执行下面命令进入控制台:

gitlab-rails console

如下:

image-20230104164923351

然后执行下面命令,发送一封测试邮件,格式:Notify.test_email(‘收件人’, ‘标题’, ‘正文’).deliver_now

Notify.test_email('wujiangbo2018@163.com', 'gitlab测试', 'gitlab测试正文').deliver_now

然后查看你的邮箱,就可以收到邮件了:

image-20230104173240737

说明邮件服务是正常的

1.6、测试

我们本地浏览器访问:http://192.168.92.128:9001,结果如下:

image-20230104162457083

可以正常看到gitlab的首页,说明我们安装部署成功了,完美

2、gitlab安装目录

以下是gitlab常用的默认安装目录:

gitlab组件日志路径:/var/log/gitlab
 
gitlab配置路径:/etc/gitlab/  路径下有gitlab.rb配置文件
 
应用代码和组件依赖程序:/opt/gitlab
 
各个组件存储路径: /var/opt/gitlab/
 
仓库默认存储路径   /var/opt/gitlab/git-data/repositories
 
版本文件备份路径:/var/opt/gitlab/backups/
 
nginx安装路径:/var/opt/gitlab/nginx/
 
redis安装路径:/var/opt/gitlab/redis

3、gitlab常用命令

#查看服务状态
gitlab-ctl status
使用控制台实时查看日志
# 查看所有的logs; 按 Ctrl-C 退出
gitlab-ctl tail
# 拉取/var/log/gitlab下子目录的日志
gitlab-ctl tail gitlab-rails
# 拉取某个指定的日志文件
gitlab-ctl tail nginx/gitlab_error.log
#启动关闭gitlab	
gitlab-ctl start      
gitlab-ctl stop                                #停止            
gitlab-ctl status                              #查看状态
gitlab-ctl restart                             #重启
gitlab-ctl reconfigure			   #更新配置文件
gitlab-ctl help                                #帮助
gitlab-rake gitlab:check SANITIZE=true --trace	检查gitlab
#gitlab 默认的日志文件存放在/var/log/gitlab 目录下
gitlab-ctl tail                                #查看所有日志
#禁止 Gitlab 开机自启动
systemctl disable gitlab-runsvdir.service 
#启用 Gitlab 开机自启动
systemctl enable gitlab-runsvdir.service

4、注册账号

访问地址:http://192.168.92.128:9001/users/sign_in,如下:

image-20230104173952180

点击【Redister】按钮后,出现下面页面:

image-20230104174033142

5、gitlab相关设置

5.1、设置中文

image-20230104174358754

5.2、创建组

组相当于团队,在项目开发过程中,每个组有不同的组员和对应的不同的子项目,对项目组用户开放项目的访问

image-20230104174926048

填写相关参数即可:

image-20230104175140464

可见性级别中包含三种:

  1. 私有:群组及其项目只能由成员查看
  2. 内部:任何登录的用户都可以查看该群组和任何内部项目
  3. 公开:不进行身份验证,可以随意查看

5.3、创建项目

image-20230104175319929

然后填写相关参数即可:

image-20230104175430863

创建成功了:

image-20230104175502191

5.4、组添加成员

image-20230104175809295

用户角色总共有下面几个选项,分别为:

  • Guest:可以创建issue、发表评论,不能读写版本库
  • Reporter:可以克隆代码,不能提交,QA、PM可以赋予这个权限
  • Developer:以克隆代码、开发、提交、push,RD可以赋予这个权限
  • Maintainer:可以创建项目、添加tag、保护分支、添加项目成员、编辑项目,核心RD负责人可以赋予这个权限
  • Owner:可以设置项目访问权限 - Visibility Level、删除项目、迁移项目、管理组成员,开发组leader可以赋予这个权限

5.5、创建readme文件

image-20230104180018446

5.6、拉取项目

image-20230104180230566

然后本地进行拉取:

image-20230104180246925

然后输入账号wujiangbo,密码:itsource123456,然后可以拉取了:

image-20230104180331725

拉取下来的代码是这样的:

image-20230104180356332

目前里面啥也没有,就只有我们刚刚新建的一个readme.md文件

5.7、提交代码

我们新建一个文件后提交:

image-20230104180734599

提交成功:

image-20230104180753693

然后刷新gitlab查看是否上传成功:

image-20230104180938597

查看提交的文件详情:

image-20230104181032881

没有毛病,是我们提交的文件,测试成功

6、小结

其实gitlab和我们平时使用的Gitee没有太大的区别,使用方式大同小异,在工作中多用几次就不陌生了

如果本文对你有帮助的话,记得点个赞哦

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

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

相关文章

上半年要写的博客文章23

上半年要写的博客文章21 这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个…

ArcGIS基础实验操作100例--实验76按格网统计点要素

本实验专栏参考自汤国安教授《地理信息系统基础实验操作100例》一书 实验平台:ArcGIS 10.6 实验数据:请访问实验1(传送门) 高级编辑篇--实验76 按格网统计点要素 目录 一、实验背景 二、实验数据 三、实验步骤 (1&…

java EE 初阶 — CAS 的介绍

文章目录CAS1. 什么是 CAS2. CAS 是怎么实现的3. CAS 有哪些应用3.1 实现原子类3.2 实现自旋锁4. CAS 的 ABA 问题4.1 什么是 ABA 问题4.2 ABA 问题引来的 BUG4.3 解决方案5. 相关面试题CAS 1. 什么是 CAS CAS:全称 Compare and swap,字面意思&#xff…

设计模式——工厂方法模式

文章目录1. 工厂方法模式的定义2. 工厂方法模式的类图3. 工厂方法模式的作用4. 工厂方法模式的实现1. 工厂方法模式的定义 定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法让类把实例化推迟到子类。 2. 工厂方法模式的类图 3. 工厂方法模式…

[教程]一文搞懂STM32使用DHT11采集温湿度

1、DHT11简介 DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高 的可靠性与卓越的长期稳定性。传感器包括一个电阻式感湿元件和一个NTC测 温元件,并与一个高性能8…

GO语言基础-08-内建函数-make()、new()

文章目录1. make1.1 概述1.2 示例(make切片)1.3 示例(make map)1.4 示例(make 通道)2. new2.1 概念2.2 示例(new 切片)2.3 示例(new和make对比)2.4 示例&…

Java基础算法每日5道详解(2)

83. Remove Duplicates from Sorted List 从排序列表中删除重复项 Given the head of a sorted linked list, delete all duplicates such that each element appears only once. Return the linked list sorted as well. Example 1: Input: head [1,1,2] Output: [1,2]Exa…

20230109测试ToyBrick的RK3588开发板运行Buildroot的V20220811版本

20230109测试ToyBrick的RK3588开发板运行Buildroot的V20220811版本 2023/1/9 14:25 开发板:Toybrick的TB-RK3588X开发板 SDK:RK3588_LINUX_20220811\rk3588-linux-20220811.tar.gz_06 H:\BaiduNetdiskDownload\RK3588_LINUX_20220811 rk3588-linux-2022…

【SQLyog错误号码2058解决办法】

当你遇到下图这个错误时,是由于SQLyog在8.0以上版本采用了新的加密方式。 解决办法: win R打开 , 输入cmd,打开命令行窗口, 然后连接你的SQLyog版本的服务器, mysql -uroot -P3306 -p注意:…

【Kotlin】数字类型 ( 安全转换函数 | 浮点型转整型 )

文章目录一、安全转换函数二、浮点型转整型一、安全转换函数 在 Kotlin 中 , 将 字符串 String 类型 转为 数字类型 , 如果 字符串 代表的数字类型 与 要换转的 数字类型 不匹配 , 就会出异常 ; 如 : 执行如下代码 , 就会报异常 ; 字符串内容是 0.5 , 显然是一个 Double 类…

Kotlin Flow响应式编程,StateFlow和SharedFlow

本文同步发表于我的微信公众号,扫一扫文章底部的二维码或在微信搜索 郭霖 即可关注,每个工作日都有文章更新。 大家好,今天是Kotlin Flow响应式编程三部曲的最后一篇。 其实回想一下我写这个Kotlin Flow三部曲的初衷,主要还是因为…

基于瑞芯微平台cif接口dvp相机的视频接入(ov2640、rv1126为例)

基于瑞芯微平台cif接口dvp相机的视频接入(ov2640、rv1126为例)名词定义视频格式sensor与ispI2CXCLK行场同步信号DATA抓图名词定义 CIF,指RK芯片中的VIP模块,用以接收Sensor数据并保存到Memory中,仅转存数据&#xff0c…

Komo 综合资产收集和漏洞扫描工具

前言 因工作中的需要,开发了这款综合资产收集和漏洞扫描工具,方便在工作中各方面的收集资产和漏洞扫描,同时也可用于挖洞。 Komo已经在工作中辅助我挖到过一些漏洞,同时轻便了我资产收集的过程。 Komo is a comprehensive asset c…

【图像处理OpenCV(C++版)】——3.3 几何变换之极坐标变换

前言: 😊😊😊欢迎来到本博客😊😊😊 🌟🌟🌟 本专栏主要结合OpenCV和C来实现一些基本的图像处理算法并详细解释各参数含义,适用于平时学习、工作快…

MATLAB | 如何从热图中提取数据

这期做了个可能有用的小工具,一般论文中热图很少给出数据,于是就想写个小工具通过热图上的颜色估计出数据值来,目前写了个初版的工具分享给大家! 工具函数 由于只是初版,要手动改的地方还是不少的,要设置…

PHP多商户AI智能在线客服系统源码 机器人自动回复 即时通讯聊天系统源码

一套智能在线客服系统源码 多商户网页客服系统源码 支持二十种国际语言 带机器人自动回复。 框架:Thinkphp5workerman, 环境:nginxphp7.3mysql5.6 支持H5公众号APP小程序 了解更多可私信我! 系统功能: 1、支持国际…

编写程序时调用第三方程序时使用的是相对路径而不是绝对路径会造成什么严重后果(Windows Linux)

简介 在编写程序时,有很多人调用第三方程序使用的是相对路径,而不是绝对路径,如下: #!/bin/python3import osos.system("whoami") #调用whoami程序,查看当前用户名#!/bin/bashfind / -name "hellowor…

day10|239. 滑动窗口最大值、347.前 K 个高频元素

239. 滑动窗口最大值 给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。返回滑动窗口中的最大值 。 示例 1: 输入:nums [1,3…

如何修改视频MD5的格式?这些方法值得你收藏

MD5实际上是计算机安全领域中广泛使用的一种散列函数,可以用来保护消息的完整性,简单来说就是类似于我们的指纹,可以说MD5是每个文件的“数字指纹”。比如:我们在平台上传一些热门视频,平台会自动识别视频的MD5值&…

嵌入式 LINUX 驱动开发 day01 第一个内核模块程序 多文件编译为一个程序, 内核模块参数, 内核模块依赖

1.第一个内核模块程序 ( 记得配置自己的交叉编译的工具,) 首先两个文件 vser.c Makefile (记得大写的M) vser.c #include <linux/init.h> //内核初始化头文件 #include <linux/module.h> //内核模块文件 #include <linux/kernel.h> //&…