gitlab 迁移-安装-还原

文章目录

  • 一、备份原有Gitlab
    • 1、备份清单
    • 2、备份执行
  • 二、卸载删除原有Gitlab
    • 1、停止Gitlab
    • 2、卸载Gitlab
    • 3、查看Gitlab进程
    • 4、杀死进程
    • 5、删除所有包含Gitlab文件
  • 三、安装Gitlab
    • 1、添加镜像地址
    • 2、安装依赖
    • 3、安装防火墙
    • 4、下载安装Gitlab
    • 5、配置Gitlab
    • 6、启动并访问
  • 四、还原备份
    • 1、设置备份路径
    • 2、还原备份

一、备份原有Gitlab

1、备份清单

  • 配置文件

备份命令备份不会备份gitlab.rb,gitlab-secrets.json文件,需要单独备份

配置文件主要有:

/etc/gitlab/gitlab.rb

/etc/gitlab/gitlab-secrets.json

或备份整个/etc/gitlab目录也是可以的

  • 数据文件:

当前gitlab中所有工程项目文件。

2、备份执行

  • 创建备份

    [root@localhost ~]# gitlab-backup create
    #或者使用
    [root@localhost ~]# gitlab-rake gitlab:backup:create
    2023-03-15 23:01:47 -0400 -- Dumping database ... 
    Dumping PostgreSQL database gitlabhq_production ... [DONE]
    2023-03-15 23:01:51 -0400 -- done
    2023-03-15 23:01:51 -0400 -- Dumping repositories ..
    ...
    Creating backup archive: 1678935707_2023_03_15_14.9.5_gitlab_backup.tar ... done
    Uploading backup archive to remote storage  ... skipped
    Deleting tmp directories ... done
    done
    done
    done
    done
    done
    done
    done
    done
    done
    Deleting old backups ... skipping
    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.
    Backup task   is done.
  • 查看备份:备份文件的格式为:

[root@localhost ~]# ll /var/opt/gitlab/backups/
总用量 360
-rw-------. 1 git git 368640 315 23:01 1678935707_2023_03_15_14.9.5_gitlab_backup.tar

二、卸载删除原有Gitlab

1、停止Gitlab

gitlab-ctl stop

2、卸载Gitlab

rpm -e gitlab-ce

3、查看Gitlab进程

ps aux | grep gitlab

4、杀死进程

kill -9 18777 #(18777 是第一个进程的pid号,根据显示情况输入)
# 有时候kill掉后,又出新的进程,可以使用
systemctl stop gitlab-runsvdir
# 然后查看进程后,再kill 第一个进程pid号
ps -ef | grep gitlab
#杀掉后,在ps aux | grep gitlab确认一遍,还有没有gitlab的进程
#如果还有进程请用以下命令杀死所有进程:
ps -ef | grep gitlab | xargs kill -s 9

5、删除所有包含Gitlab文件

find / -name gitlab | xargs rm -rf

删除的过程中有时候遇到权限不够的情况,可以按如下处理:

$ find / -name gitlab
find: ‘/run/user/1000/gvfs’: 权限不够
$ rm -rf /run/user/1000/gvfs
rm: 无法删除"/run/user/1000/gvfs": 是一个目录
$ umount -rf /run/user/1000/gvfs
rm -rf /run/user/1000/gvfs
$ find / -name gitlab|xargs rm -rf

三、安装Gitlab

1、添加镜像地址

添加镜像地址的目的是为了提高国内用户软件下载的速度,编辑(新建)文件gitlab-ce.repo,指令:

vi /etc/yum.repos.d/gitlab-ce.repo 

输入:

[gitlab-ce]
name=gitlab-ce
# 清华大学的镜像源
baseurl=http://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7
repo_gpgcheck=0
gpgcheck=0
enabled=1
gpgkey=https://packages.gitlab.com/gpg.key

2、安装依赖

依次输入以下指令

# 安装和配置openssh
sudo yum install curl policycoreutils-python openssh-server openssh-clients
sudo systemctl enable sshd
sudo systemctl start sshd
# 安装和配置邮件服务
sudo yum install postfix
sudo systemctl enable postfix
sudo systemctl start postfix

注意 如果无法启动postfix,可以尝试以下操作:

输入以下指令编辑main.cf文件:

vim /etc/postfix/main.cf

找到如下内容并进行如下修改:

inet_protocols = ipv4
inet_interfaces = all

3、安装防火墙

需要开启防火墙的,执行以下操作

# 安装和配置防火墙
sudo yum install firewalld
sudo systemctl start firewalld
sudo firewall-cmd --add-service=http --permanent
sudo firewall-cmd --reload

