修复漏洞-gitlab升级(2)

修复漏洞-gitlab升级(2)
  接上一篇。。。
  升级完我就做了个快照,等领导有空试用下,然后我不忘提醒,升级十几个版本需要花费2天时间,而且升级过程中有些报错,不知道会不会影响使用。领导说直接装新版本,免得夜长梦多(一下子推翻我所有的努力)
  当时我领导想买一台按量付费的服务器B,然后在这个服务器B上装最新版gitlab,然后把原gitlab服务器上的所有东西一比一拷过去,最后用这台按量付费的服务器覆盖回原机器。
  先叫我梳理下原服务器A上有什么东西:除gitlab,还有nginx、jenkins及npm等发布环境,各种软链接,python脚本运行环境。。。等等。当时我装好gitlab后给他试用,他叫我研究怎么把以前提交历史原封不动拷过去(就是各种commit的提交记录),然后他去梳理旧gitlab要迁移的项目,我就去把环境一比一装到新服务器上。
  当时我觉得只要把大家伙jenkins拷过去,其他都不是什么大事,然后上周五发现把jenkins用到的目录拷过去,起不来。临下班他问我进度,我如实汇报,最后他灵机一动,给出一个非常省心省力又省钱的方案(果然大家都是水瓶座的~~正确的选择能事半功倍)
  克隆这台装有11.4.x 版本的gitlab的服务器C,把里面的gitlab卸载,然后重装最新版本的gitlab,将上面已经迁移好项目的gitlab服务器B的数据拷回到C,最后用C覆盖A服务器。我画个简图

   一开始他给的方案,在B做一个跟A一样的环境,我就是卡在服务器B的部署上,想想jenkins配置要搞 jdk、maven,还有配置上面的各种发布任务,挺烦的。时间就是金钱,他想出第三台服务器C,也算是解放我双手。

  首先说说以url方式,原封不动把提交历史导入(这玩意研究了我一晚上),用ssh导入会报错,要换成http方式。

   用 http 又一直报错:There is not a valid Git repository at this URL.  If your HTTP repository is not publicly accessible, verify your credentials

   首先搞清楚用这个服务器A的内网url的时候,我们要确保B服务器上是能够网络是通的。旧版本 11.4.x 的gitlab 有个ssh暴露端口配置和nginx配置

 gitlab_rails['gitlab_shell_ssh_port'] = xxx
 nginx['listen_port'] = xxx

  我当时傻傻地填这个ssh端口,其实是nginx端口

  其次,原服务器A和目的服务器B都要开启内网流量请求通过的配置。最后就是源 nginx监听端口需要修改为大于 1024 的端口(如果是80、443就不用改)

 

 

  最后讲下C服务器上的具体操作

1、卸载gitlab

gitlab-ctl stop
rpm -e gitlab-ce
ps aux | grep gitlab
kill -9 进程号       --- 第一行的进程号

删除gitlab文件目录(千万不要学网上的:find / -name gitlab|xargs rm -rf,我发现奇慢无比)

rm -rf  /opt/gitlab /var/log/gitlab /var/opt/gitlab /etc/gitlab /run/gitlab

说明:
/opt/gitlab/    # 主目录
/etc/gitlab/    # 放置配置文件
/var/opt/gitlab/   # 各个组件
/var/log/gitlab/    # 放置日志文件
/var/opt/gitlab/git-data/repositories    #数据库的地址  
/var/opt/gitlab/postgresql/data    #gitlab组和项目的地址
/etc/gitlab/gitlab.rb #gitlab配置文件

 gitlab.rb 配置文件就备份下吧~~~

 

2、安装新版本gitlab 

rpm -i gitlab-ce-16.2.3-ce.0.el7.x86_64.rpm
gitlab-ctl reconfigure
gitlab-ctl restart

 

3、在服务器B做gitlab数据备份,然后把备份文件恢复到C服务器

gitlab-rake gitlab:backup:create

默认会在   /var/opt/gitlab/backups/  创建一个 【xxxxx一堆序列码】.tar 的备份文件

 将这个备份文件   .tar  拷贝到 C服务器同等位置,然后进行数据恢复

gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq
gitlab-rake gitlab:backup:restore BACKUP=【xxxxx一堆序列码】
gitlab-ctl restart

参考:https://blog.csdn.net/bbj12345678/article/details/128318174

 

 

 

  
posted @ 2023-08-14 22:57  windysai  阅读(188)  评论(0编辑  收藏  举报