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

相关推荐
A ?Charis11 小时前
Gitlab-runner running on Kubernetes - hostAliases
容器·kubernetes·gitlab
秋说18 小时前
开源代码管理平台Gitlab如何本地化部署并实现公网环境远程访问私有仓库
gitlab·源代码管理
极小狐1 天前
驭码上新,AI Code Review、基于代码库的知识问答,让研发起飞
gitlab·devsecops·devops·极狐gitlab·安全合规
蚊子不吸吸1 天前
DevOps开发运维简述
linux·运维·ci/cd·oracle·kubernetes·gitlab·devops
花开莫与流年错_5 天前
GitLab代码仓管理安装配置使用
运维·服务器·git·gitlab·配置·代码仓
极小狐7 天前
如何打开/关闭 GitLab 的版本检查功能?
gitlab·devsecops·devops·极狐gitlab·安全合规
玉石俱焚ing8 天前
ubuntu20上部署gitlab并开启ipv6访问
运维·gitlab
謬熙8 天前
GitHub、Gitee、GitLab介绍
gitee·gitlab·github
云围9 天前
Soanrquber集成Gitlab 之 导入Gitlab项目
运维·ci/cd·gitlab·devops
云围9 天前
Soanrquber集成Gitlab 之 gitlab用户配置和身份验证
ci/cd·gitlab·github·devops