将Gitlab迁移到内网Proxmox VE

在一台服役超过15年得高龄服务器上,运行了一套Gitlab 11.0,因为使用的人比较少,访问不频繁,未将其加入到高可用集群平台。但是最近以来,开发人员经常反馈Gitlab不能使用,通过仔细排查,发现故障的原因是物理服务器运行一段时间后就死机。为了解决这个麻烦,计划将Gitlab迁移到Proxmox VE,方便对其备份及故障快速恢复(虚拟机整体恢复)。

迁移的过程大致分成几步:导出源Gitlab数据、Proxmox VE创建虚拟机并安装好Centos 操作系统、Centos 上部署与原服务器相同版本的Gitlab(高版本导入备份数据时会失败)、复制原服务器Gitlab备份到目标Gitlab设定的备份目录、导入备份数据、启动Gitlab并远程登录验证、端口映射及Gitlab配置文件修改。

Gitlab 导出数据

登录源服务器,查看Gitlab配置文件"gitlab.rb"备份路径的设置,执行导出操做后,备份文件将在此目录生成,用指令" grep backup_path gitlab.rb |grep -v \#"搜索出备份路径为"/data/backups",如下图所示。

在未备份之前,目录"/data/backups"是空的。现在开始执行指令"gitlab-rake gitlab:backup:create"进行数据导出,如下图所示。

如果没有意外,执行完毕,将生成".tar"为后缀的压缩文件(如下图所示),无需将此文件解压,直接将此文件复制到目标系统Gitlab设定的备份目录即可。

目标服务器环境准备

在Proxmox VE上创建虚拟机,并分配相应的资源。接着在创建的虚拟机上安装Centos 7操作系统,设定好网络参数,使其可以访问外网,以方便用"yum"进行Gitlab的安装。

关闭Centos的"firewalld"服务(服务器在内网,无需使用主机防火墙),并将"selinux"的值由"enforce"设置成"disabled",减少干扰因素。手动执行指令"yum install https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-11.0.0-ce.0.el7.x86_64.rpm"进行在线安装,前边强调过,版本最好一致,如果有必要,等导入备份且运行正常后,再对Gitlab进行升级。

目标系统安装好Gitlab以后,最好与源系统的配置保持一致。那么,就直接从源站将配置文件"gitlab.rb"复制过来,替换到默认生成的配置文件"gitlab"。除此之外,还有一个源站的文件"gitlab-secrets.json"也要迁移到目标系统。

由于需要从外网进行SSH 获取Gitlab代码,因此这里将SSH端口设置成"22055"。对SSH相关的修改有两处,一处是"/etc/ssh/sshd_config",另一处则是Gitlab配置文件"gitlab.rb"。

  1. 修改SSHD服务端口为"22055"。用vi编辑器或者sed这类的工具,将默认端口由"22"替换成"22055"(如下图所示),保存后重启SSHD服务。
  1. 用编辑器或者sed工具,将"gitlab.rb"中ssh端口也修改成"22055",修改的位置大致在此文件的第351行(如下图所示),在vi编辑器中,可用关键字"/ssh_port"进行快速搜索。

准备妥当后,执行指令"gitlab-ctl reconfigur"对配置和运行环境进行检查,如果没有报错,就能保证Gitlab可以正常运行。

目标服务器导入备份数据

将源Gitlab的备份文件复制到目标系统备份目录"/data/backups",执行指令"gitlab-rake gitlab:backup:restore BACKUP=1702870559_2023_12_18_11.0.0"进行恢复。需要注意的是,"BUCKUP"的取值是从复制来的备份文件截取前半部分,即只取数字部分,如下图所示。

导入完毕,执行"gitlab-ctl start" 启动Gitlab服务。远端浏览器输入Gitlab所在系统的IP地址,输入用户名与密码,验证恢复数据的正确性和有效性,如下图所示。

SSH 内外网穿透

在边界设备安装软件Rinetd,Centos 7系统的话,直接"yum install rinetd"片刻就安装好。编辑文件"/etc/rinetd",新增文本行"142.87.62.195 22055 172.16.28.66 22055",保存修改,执行"/etc/init.d/rinetd start"启动服务。远程用ssh客户端以"22055"端口连接系统"142.87.62.195"验证配置的正确性和有效行。无误后,再远程用git拉取或者同步项目。

相关推荐
极小狐1 小时前
Ruby-SAML CVE-2024-45409 漏洞解决方案
gitlab·devsecops·devops·极狐gitlab·安全合规
向往风的男子17 小时前
【devops】devops-gitlab之部署与日常使用
运维·gitlab·devops
soaring012117 小时前
Gitlab实现多项目触发式自动CICD
pipeline·gitlab·triggers·access tokens
cn_newer1 天前
gitlab/极狐-离线包下载地址
gitlab·devops·极狐·离线包下载
Roc-xb2 天前
Centos7安装gitlab-ce(rpm安装方式)
centos·gitlab
慕羽★3 天前
Git常用指令整理【新手入门级】【by慕羽】
linux·git·ubuntu·gitlab·github·仓库·分布式协作
心之所想,行之将至3 天前
记录一下gitlab社区版的安装教程
linux·服务器·gitlab
极小狐3 天前
2024 年 GitLab Global DevSecOps 报告解读
gitlab·devsecops·devops·极狐gitlab·安全合规
极小狐3 天前
极狐GitLab DevSecOps 功能合集(七大安全功能)
安全·gitlab·devsecops·极狐gitlab·安全合规
iRayCheung3 天前
Gitlab pre-receive hooks适配java p3c-pmd和python pycodestyle
java·python·gitlab·pre-receive