gitlab 搭建使用
1. 硬件要求
##CPU
4 核心500用户
8 核心1000用户
##内存
4 G内存500用户
8 G内存1000用户
2. 下载 链接
3. 安装依赖
yum -y install curl openssh-server postfix wget
4. 安装gitlab组件
yum -y localinstall gitlab-ce-15.9.3-ce.0.el7.x86_64.rpm

5. 修改配置文件
cat > /etc/gitlab/gitlab.rb <<EOF
external_url 'http://gitlab.tom.com'
gitlab_rails['smtp_enable'] = false
gitlab_rails['registry_enabled'] = false
registry['enable'] = false
prometheus['enable'] = false
alertmanager['enable'] = false
node_exporter['enable'] = false
redis_exporter['enable'] = false
postgres_exporter['enable'] = false
gitlab_exporter['enable'] = false
prometheus_monitoring['enable'] = false
EOF
#使用gitlab.rb文件重新生成子配置文件
gitlab-ctl reconfigure

#重启所有gitlab相关文件.
gitlab-ctl restart
#查看gitlab状态
]# gitlab-ctl status
run: gitaly: (pid 31042) 128s; run: log: (pid 30218) 355s
run: gitlab-kas: (pid 31141) 118s; run: log: (pid 30464) 344s
run: gitlab-workhorse: (pid 31147) 117s; run: log: (pid 30632) 294s
run: logrotate: (pid 31157) 117s; run: log: (pid 30173) 367s
run: nginx: (pid 31853) 2s; run: log: (pid 30647) 289s
run: postgresql: (pid 31208) 96s; run: log: (pid 30397) 348s
run: puma: (pid 31197) 97s; run: log: (pid 30575) 306s
run: redis: (pid 31202) 97s; run: log: (pid 30194) 361s
run: sidekiq: (pid 31219) 95s; run: log: (pid 30599) 300s
6. 登录gitlab页面
]# cat /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 (usually, the first reconfigure run).
# 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: fIElM6At23WAaLvZBiy2lzFvOd8Vz8ch96gw3Y0S+HU=# NOTE: This file will be automatically deleted in the first reconfigure run after 24 hours.
登录用户:root
密码:/etc/gitlab/initial_root_password文件中的Password字段值


7. 汉化



8. 修改密码



9. 关闭注册功能


10. 使用案例
步骤:
1. 创建dev开发组
2. 添加用户tom
3. 用户组添加用户
4. 创建1个项目happy_app并关联dev组
10.1. 创建dev开发组


10.2. 创建用户




10.3. 关联用户到用户组



10.4. 创建项目并关联组




10.5. 普通用户登录gitlab



]# cat /root/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDSZ9RvDQpNBc9Hz0vJ8vzQ/bE5Nu7bH9o+krxItSGHvwCCkuducUve0vweyEk52iZRUb3OYAH9Z5GDTFZ+br5sipT/wg8z7FW8g+EhDAOc9adsHSU+hDluKykyw6qLnQ4rX9tIZh6KXrZCiLneRBtfESg+MQvxNYZ8qiAqmiyq3tuz1Wue8KJ/869GvYVoPYDNYt+HBUmSJb9aagVkndXvHvex6ECgRTDrdzoXfpd5HrIlgtvxT46+RnZX5pFiDyUd0K7k9T99VxLQU5oUFUh+YA9glpojleKlOduUa1ld6Lno+StQdAOhKsUYiz31UKwJ5IBE0XCx5OTnG372p0Ib root@jenkins
把用户主机上/root/.ssh/id_rsa.pub 里面的公钥复制到下图1的位置,如果没有此文件,先ssh-keygen生成


已经有远程仓库的代码,需要切换远程仓库地址

#把origin重命名为old-origin
git remote rename origin old-origin
#添加新的origin地址
git remote add origin git@gitlab.tom.com:dev/happy-app.git
#推送所有分支
git push -u origin --all
#推送所有tag
git push -u origin --tags

上面报错是因为此用户权限是developer,无法创建分支,可以用管理员账户把tom用户权限调整为owner.


已经可以看到代码的分支,标签,提交记录
11. 如果gitlab管理员用户名密码忘记,重置方法
gitlab-rake "gitlab:password:reset"