4、下载安装Gitlab

  • 安装最新版

    yum install gitlab-ce
    
  • 安装指定版:GitLab10.0.0下载:【如果要还原,一定要安装与备份的Gitlab版本一致的Gitlab】

    curl -LJO https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-10.0.0-ce.0.el7.x86_64.rpm
    

    安装:

    rpm -i gitlab-ce-10.0.0-ce.0.el7.x86_64.rpm
    

5、配置Gitlab

运行以下指令,类似于初始化操作:

sudo gitlab-ctl reconfigure

[可选操作] 配置防火墙,放行端口(8091为例):

sudo firewall-cmd --permanent --zone=public --add-port=8091/tcp
sudo firewall-cmd --add-service=http --permanent
sudo firewall-cmd --reload

[可选操作] 关闭防火墙

# 查看防火墙状态
firewall-cmd --state
# 关闭防火墙
systemctl stop firewalld.service
# 关闭防火墙自启动
systemctl disable firewalld.service 

vim的搜索指令提示:

打开文件后,在命令模式,就是按下ESC后的模式,输入以下内容,点击进行搜索,按下N搜索下一个,按下Shift+N搜索前一个:

#"/"后面添加需要搜索的内容
/external_url

更改GitLab端口,编辑文件gitlab.rb

vim /etc/gitlab/gitlab.rb

修改以下内容(IP以 47.110.230.147 为例):

external_url 'http://47.110.230.147:8091'
nginx['listen_port'] = 8091
nginx['listen_https'] = false

更改nigx端口,编辑文件gitlab-http.conf:

vim /var/opt/gitlab/nginx/conf/gitlab-http.conf

查找如下内容并修改:

server {
listen *:8091;
server_name 47.110.230.147;
...
if ($http_host = "") {set $http_host_with_default "47.110.230.147:8091";
}
}

保存修改,执行以下指令

gitlab-ctl reconfigure

6、启动并访问

启动GitLab:

gitlab-ctl restart

四、还原备份

1、设置备份路径

根据/etc/gitlab/gitlab.rb 配置文件中backups配置的路径,将备份文件放在相应的目录下,以备下一步骤进行还原,找到相应文件。

原有备份过程中,/etc/gitlab整个文件夹进行备份,在还原之前需要将之前备份的当前文件夹进行手动还原后执行,还原命令。

2、还原备份

进行

gitlab-rake gitlab:backup:restore BACKUP=/var/opt/gitlab/backups/xxxx_yyyy_MM_dd_version

还原后可直接通过页面人工确认是否成功,数据是否有遗漏。如果还原过程有错误,可执行以下命令检验

gitlab-rake gitlab:check SANITIZE=true

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

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

相关文章

Linux基本指令(2.0)

周边知识: 1.Linux中, 一切皆文件 构建大文件 输入如下shell命令 i1; while [ $i -le 10000]; do echo "hello Linux $i"; let i; done 此时大文件已经创建在big.txt 此时我们发现cat查看无法查看开始内容 我们使用more 当占满一屏之后就不…

Unity-Shader - 2DSprite描边效果

实现一个简单的2D精灵图描边效果,效果如下 实现思路: 可以通过判断该像素周围是否有透明度为 0的值,如果有,则说明该像素位于边缘。 所以我们需要打开alpha blend,即: Blend SrcAlpha OneMinusSrcAlpha&am…

单实例应用程序

2023年12月6日,周三凌晨 什么是单实例应用程序 单实例应用程序可以确保在同一时间只有一个应用程序实例在运行。 通常情况下,当用户尝试再次启动一个已经启动过的应用程序时,操作系统会打开一个新的实例。但有些情况下,我们可能…

js中的栈(stack)和堆(heap)

什么是堆什么是栈? 程序运行时候,需要内存空间存放数据。系统划分出的两种内存空间就叫做stack(栈)和heap(堆)。 栈(stack):由操作系统自动分配内存空间,自…

透明度值和注意点

