Gitlab线上迁移线下(踩坑纪实)

一、迁移准备

当我们在做gitlab服务器迁移的时候需要两台服务器中的gitlab相同,如果不同则不让回复git备份。这样我们就要安装指定版本的gitlab。gitlab又分为CE(社区版)和EE(企业版)。别下错了,当初试了好几次,结果都失败,就是软件版本不对。系统无所谓,centos和ubuntu都可以。

查看当前Gitlab版本

cat /opt/gitlab/embedded/service/gitlab-rails/VERSION

以下是centos7下的gitlabEE和CE的下载地址。

centos 7系统的下载地址:

  Index of /gitlab-ce/yum/el7/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirrorhttps://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7

  Index of /gitlab-ee/yum/el7/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirrorhttps://mirrors.tuna.tsinghua.edu.cn/gitlab-ee/yum/el7二、安装系统后前提准备。

如果你是进行迁移,最好是手动下载对应的版本,线下安装。下载后的rpm包放在服务器上随便一个目录下。我是var/cache/yum/x86_64/7/base/packages目录下,你们随意。

然后进入目录下,安装。

rpm -i gitlab-ee-10.2.1-ee.0.el7.x86_64.rpm

安装完后,你直接访问是打不开的,应为还没有配置。需要对配置文件进行修改

修改成你的内网ip地址,后面可以加端口。注意这里设置的端口不能被占用,默认是8080端口,如果8080已经使用,请自定义其它端口,并在防火墙设置开放相对应得端口。

vi /etc/gitlab/gitlab.rb   初学者可以用shell直接打开文档编辑,然后保存就行。

external_url 'http://192.168.2.36:888'

开放端口就执行下面的 这一步很重要,需要重启防火墙服务,不然访问不了

sudo firewall-cmd --add-port=8080/tcp --permanent  (8080是端口号)
sudo firewall-cmd --reload   

重置并启动GitLab(修改任何配置文件后,都需要gitlab-ctl reconfigure)

gitlab-ctl reconfigure
gitlab-ctl restart

三、旧服务器备份数据

找到备份路径,默认都是在/var/opt/gitlab/backups

cat /etc/gitlab/gitlab.rb |grep backup_path

 

执行备份

备份时,请不要做任何其他操作,上传代码等,等待完成即可。

gitlab-rake gitlab:backup:create

上面的带编号的就是你的全部备份文件,下载下来。上传到你要恢复的服务器内。

恢复gitlab 注意:通过备份文件恢复gitlab必须保证两台主机的gitlab版本一致,否则会提示版本不匹配。

gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq

如果是台空主机,没有任何操作,理论上不停这两个服务也可以。停这两个服务是为了保证数据一致性。如果你没修改过默认备份目录的话,将老服务器/var/opt/gitlab/backups目录下的备份文件拷贝到新服务器上的/var/opt/gitlab/backups

600权限是无权恢复的。 --- 这里改成了777 备份文件的权限需要改成777

执行下面的命令进行恢复:后面再输入两次yes就完成恢复了。

gitlab-rake gitlab:backup:restore BACKUP=1655706301_2022_06_20_10.6.4-ee
#centos7 是这个命令,gitlab前面的复制就行。

恢复完成后,启动刚刚的两个服务,或者重启所有服务,再打开浏览器进行访问,发现数据和之前的一致:

gitlab-ctl restart

四、测试

注意项一:

这个时候打开后就要用迁移之前的账号密码登录,这里有一个坑大家注意,你的服务器是部署在线下的,地址是私网地址,例192.168.1.2   而你的发布服务器是在阿里云上,例:11.11.11.11那么你要把本地的地址映射出去,本地是没有80端口的,修改一下端口192.168.1.2:81映射到11.11.11.11:81

这个时候你访问的外网地址http://11.11.11.11:81  就可以正常登录了。

注意项二:

git有2种链接方式,ssh和http方式

那么之前因为大家是旧环境。直接是以ssh,添加秘钥的方式访问的。

 这个时候,你迁移过来后,你克隆代码的时候会提示pssword错误,这个时候你就要找原因了,我再这个问题上百度各种搜,各种测试,甚至还怀疑到是系统的原因,用ubuntu的系统搭建了git还原。结果所有方式都没用。

 

 原因最后其实是git的链接方式其实是ssh方式。

那么你在本地只把访问端口映射出去是不够的。你还要把ssh22端口也映射出去。

192.168.1.2:22——11.11.11.11:22    这一个坑我踩了整整2天,如果是阿里云ECS应该是默认开放22端口,所以不会出现这种问题。线下就是坑。

映射出去后,你用原来的秘钥git本地服务器丝网地址192.168.1.2代码的时候成功了。

注意事项三:

你在本地是可以克隆代码了,但你既然映射到外网了,你肯定要以外网的方式拉取代码。发现还是会报错

 又要开始百度了,其实是本地DNS搞的鬼。

你如果是用ssh的链接方式,你之前是要在gitlab里面添加秘钥的,正常都是在用户目录下.ssh文件夹下。打开know-host文件,把有之前服务器地址的缓存直接删除。

 最后,还需要在你的git客户端运行gitbash命令

 

运行 ssh -T git@11.11.11.11  

*是你自己的映射出去服务器的公网地址。

确保生成known-host

到此,迁移就全部结束了。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值