12. gitlab备份与恢复
12.1. gitlab服务配置文件备份
/etc/gitlab目录备份
12.2. 备份gitlab里面的内容
gitlab_rails['manage_backup_path'] = true #是否可以指定备份目录
gitlab_rails['backup_path'] = "/var/opt/gitlab/backups" #备份目录
gitlab_rails['backup_archive_permissions'] = 0600 #备份的压缩包权限
gitlab_rails['backup_keep_time'] = 604800 #备份保留多久 7天]# egrep -v '^$|^#' /etc/gitlab/gitlab.rb
external_url 'http://gitlab.tom.com'
gitlab_rails['manage_backup_path'] = true
gitlab_rails['backup_path'] = "/var/opt/gitlab/backups"
gitlab_rails['backup_archive_permissions'] = 0600
gitlab_rails['backup_keep_time'] = 604800
gitlab_rails['smtp_enable'] = false
gitlab_rails['registry_enabled'] = false
registry['enable'] = false
prometheus['enable'] = false
alertmanager['enable'] = false
node_exporter['enable'] = false
redis_exporter['enable'] = false
postgres_exporter['enable'] = false
gitlab_exporter['enable'] = false
prometheus_monitoring['enable'] = false#重新生成子配置文件
]# gitlab-ctl reconfigure]# gitlab-ctl restart#手动执行备份命令
]# gitlab-backup create
12.3. gitlab恢复数据
先停止写入数据
[root@gitlab ~]# gitlab-ctl stop puma
ok: down: puma: 0s, normally up
[root@gitlab ~]# gitlab-ctl sidekiq
ok: down: sidekiq: 1s, normally up
执行恢复命令
注意:执行恢复命令的时候,备份文件的名字去除_gitlab_backup.tar,只要前面的部分
~]# ll /var/opt/gitlab/backups/
-rw------- 1 git git 512000 Jul 12 08:40 1720744836_2024_07_12_15.9.3_gitlab_backup.tar~]# gitlab-backup restore BACKUP=/var/opt/gitlab/backups/1720744836_2024_07_12_15.9.3
12.4. 定时任务备份
#创建备份目录
mkdir -p /backup/gitlab/{code,conf}
chown -R git.root /backup/gitlab/code
#--------------------------------------------------------------
#修改git配置文件中备份文件夹路径
[root@gitlab ~]# egrep -v '^$|^#' /etc/gitlab/gitlab.rb
external_url 'http://gitlab.tom.com'
gitlab_rails['manage_backup_path'] = true
gitlab_rails['backup_path'] = "/backup/gitlab/code/"
gitlab_rails['backup_archive_permissions'] = 0600
gitlab_rails['backup_keep_time'] = 604800
gitlab_rails['smtp_enable'] = false
gitlab_rails['registry_enabled'] = false
registry['enable'] = false
prometheus['enable'] = false
alertmanager['enable'] = false
node_exporter['enable'] = false
redis_exporter['enable'] = false
postgres_exporter['enable'] = false
gitlab_exporter['enable'] = false
prometheus_monitoring['enable'] = false#重新生成子配置文件
]# gitlab-ctl reconfigure
]# gitlab-ctl restart
#--------------------------------------------------------------
#自动备份脚本
]# cat /server/scripts/backup-gitlab.sh
#!/bin/bash
#1.备份gitlab数据
gitlab-backup create
#2.备份gitlab配置和密码文件
tar zcf /backup/gitlab/conf/gitlab-conf-$(date +%F).tar.gz /etc/gitlab/
#3. 传输到备份服务器
#rsync xxx#增加定时任务
* 03 * * * /bin/bash /server/scripts/backup-gitlab.sh &> /backup/gitlab/back.log
13. gitlab证书配置
为了防止内网渗透,将gitlab服务的访问添加了ssl,具体步骤如下:
1.gitlab配置https(请先做个快照.)
nginx['enable' ] = true
nginx['client_max_body_size' ]= '250m '
nginx['redirect_http_to_https' ]= true
nginx['redirect_http_to_https _port' ] = 443
nginx['ssl_certificate' ] = "path/ key.crt"
nginx['ssl_certificate_key'] = "path/ key.key"
nginx['ssl_ciphers' ] ="ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256"
nginx['ssl_prefer_server_ciphers']= "on"
nginx['ssl_protocols']= "TLSv1.2"
nginx['ssl_session_cache' ] = "builtin:1000shared:sSL: 10m"
nginx['ssl_session_timeout']= "5m"核心:
nginx['ssl_certificate' ] = 用于指定证书 .crt .pem
nginx['ssl_certificate_key'] = 用于指定私钥 .key 2.gitlab重新配置子项目
gitlab-ctl reconfigure
重启:
gitlab-ctl restart
14. 优化配置
优化暂时不用组件 (选作)
#关闭目前不使用的组件 默认都是true 修改为 false
#关闭prometheus
prometheus['enable'] = false
prometheus['monitor_kubernetes'] = false
#关闭alertmanger
alertmanager['enable'] = false
#关闭exporter 如果需要prometheus监控 则可以打开。
node_exporter['enable'] = false
redis_exporter['enable'] = false
postgres_exporter['enable'] = false
gitlab_monitor['enable'] = false
#gitlab_exporter
prometheus_monitoring['enable'] = false
grafana['enable'] = false
相关文章:
gitlab 搭建使用
1. 硬件要求 ##CPU 4 核心500用户 8 核心1000用户 ##内存 4 G内存500用户 8 G内存1000用户 2. 下载 链接 3. 安装依赖 yum -y install curl openssh-server postfix wget 4. 安装gitlab组件 yum -y localinstall gitlab-ce-15.9.3-ce.0.el7.x86_64.rpm 5. 修改配置文…...
探索JT808协议在车辆远程视频监控系统中的应用
一、部标JT808协议概述 随着物联网技术的迅猛发展,智能交通系统(ITS)已成为现代交通领域的重要组成部分。其中,车辆远程监控与管理技术作为ITS的核心技术之一,对于提升交通管理效率、保障道路安全具有重要意义。 JT8…...
视频使用操作说明书-T80005系列视频编码器如何对接海康NVR硬盘录像机,包括T80005系列高清HDMI编码器、4K超高清HDMI编码器
视频使用操作说明书-T80005系列视频编码器如何对接海康NVR硬盘录像机,包括T80005系列高清HDMI编码器、4K超高清HDMI编码器。 视频使用操作说明书-T80005系列视频编码器如何对接海康NVR硬盘录像机,包括T80005系列高清HDMI编码器、4K超高清HDMI编码器 同三…...
keep-alive缓存组件
keep-alive缓存组件是Vue.js中的一个特殊组件,主要用于缓存内部组件的数据状态,以提高应用的性能和用户体验。以下是关于keep-alive缓存组件的详细解析: 一、作用 缓存组件状态:当组件在<keep-alive>内部切换时࿰…...
Linux上如何安装ffmpeg视频处理软件
在Linux上安装ffmpeg需要以下步骤: 更新系统 在开始安装之前,首先需要更新系统以获取最新的软件包列表和版本。在终端中执行以下命令: sudo apt update sudo apt upgrade安装依赖库 ffmpeg依赖于一些库和工具,需要先安装它们。在…...
element如何实现自定义表头?
有时候我们需要实现自定义表头,例如表头里加按钮啥的,这时候就需要用到自定义表头,但是官方对自定义表头的使用写的还是比较简单,今天就来详细说说 在需要使用自定义表头的表头上使用:render-header来启用自定义表头: <el-table-column :render-header="button&…...
OTP防重放攻击
OTP本意是一次性口令,比如邮箱验证码,短信验证码,或者根据totp或者hotp生成的默认30秒一变的6位数字。 不过开发者要注意,必须要在验证成功后失效那个验证码,不然就会导致重放攻击。 对于邮箱验证码,服务器…...
Oracle数据库加密与安全
Wallet简介: Oracle Wallet(即内部加密技术TDE( Transparent DataEncryption) TDE是 Oracle10gR2中推出的一个新功能,使用时要保证Oracle版本是在10gR2或者以上 Wallet配置: 1.创建一个新目录,并指定为Wallet目录 /home/oracle…...
【YOLO格式的数据标签,目标检测】
标签为 YOLO 格式,每幅图像一个 *.txt 文件(如果图像中没有对象,则不需要 *.txt 文件)。*.txt 文件规格如下: 每个对象一行 每一行都是 class x_center y_center width height 格式。 边框坐标必须是 归一化的 xywh 格式&#x…...
Memcached内存碎片清理术:优化缓存性能的策略
标题:Memcached内存碎片清理术:优化缓存性能的策略 内存碎片是Memcached在长期运行过程中常见的问题,它会降低缓存效率并影响性能。作为高效的分布式内存缓存系统,Memcached提供了多种内存碎片整理策略。本文将详细介绍这些策略&…...
禁止使用存储过程
优质博文:IT-BLOG-CN 灵感来源 什么是存储过程 存储过程Stored Procedure是指为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户可通过指定存储过程的名字并给定参数(如果该存储过程带有参数)来调用执行。 …...
Flink异常:org/apache/hadoop/hive/ql/parse/SemanticException
在flink项目中跑 上面这段代码出现如下这个异常, java.lang.NoClassDefFoundError: org/apache/thrift/TException 加上下面这个依赖后不报错 <dependency> <groupId>org.apache.thrift</groupId> <artifactId>libthrift</artifactId…...
Java:构造函数与对象
第一章:构造函数揭秘 —— 创造者的第一次触碰 构造函数,顾名思义,是用于创建和初始化对象的特殊方法。它没有返回类型,名字与类名一致。构造函数是对象诞生的第一步,也是最至关重要的一步。让我们通过一个生动的例子…...
Leetcode(经典题)day1
删除有序数组中的重复项|| 80. 删除有序数组中的重复项 II - 力扣(LeetCode) 和之前的删除有序数组中的重复项|相似,这里是要求最多出现两次,所以多加一个变量来记录出现次数即可,整体上还是使用双指针,…...
k8s record 20240710 监控
不是adaptor 是opetator 案例 监控有了,日志搜集呢? 一、kubelet 的小弟 kubelet — 负责维护容器的生命周期,节点和集群其他部分通信 cAdvisor 集成在 Kubernetes 的 kubelet 中,能够自动发现和监控集群中所有的容器。dockers…...
pdf工具
iLovePDF | 为PDF爱好者提供的PDF文件在线处理工具 https://www.ilovepdf.com/zh-cn 图片 pdf 合并成一个pdf也可以拆分...
百度文心4.0 Turbo开放,领跑国内AI大模型赛道!
百度文心4.0 Turbo开放,领跑国内AI大模型赛道! 前言 文心一言大模型 就在7月5日,在2024世界人工智能大会 (WAIC) 上,百度副总裁谢广军宣布文心大模型4.0 Turbo正式向企业客户全面开放!这一举动直接引发了业界的关注。那…...
Vue3 defineProps的使用
1.什么是defineProps defineProps是Vue3中的一种新的组件数据传递方式,可以用于在子组件中定义接收哪些父组件的props。当父组件的props发生变化时,子组件也会随之响应。 2.如何使用defineProps? 在子组件中可以使用defineProps声明该组件…...
面向对象进阶基础练习
Java学习笔记(新手纯小白向) 第一章 JAVA基础概念 第二章 JAVA安装和环境配置 第三章 IntelliJ IDEA安装 第四章 运算符 第五章 运算符联系 第六章 判断与循环 第七章 判断与循环练习 第八章 循环高级综合 第九章 数组介绍及其内存图 第十章 数…...
iPhone删除所有照片的高效三部曲
苹果手机用久了,系统缓存包括自己使用手机留下的内存肯定会越来越多。其中,相册中的照片数量可能会急剧增加,占据大量的存储空间。当用户们想要对相册进行彻底清理,实现iPhone删除所有照片时,不妨跟随以下详细的三部曲…...
19c补丁后oracle属主变化,导致不能识别磁盘组
补丁后服务器重启,数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后,存在与用户组权限相关的问题。具体表现为,Oracle 实例的运行用户(oracle)和集…...
汽车生产虚拟实训中的技能提升与生产优化
在制造业蓬勃发展的大背景下,虚拟教学实训宛如一颗璀璨的新星,正发挥着不可或缺且日益凸显的关键作用,源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例,汽车生产线上各类…...
质量体系的重要
质量体系是为确保产品、服务或过程质量满足规定要求,由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面: 🏛️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限,形成层级清晰的管理网络…...
cf2117E
原题链接:https://codeforces.com/contest/2117/problem/E 题目背景: 给定两个数组a,b,可以执行多次以下操作:选择 i (1 < i < n - 1),并设置 或,也可以在执行上述操作前执行一次删除任意 和 。求…...
Java多线程实现之Callable接口深度解析
Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...
C++.OpenGL (10/64)基础光照(Basic Lighting)
基础光照(Basic Lighting) 冯氏光照模型(Phong Lighting Model) #mermaid-svg-GLdskXwWINxNGHso {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-GLdskXwWINxNGHso .error-icon{fill:#552222;}#mermaid-svg-GLd…...
在WSL2的Ubuntu镜像中安装Docker
Docker官网链接: https://docs.docker.com/engine/install/ubuntu/ 1、运行以下命令卸载所有冲突的软件包: for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done2、设置Docker…...
保姆级教程:在无网络无显卡的Windows电脑的vscode本地部署deepseek
文章目录 1 前言2 部署流程2.1 准备工作2.2 Ollama2.2.1 使用有网络的电脑下载Ollama2.2.2 安装Ollama(有网络的电脑)2.2.3 安装Ollama(无网络的电脑)2.2.4 安装验证2.2.5 修改大模型安装位置2.2.6 下载Deepseek模型 2.3 将deepse…...
嵌入式学习笔记DAY33(网络编程——TCP)
一、网络架构 C/S (client/server 客户端/服务器):由客户端和服务器端两个部分组成。客户端通常是用户使用的应用程序,负责提供用户界面和交互逻辑 ,接收用户输入,向服务器发送请求,并展示服务…...
在 Spring Boot 中使用 JSP
jsp? 好多年没用了。重新整一下 还费了点时间,记录一下。 项目结构: pom: <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://ww…...