透明度 透明度分为256阶(0-255),计算机上用16进制表示为(00-ff)。透明就是0阶,不透明就是255阶,如果50%透明就是127阶(256的一半当然是128,但因为是从0开始,所以实际上是…

react项目中使用video标签设置自动播放并未及时播放解决

react项目中使用video标签设置autoplay,但是视频不会直接播放,会加载一段时间后才会自动播放。 解决: 手动调用play方法 const videoRef useRef();useEffect(() > { if(videoRef?.current){if(videoRef?.current.paused){videoRef?.current.pla…

leetcode:1422. 分割字符串的最大得分(python3解法)

难度:简单 给你一个由若干 0 和 1 组成的字符串 s ,请你计算并返回将该字符串分割成两个 非空 子字符串(即 左 子字符串和 右 子字符串)所能获得的最大得分。 「分割字符串的得分」为 左 子字符串中 0 的数量加上 右 子字符串中 1…

Android 12.0 Folder文件夹全屏后文件夹图标列表居中时拖拽app到桌面的优化

1.概述 在12.0的系统rom产品开发中,在Launcher3中在目前的产品需求开发中,对于Launcher3中的文件夹Folder的布局UI 进行了定制化的需求要求把Folder修改为全屏,然后在中间显示文件夹图标的列表,这时候如果Folder是全屏的话,如果拖拽文件夹列表中的app图标,只有拖拽 到屏…

html复习

html form表单作用是收集数据提交 input框体控件不在form不适用于表单提交 可编辑性:contenteditable 提示值消失:placeholder,value是初始数据 块标签:单独占有一个空间,独占一行,标签遵循从上到下排列。table、d…

UEC++ 探索虚幻5笔记(捡金币案例) day12

吃金币案例 创建金币逻辑 之前的MyActor_One.cpp,直接添加几个资源拿着就用 //静态网格UPROPERTY(VisibleAnywhere, BlueprintReadOnly)class UStaticMeshComponent* StaticMesh;//球形碰撞体UPROPERTY(VisibleAnywhere, BlueprintReadWrite)class USphereCompone…

【Linux知识点汇总】04 Linux软件包管理器RPM常用命令

RPM(Red Hat Package Manager)是一种用于在基于Red Hat的Linux发行版中安装、卸载、更新和管理软件包的工具 查看和显示命令 说明命令查看已安装的rpm包rpm -qa查询某个rpm包rpm -q pkg_name查看已安装rpm包提供的配置⽂件rpm -qc pkg_name查看⼀个包安…

【水】pytorch:torch.reshape和torch.Tensor.view的区别

【水】pytorch:torch.reshape和torch.Tensor.view的区别 注:本篇仅为学习笔记,请谨慎参考,如有错误请评论指出。 参考:Pytorch: view()和reshape()的区别?他们与continues()的关系是什么? 两者…

Flink流批一体计算(23):Flink SQL之多流kafka写入多个mysql sink

目录 1. 准备工作 生成数据 创建数据表 2. 创建数据表 创建数据源表 创建数据目标表 3. 计算 WITH子句 1. 准备工作 生成数据 source kafka json 数据格式 : topic case_kafka_mysql: {"ts": "20201011","id"…

JSON 语法详解:轻松掌握数据结构(上)

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…

postgresql-effective_cache_size参数详解

在 PostgreSQL 中,effective_cache_size 是一个配置参数,用于告诉查询规划器关于系统中可用缓存的估计信息。这个参数并不表示实际的内存量,而是用于告诉 PostgreSQL 查询规划器系统中可用的磁盘缓存和操作系统级别的文件系统缓存的大小。它用…

Lambda表达式用法汇总

Lambda表达式用法汇总 java8 中引入的 Lambda 表达式真的是个好东西,掌握之后,写代码更简洁了,码字效率也提升了不少,这里咱 们一起来看看 Lambada 表达式常见的写法,加深理解。 1、有参无返回值函数式接口 8 种写法…

【代码随想录】算法训练计划39

dp 1、62. 不同路径 题目: 求路径方案多少个 思路: 这道题就有点dp了哈 func uniquePaths(m int, n int) int {//dp,写过,代表的是多少种// 初始化dp : make([][]int, m)for i : range dp {dp[i] make([]int, n)dp[i][0] 1 // 代表到…

用友NC Cloud FileParserServlet反序列化RCE漏洞复现

0x01 产品简介 用友 NC Cloud 是一种商业级的企业资源规划云平台,为企业提供全面的管理解决方案,包括财务管理、采购管理、销售管理、人力资源管理等功能,实现企业的数字化转型和业务流程优化。 0x02 漏洞概述 用友 NC Cloud FileParserServlet接口存在反序列化代码执行漏…

response应用

文章目录 [TOC](文章目录) response说明一、response文件下载二、待补充。。。 response说明 response是指HttpServletResponse,该响应有很多的应用,比如像浏览器输出消息,下载文件,实现验证码等。 一、response文件下载 1.创建一个javaw…

springboot整合swagger

1)简介: 作为后端开放人员,最烦的事就是自己写接口文档和别人没有写接口文档,不管是前端还是后端开发,多多少少都会被接口文档所折磨,前端会抱怨后端没有及时更新接口文档,而后端又会觉得编写接…