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

news2024/12/25 17:18:13

作者: 宋发元

最后更新时间: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 unicorn
 gitlab-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-installations

Before 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)? yes

2024-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.md
 
If this container fails to start due to permission problems try to fix it by executing:
 
  docker exec -it gitlab update-permissions
  docker 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

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

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

相关文章

JavaWeb Servlet的反射优化、Dispatcher优化、视图(重定向)优化、方法参数值获取优化

目录 1. 背景2. 实现2.1 pom.xml2.2 FruitController.java2.3 DispatcherServlet.java2.4 applicationContext.xml 3. 测试 1. 背景 前面我们做了Servlet的一个案例。但是存在很多问题,现在我们要做优化,优化的步骤如下: 每个Fruit请求都需…

selenium执行js

JS知识 获取元素 document.getElement 移除属性:removeAttribute("xx") 窗口移动:window.scrollTo(0, document.body.scrollHeight)方法 drivier.execute_script(js)场景: 日期选择框,不能输入,只能设置…

《信管通低代码信息管理系统开发平台》Linux环境安装说明

1 简介 信管通低代码信息管理系统应用平台提供多环境软件产品开发服务,包括单机、局域网和互联网。我们专注于适用国产硬件和操作系统应用软件开发应用。为事业单位和企业提供行业软件定制开发,满足其独特需求。无论是简单的应用还是复杂的系统&#xff…

static 和const的作用面试常问

点击上方"蓝字"关注我们 01、static 关键字 >>> 1. 局部变量 作用:将变量的生命周期延续到程序的整个运行期间,而不仅仅是它所在的函数调用期间。 void func() {static int count = 0; // 只会初始化一次 count++; printf("%d\n", count)…

VS2022 中的 /MT /MTd /MD /MDd 选项

我们有时编译时,需要配置这个 运行库,指定C/C++运行时库的链接方式。 如下图 那么这些选项的含义是什么? /MT:静态链接多线程库 /MT选项代表“Multi-threaded Static”,即多线程静态库。选择此选项时,编译器会从运行时库中选择多线程静态连接库来解释程序中的代码,…

掌握 Ansys ACP 中的参考方向:简化复杂的复合材料设计

概括 在复合材料分析领域,精度至关重要,尤其是在定义纤维方向和铺层时。Ansys ACP(Ansys Composite PrepPost)提供了强大的工具来建立参考方向,这是实现精确结构模拟的关键步骤。在本博客中,我们将揭开在 …

金仓数据库安装-Kingbase v9-centos

在很多年前有个项目用的金仓数据库,上线稳定后就没在这个项目了,只有公司的开发环境还在维护,已经好多年没有安装过了,重温一下金仓数据库安装,体验一下最新版本,也做一个新版本的试验环境; 一、…

什么是 DevOps 自动化?

DevOps 自动化是一种现代软件开发方法,它使用工具和流程来自动化任务并简化工作流程。它将开发人员、IT 运营和安全团队聚集在一起,帮助他们有效协作并交付可靠的软件。借助 DevOps 自动化,组织能够处理重复性任务、优化流程并更快地将应用程…

Windows中运行Linux(WSL)

Windows Subsystem for Linux(WSL)是一个在Windows 10和更高版本上运行Linux二进制可执行文件(ELF格式)的兼容层。它允许你在Windows上直接运行Linux环境,包括大多数命令行工具、实用程序和应用程序,无需修…

【Qt】对象树(生命周期管理)和字符集(cout打印乱码问题)

1.对象树 对象树统一管理窗口内部控件的生命周期,本质是一颗多叉树。 new对象会加入到对象树中,窗口关闭/释放时统一销毁,不需要手动delete。 如果在栈上定义label对象,生命周期随构造函数,无法正常显示控件。 1.1演…

Vue3项目中引入TailwindCSS(图文详情)

Vue3项目中引入TailwindCSS(图文详细) Tailwind CSS 是一个实用工具优先的 CSS 框架,提供丰富的低级类(如 text-center、bg-blue-500),允许开发者通过组合这些类快速构建自定义设计,而无需编写…

web-密码安全口令

目录 一、密码安全概述 二、密码安全现状 三、破解方式 四、暴力破解 五、字典破解 六、密码字典 学习心得: 一、密码安全概述 现在很多地方都是以用户名(账号)和口令(密码)作为鉴权的方式,口令&am…

YOLO11改进-模块-引入空间自适应特征调制网络SAFMN(Spatial Adaptive Feature Modulation Network)

尽管基于深度学习的解决方案在图像超分辨率(SR)中取得了令人瞩目的重建性能,但这些模型通常较大且架构复杂,使其与许多具有计算和内存限制的低功耗设备不兼容。为了克服这些挑战,我们提出了一种用于高效 SR 设计的空间…

神经网络-LeNet

LeNet在1990年被提出,是一系列网络的统称,包括了LeNet1~LeNet5,对于神经网络的学习者来说,大家对下面这个图一定很熟悉,该图是对LeNet的简化展示。 在LeNet中已经提出了卷积层、Pooling层等概念,只是但是由…

VMD-SSA-BiLSTM、VMD-BiLSTM、BiLSTM时间序列预测对比

VMD-SSA-BiLSTM、VMD-BiLSTM、BiLSTM时间序列预测对比 目录 VMD-SSA-BiLSTM、VMD-BiLSTM、BiLSTM时间序列预测对比预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.MATLAB实现VMD-SSA-BiLSTM、VMD-BiLSTM、BiLSTM时间序列预测对比; 2.单变量时间序列预测 就是先vmd把变…

联通光猫怎么自己改桥接模式?

环境: 联通光猫 ZXHN F677V9 硬件版本号 V9.0 软件版本号 V9.0.0P1T3 问题描述: 联通光猫怎么自己改桥接模式 家里用的是ZXHN F677V9 光猫,最近又搞了个软路由,想改桥接模式 解决方案: 1.拿到最新超级密码&…

JSON 系列之1:将 JSON 数据存储在 Oracle 数据库中

本文为Oracle数据库JSON学习系列的第一篇,讲述如何将JSON文档存储到数据库中,包括了版本为19c和23ai的情形。 19c中的JSON 先来看一下数据库版本为19c时的情形。 创建表colortab,其中color列的长度设为4000。若color的长度需要设为32767&a…

【从零开始入门unity游戏开发之——unity篇02】unity6基础入门——软件下载安装、Unity Hub配置、安装unity编辑器、许可证管理

文章目录 一、软件下载安装1、Unity官网2、下载Unity Hub 二、修改Unity Hub配置1、设置Unity Hub中文语言2、修改默认存储目录 三、安装unity编辑器1、点击安装编辑器2、版本选择3、关于版本号4、安装模块选择5、等待下载完成自动安装即可6、追加unity和模块 四、许可证管理专…

SAP从入门到放弃系列之委外分包(Subcontracting)-Part1

以前写过一篇委外相关的文章,没有很详细的写。只是一个概念的概述ERP实施-委外业务-委外采购业务 最近看PA教材,遇到了这块内容,就再详细的整理一下SAP关于委外的理论知识。 文章目录 概述分包和物料需求计划 (MRP)委外分包订单分包委外业务…

vue前端报错 ERROR Error The project seems to require yarn but it‘s not installed

当我们项目启动的时候会报错 报错的信息:ERROR Error: The project seems to require yarn but it’s not installed. 解决的办法首先找到右边的文件夹,yarnlock 找打这个文件删除以后进行全局安装 npm install -g yarn