当前位置: 首页 > news >正文

GitLab安装|备份数据|迁移数据及使用教程

作者: 宋发元

最后更新时间:2024-12-24

GitLab安装及使用教程

官方教程 https://docs.gitlab.com/ee/install/docker.html

Docker安装GitLab

宿主机创建容器持久化目录卷

mkdir -p /docker/gitlab/{config,data,logs}

拉取GitLab镜像

docker pull gitlab/gitlab-ce:15.3.1-ce.0

运行GitLab容器(注意修改IP为你的宿主机IP

docker run -d \
-p 8888:80 \
-p 2222:22 \
-v /docker/gitlab/config:/etc/gitlab \
-v /docker/gitlab/data:/var/opt/gitlab \
-v /docker/gitlab/logs:/var/log/gitlab \
-e GITLAB_OMNIBUS_CONFIG="external_url 'http://192.168.2.110'; gitlab_rails['gitlab_shell_ssh_port'] = 2222; gitlab_rails['time_zone'] = 'Asia/Shanghai'" \
-e TZ=Asia/Shanghai \
--memory 16G \
--cpus=8 \
--restart always \
--name gitlab \
gitlab/gitlab-ce:15.3.1-ce.0

浏览器访问GitLab

查看初始密码

docker exec -it gitlab grep "Password": /etc/gitlab/initial_root_password

浏览器登录Gitlab: http://IP:8888

账号:root

密码:【上一步查看的密码】

在这里插入图片描述

设置可见性和访问控制

操作路径:Admin Area > Settings > General > Visibility and access controls

在这里插入图片描述
在这里插入图片描述

修改超级管理员密码

在这里插入图片描述

关闭用户自动注册功能

以root权限登录,在Gitlab的主菜单上,选择Menu --> Admin,如下所示:
在这里插入图片描述

在弹出的页面中,取消掉Sign-up enabled选项前面的勾,然后点击底部的Save changes后,就可以使得我们的配置生效了。这样在登录的时候,就无法实现自动注册了。如下所示:
在这里插入图片描述

创建用户

在首页找到管理员,如图所示:
在这里插入图片描述

点击小人图标
在这里插入图片描述

找到Users,创建用户:
在这里插入图片描述

填写相关信息
注意:需要填写一下email,用于给被创建用户发送初始登录密码。
在这里插入图片描述

创建组

Gitlab上创建项目时,由于新项目的创建必须依赖于一个组,因此,我们在创建项目前,先创建组,如下所示:
在这里插入图片描述

在这里插入图片描述
输入组的名称和描述,组的URL会随着组名称的输入而自动出现,在组的权限处,我们选择Private,配置完成后如下所示:
在这里插入图片描述
点击最下方的Create Group,就可以完成组的创建了。
在这里插入图片描述

创建项目

项目的创建与组的创建过程类似,都是输入项目名称,选择组的名称,项目描述以及权限等。

建议直接在组下创建项目,有三种方式:创建空项目、根据模板创建、从其他代码仓库迁移,根据个人情况选择:
在这里插入图片描述
在这里插入图片描述

修改语言

系统默认为英文,如果需要修改为中文,操作如下。
在这里插入图片描述

刷新浏览器即可切换为中文显示
在这里插入图片描述

数据备份与恢复

数据备份

进入老Gitlab的docker容器

# 进入docker容器
docker exec -it gitlab bash

备份数据

# 备份数据(在gitlab容器内执行)
gitlab-rake gitlab:backup:create /var/opt/gitlab/backups/# 备份结束信息
2024-12-24 03:01:37 +0000 -- Dumping repositories ... done
2024-12-24 03:01:37 +0000 -- Dumping uploads ...
2024-12-24 03:01:37 +0000 -- Dumping uploads ... done
2024-12-24 03:01:37 +0000 -- Dumping builds ...
2024-12-24 03:01:37 +0000 -- Dumping builds ... done
2024-12-24 03:01:37 +0000 -- Dumping artifacts ...
2024-12-24 03:01:41 +0000 -- Dumping artifacts ... done
2024-12-24 03:01:41 +0000 -- Dumping pages ...
2024-12-24 03:01:41 +0000 -- Dumping pages ... done
2024-12-24 03:01:41 +0000 -- Dumping lfs objects ...
2024-12-24 03:01:41 +0000 -- Dumping lfs objects ... done
2024-12-24 03:01:41 +0000 -- Dumping terraform states ...
2024-12-24 03:01:41 +0000 -- Dumping terraform states ... done
2024-12-24 03:01:41 +0000 -- Dumping container registry images ... [DISABLED]
2024-12-24 03:01:41 +0000 -- Dumping packages ...
2024-12-24 03:01:41 +0000 -- Dumping packages ... done
2024-12-24 03:01:41 +0000 -- Creating backup archive: 1735009265_2024_12_24_15.3.1_gitlab_backup.tar ...
2024-12-24 03:01:42 +0000 -- Creating backup archive: 1735009265_2024_12_24_15.3.1_gitlab_backup.tar ... done
2024-12-24 03:01:42 +0000 -- Uploading backup archive to remote storage  ... [SKIPPED]
2024-12-24 03:01:42 +0000 -- Deleting old backups ... [SKIPPED]
2024-12-24 03:01:42 +0000 -- Deleting tar staging files ...
2024-12-24 03:01:42 +0000 -- Cleaning up /var/opt/gitlab/backups/backup_information.yml
2024-12-24 03:01:42 +0000 -- Cleaning up /var/opt/gitlab/backups/db
2024-12-24 03:01:42 +0000 -- Cleaning up /var/opt/gitlab/backups/repositories
2024-12-24 03:01:43 +0000 -- Cleaning up /var/opt/gitlab/backups/uploads.tar.gz
2024-12-24 03:01:43 +0000 -- Cleaning up /var/opt/gitlab/backups/builds.tar.gz
2024-12-24 03:01:43 +0000 -- Cleaning up /var/opt/gitlab/backups/artifacts.tar.gz
2024-12-24 03:01:43 +0000 -- Cleaning up /var/opt/gitlab/backups/pages.tar.gz
2024-12-24 03:01:43 +0000 -- Cleaning up /var/opt/gitlab/backups/lfs.tar.gz
2024-12-24 03:01:43 +0000 -- Cleaning up /var/opt/gitlab/backups/terraform_state.tar.gz
2024-12-24 03:01:43 +0000 -- Cleaning up /var/opt/gitlab/backups/packages.tar.gz
2024-12-24 03:01:43 +0000 -- Deleting tar staging files ... done
2024-12-24 03:01:43 +0000 -- Deleting backups/tmp ...
2024-12-24 03:01:43 +0000 -- Deleting backups/tmp ... done
2024-12-24 03:01:43 +0000 -- Warning: Your gitlab.rb and gitlab-secrets.json files contain sensitive data
and are not included in this backup. You will need these files to restore a backup.
Please back them up manually.
2024-12-24 03:01:43 +0000 -- Backup 1735009265_2024_12_24_15.3.1 is done.

拷贝备份文件1735009265_2024_12_24_15.3.1_gitlab_backup.tar到新服务器宿主机目录/docker/gitlab/data/backups/

备份配置文件

把旧宿主机目录/docker/gitlab/config下的gitlab.rbgitlab-secrets.json两个配置文件也备份,并拷贝到新服务器宿主机目录/docker/gitlab/config下。

数据恢复

上传备份文件1735009265_2024_12_24_15.3.1_gitlab_backup.tar到新Gitlab的宿主机目录/docker/gitlab/data/backups/

上传备份配置文件gitlab.rbgitlab-secrets.json到新GitLab的宿主机目录/docker/gitlab/config

修改权限

修改备份文件权限

# 修改备份文件权限
chown git.git 1735009265_2024_12_24_15.3.1_gitlab_backup.tar 

数据恢复

 # 进入docker容器docker exec -it gitlab bash# 停止相关数据连接服务gitlab-ctl stop unicorngitlab-ctl stop sidekiq# 备份文件数据恢复,这里注意文件名:gitlab-rake gitlab:backup:restore BACKUP=备份文件编号gitlab-rake gitlab:backup:restore BACKUP=1735009265_2024_12_24_15.3.1# 备份开始信息
2024-12-24 03:25:32 +0000 -- Unpacking backup ... 
2024-12-24 03:25:34 +0000 -- Unpacking backup ... done
2024-12-24 03:25:34 +0000 -- Restoring main_database ... 
2024-12-24 03:25:34 +0000 -- Be sure to stop Puma, Sidekiq, and any other process that
connects to the database before proceeding. For Omnibus
installs, see the following link for more information:
https://docs.gitlab.com/ee/raketasks/backup_restore.html#restore-for-omnibus-gitlab-installationsBefore restoring the database, we will remove all existing
tables to avoid future upgrade problems. Be aware that if you have
custom tables in the GitLab database these tables and all data will be
removed.Do you want to continue (yes/no)? yes
Removing all tables. Press `Ctrl-C` within 5 seconds to abort
2024-12-24 11:25:48 +0800 -- Cleaning the database ... 
2024-12-24 11:25:50 +0800 -- done# 备份结束信息
2024-12-24 03:26:40 +0000 -- Restoring repositories ... done
2024-12-24 03:26:40 +0000 -- Restoring uploads ... 
2024-12-24 03:26:40 +0000 -- Restoring uploads ... done
2024-12-24 03:26:40 +0000 -- Restoring builds ... 
2024-12-24 03:26:40 +0000 -- Restoring builds ... done
2024-12-24 03:26:40 +0000 -- Restoring artifacts ... 
2024-12-24 03:26:40 +0000 -- Restoring artifacts ... done
2024-12-24 03:26:40 +0000 -- Restoring pages ... 
2024-12-24 03:26:40 +0000 -- Restoring pages ... done
2024-12-24 03:26:40 +0000 -- Restoring lfs objects ... 
2024-12-24 03:26:40 +0000 -- Restoring lfs objects ... done
2024-12-24 03:26:40 +0000 -- Restoring terraform states ... 
2024-12-24 03:26:40 +0000 -- Restoring terraform states ... done
2024-12-24 03:26:40 +0000 -- Restoring packages ... 
2024-12-24 03:26:40 +0000 -- Restoring packages ... done
This task will now rebuild the authorized_keys file.
You will lose any data stored in the authorized_keys file.
Do you want to continue (yes/no)? yes2024-12-24 03:26:48 +0000 -- Deleting tar staging files ... 
2024-12-24 03:26:48 +0000 -- Cleaning up /var/opt/gitlab/backups/backup_information.yml
2024-12-24 03:26:48 +0000 -- Cleaning up /var/opt/gitlab/backups/db
2024-12-24 03:26:48 +0000 -- Cleaning up /var/opt/gitlab/backups/repositories
2024-12-24 03:26:48 +0000 -- Cleaning up /var/opt/gitlab/backups/uploads.tar.gz
2024-12-24 03:26:48 +0000 -- Cleaning up /var/opt/gitlab/backups/builds.tar.gz
2024-12-24 03:26:48 +0000 -- Cleaning up /var/opt/gitlab/backups/artifacts.tar.gz
2024-12-24 03:26:48 +0000 -- Cleaning up /var/opt/gitlab/backups/pages.tar.gz
2024-12-24 03:26:48 +0000 -- Cleaning up /var/opt/gitlab/backups/lfs.tar.gz
2024-12-24 03:26:48 +0000 -- Cleaning up /var/opt/gitlab/backups/terraform_state.tar.gz
2024-12-24 03:26:48 +0000 -- Cleaning up /var/opt/gitlab/backups/packages.tar.gz
2024-12-24 03:26:48 +0000 -- Deleting tar staging files ... done
2024-12-24 03:26:48 +0000 -- Deleting backups/tmp ... 
2024-12-24 03:26:48 +0000 -- Deleting backups/tmp ... done
2024-12-24 03:26:48 +0000 -- Warning: Your gitlab.rb and gitlab-secrets.json files contain sensitive data 
and are not included in this backup. You will need to restore these files manually.
2024-12-24 03:26:48 +0000 -- Restore task is done.

至此,GitLab数据迁移已完成,登录新的GitLab即可查看数据!

问题解决

超级管理员密码重置

如果root账户密码不正确,则需要重新设置,步骤如下:

# 首先进入gitlab容器内
docker exec -it gitlab /bin/bash
# 进入控制台(这步需要等待一会)
gitlab-rails console -e production
# 查询root用户(即id为1)
user=User.where(id:1).first
# 设置密码
user.password='123456789'
# 保存
user.save!
# 退出
exit

修改权限

如果启动时,报错各种权限问题,可以执行这个指令。

For a comprehensive list of configuration options please see the Omnibus GitLab readme
https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/README.mdIf this container fails to start due to permission problems try to fix it by executing:docker exec -it gitlab update-permissionsdocker restart gitlab

修改配置(暂未使用到)

vim /docker/gitlab/config/gitlab.rb

# gitlab访问地址
external_url 'http://192.168.2.110'
# ssh连接端口
gitlab_rails['gitlab_shell_ssh_port'] = 2222
# 时区
gitlab_rails['time_zone'] = 'Asia/Shanghai'

让配置生效

docker exec -it gitlab gitlab-ctl reconfigure

重启gitlab服务

docker exec -it gitlab gitlab-ctl restart

相关文章:

GitLab安装|备份数据|迁移数据及使用教程

作者: 宋发元 最后更新时间:2024-12-24 GitLab安装及使用教程 官方教程 https://docs.gitlab.com/ee/install/docker.html Docker安装GitLab 宿主机创建容器持久化目录卷 mkdir -p /docker/gitlab/{config,data,logs}拉取GitLab镜像 docker pull gi…...

嵌入式linux驱动框架 I2C系统驱动程序模型分析

引言:在嵌入式 Linux 系统中,I2C(Inter-Integrated Circuit)是一种常用的通信协议,用于连接低速设备(如传感器、显示器、存储器等)与主控制器。I2C 系统驱动程序模型通过层次化的设计&#xff0…...

深度学习实验十七 优化算法比较

目录 一、优化算法的实验设定 1.1 2D可视化实验(被优化函数为) 1.2 简单拟合实验 二、学习率调整 2.1 AdaGrad算法 2.2 RMSprop算法 三、梯度修正估计 3.1 动量法 3.2 Adam算法 四、被优化函数变为的2D可视化 五、不同优化器的3D可视化对比 …...

一个双非选手的秋招总结

个人bg介绍 25届双非本硕(非杭电深大,垫底双非),两段实习经历,本科没学过Java,有c语言和408基础;2023年10月份中途转语言,Java速成选手。 战绩总结:实习秋招面试总论次…...

如何提高永磁电动机的节电效果

在现代工业和家庭应用中,永磁电动机因其优越的性能和节能特性,逐渐成为主流选择。随着能源日益紧缺和环境问题的日益严重,寻求高效的电动机节能方案显得尤为重要。 一、永磁电动机的基本原理 永磁电动机的核心是永磁体,这些永磁…...

在一个服务器上抓取 Docker 镜像并在另一个服务器上运行

要在一个服务器上抓取 Docker 镜像并在另一个服务器上运行,您可以按照以下步骤进行操作: 1. 保存 Docker 镜像 在源服务器上,您可以使用 docker save 命令将 Docker 镜像保存为一个 tar 文件。例如,如果您的镜像名称是 face_det…...

开源轮子 - Logback 和 Slf4j

spring boot内置:Logback 文章目录 spring boot内置:Logback一:Logback强在哪?二:简单使用三:把 log4j 转成 logback四:日志门面SLF4J1:什么是SLF4J2:SLF4J 解决了什么痛…...

内部知识库的未来展望:技术融合与用户体验的双重升级

在当今数字化飞速发展的时代,企业内部知识库作为知识管理的关键载体,正站在变革的十字路口,即将迎来技术融合与用户体验双重升级的崭新时代,这一系列变化将深度重塑企业知识管理的格局。 一、技术融合:开启知识管理新…...

【Linux系列】Shell 命令:`echo ““ > img.sh`及其应用

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...

【RAG实战】语言模型基础

语言模型赋予了计算机理解和生成人类语言的能力。它结合了统计学原理和深度神经网络技术,通过对大量的样本数据进行复杂的概率分布分析来学习语言结构的内在模式和相关性。具体地,语言模型可根据上下文中已出现的词序列,使用概率推断来预测接…...

【MySQL】7.0 入门学习(七)——MySQL基本指令:帮助、清除输入、查询等

1.0 help ? 帮助指令,查询某个指令的解释、用法、说明等。详情参考博文: 【数据库】6.0 MySQL入门学习(六)——MySQL启动与停止、官方手册、文档查询 https://www.cnblogs.com/xiaofu007/p/10301005.html 2.0 在cmd命…...

我的 2024 年终总结

2024 年,我离开了待了两年的互联网公司,来到了一家聚焦教育机器人和激光切割机的公司,没错,是一家硬件公司,从未接触过的领域,但这还不是我今年最重要的里程碑事件 5 月份的时候,正式提出了离职…...

STM32CUBEMX+STM32H743ZIT6+IAP+UART在线升级初始化和代码解析

1、STM32H7带的ITCM,DTCM,AXI SRAM,SRAM1,SRAM2,SRAM3,SRAM4和备份SRAM五块。 其中, ①TCM区包括ITCM和DTCM,这两个是直连CPU的。 速率与CPU一致,最高能到480MHz。 DTCM地…...

半连接转内连接 | OceanBase SQL 查询改写

查询优化器是关系型数据库系统的核心模块,是数据库内核开发的重点和难点,也是衡量整个数据库系统成熟度的“试金石”。为了帮助大家更好地理解 OceanBase 查询优化器,我们撰写了查询改写系列文章,带大家更好地掌握查询改写的精髓&…...

Git使用经历

目录 1、先创建文件夹 2、仓库初始化 3、配置gitee用户名和密码 4、克隆指定仓库的中指定分支到本地仓库 5、查看当前所在分支、切换分支 6、查看状态,判断是否有修改 7、把更新的内容添加到缓存区 8、把缓存区的数据提交 9、把数据推送到远程仓库 10、把…...

永磁同步电机控制算法-自适应带宽LADRC转速控制器

一、原理介绍 设计了自适应带宽 LADRC 控制方法,继承了 LADRC 优点的同时,加入自适应带宽控制,提出运用 Softsign 函数设计带宽自适应函数,根据电机转速自动调节控制带宽,解决了永磁同步电机在复杂且多变的环境下受到…...

基于springboot+vue实现的博物馆游客预约系统 (源码+L文+ppt)4-127

摘 要 旅游行业的快速发展使得博物馆游客预约系统成为了一个必不可少的工具。基于Java的博物馆游客预约系统旨在提供高效、准确和便捷的适用博物馆游客预约服务。本文讲述了基于java语言开发,后台数据库选择MySQL进行数据的存储。该软件的主要功能是进行博物馆游客…...

LeetCode 1705.吃苹果的最大数目:贪心(优先队列) - 清晰题解

【LetMeFly】1705.吃苹果的最大数目:贪心(优先队列) - 清晰题解 力扣题目链接:https://leetcode.cn/problems/maximum-number-of-eaten-apples/ 有一棵特殊的苹果树,一连 n 天,每天都可以长出若干个苹果。在第 i 天,…...

vim多窗格

vim打开文件分为三个阶段:buffer、window与tab buffer就是在同一个界面打开的文件window就是使用水平分割与垂直分割的窗口tab则是可以是上述两者的总集合 buffer :e filename在已打开文件的界面中再打开一个新文件,显示这个新文件,原文件被隐…...

ubuntu paddle ocr 部署bug问题解决

ubuntu paddle ocr 部署会出现异常报错。 尝试安装以下版本: pip install paddlepaddle2.5.2 -i https://pypi.tuna.tsinghua.edu.cn/simpl ​​​​​​ 助力快速掌握数据集的信息和使用方式。 数据可以如此美好!...

【Java学习笔记】Arrays类

Arrays 类 1. 导入包:import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序(自然排序和定制排序)Arrays.binarySearch()通过二分搜索法进行查找(前提:数组是…...

8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂

蛋白质结合剂(如抗体、抑制肽)在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上,高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术,但这类方法普遍面临资源消耗巨大、研发周期冗长…...

【C语言练习】080. 使用C语言实现简单的数据库操作

080. 使用C语言实现简单的数据库操作 080. 使用C语言实现简单的数据库操作使用原生APIODBC接口第三方库ORM框架文件模拟1. 安装SQLite2. 示例代码:使用SQLite创建数据库、表和插入数据3. 编译和运行4. 示例运行输出:5. 注意事项6. 总结080. 使用C语言实现简单的数据库操作 在…...

在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?

uni-app 中 Web-view 与 Vue 页面的通讯机制详解 一、Web-view 简介 Web-view 是 uni-app 提供的一个重要组件,用于在原生应用中加载 HTML 页面: 支持加载本地 HTML 文件支持加载远程 HTML 页面实现 Web 与原生的双向通讯可用于嵌入第三方网页或 H5 应…...

无人机侦测与反制技术的进展与应用

国家电网无人机侦测与反制技术的进展与应用 引言 随着无人机(无人驾驶飞行器,UAV)技术的快速发展,其在商业、娱乐和军事领域的广泛应用带来了新的安全挑战。特别是对于关键基础设施如电力系统,无人机的“黑飞”&…...

如何更改默认 Crontab 编辑器 ?

在 Linux 领域中,crontab 是您可能经常遇到的一个术语。这个实用程序在类 unix 操作系统上可用,用于调度在预定义时间和间隔自动执行的任务。这对管理员和高级用户非常有益,允许他们自动执行各种系统任务。 编辑 Crontab 文件通常使用文本编…...

宇树科技,改名了!

提到国内具身智能和机器人领域的代表企业,那宇树科技(Unitree)必须名列其榜。 最近,宇树科技的一项新变动消息在业界引发了不少关注和讨论,即: 宇树向其合作伙伴发布了一封公司名称变更函称,因…...

高考志愿填报管理系统---开发介绍

高考志愿填报管理系统是一款专为教育机构、学校和教师设计的学生信息管理和志愿填报辅助平台。系统基于Django框架开发,采用现代化的Web技术,为教育工作者提供高效、安全、便捷的学生管理解决方案。 ## 📋 系统概述 ### 🎯 系统定…...

生产管理系统开发:专业软件开发公司的实践与思考

生产管理系统开发的关键点 在当前制造业智能化升级的转型背景下,生产管理系统开发正逐步成为企业优化生产流程的重要技术手段。不同行业、不同规模的企业在推进生产管理数字化转型过程中,面临的挑战存在显著差异。本文结合具体实践案例,分析…...

【Java基础】​​向上转型(Upcasting)和向下转型(Downcasting)

在面向对象编程中,转型(Casting) 是指改变对象的引用类型,主要涉及 继承关系 和 多态。 向上转型(Upcasting) ⬆️ 定义 将 子类对象 赋值给 父类引用(自动完成,无需强制转换&…...