将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拉取或者同步项目。

相关推荐
wan_da_ren3 小时前
Windows 环境下使用 Go Modules 拉取带外层 Basic Auth 的私有 GitLab 仓库 — 完整解决方案
windows·golang·gitlab
llc的足迹3 小时前
docker 中 gitlab 和 gitlab runner 离线安装及配置
docker·容器·gitlab
一念一花一世界21 小时前
CI/CD工具选型:GitLab CI与Arbess全面对比指南
ci/cd·gitlab·jenkins·cicd·arbess
张童瑶1 天前
Gitlab 搭建本地私有仓库
gitlab
HIT_Weston1 天前
51、【Ubuntu】【Gitlab】拉出内网 Web 服务:http.server 单/多线程分析(三)
ubuntu·http·gitlab
LSL666_1 天前
16 gitlab
gitlab
自己的九又四分之三站台1 天前
GitLab vs Gitea 全面对比:企业级 DevOps 还是轻量级私有仓库?
ci/cd·gitlab·devops·gitea
地球没有花1 天前
gitlab cicd 部署阿里云k8s
阿里云·ci/cd·kubernetes·gitlab
java_logo1 天前
GITLAB Docker 容器化部署指南
linux·运维·数据库·docker·容器·eureka·gitlab
成为你的宁宁1 天前
【Jenkins+GitLab 自动化构建部署实战教程:环境介绍、服务部署、密钥配置、项目推送与自动编译打包全流程详解】
自动化·gitlab·jenkins