前言:由于单位领导的指示,准备将开发代码从SVN迁移到Gitlab上进行管控,我当时也不是知道为什么就下了12.3.9这版本,由于监管限制只能在内网环境下,操作系统为红帽7.6进行部署。使用一段时间要求升级到最新版本(头疼),据了解与我单位某些互联网公司还在用Gitlab个位数版本,也不影响人家开发,多说无益,说干就干:
步骤1:在国内某高校镜像网站下载好升级路线所需的镜像包。12.10.14=> 13.0.14 => 13.1.11 => 13.8.8 => 13.12.15 => 14.0.12 =>14.3.6 => 14.9.5 => 14.10.5 => 15.0.5 => 15.4.6 => 15.8.2;这些不到15G,下了一天(单位的网给限速了),然后准备现在本地电脑试一试,毕竟服务器上几十G的代码崩了,影响也挺大的。本地电脑是一台thinkbook,自己加了固态三星980PRO和内存24G配置比服务器还高。
步骤2:将镜像文件通过ftp传到服务器上,开始停服务(这里需要注意,只需停部分服务,我觉得不手动停也可以,升级时会自动停,也就是暂停对外部使用)
步骤3:升级也就一条命令:rpm -Uvh +镜像包名
步骤4:安装完成请手动执行gitlab-ctl reconfigure、 restart,如果出现500或502可能是数据升级未完成可gitlab-rakedb:migrate:status查看,均为up就可以进行下一版本升级了,若有down情况,请手动执行数据迁移gitlab-rakedb:migrate,然后再执行gitlab-ctl reconfigure、 restart。
意外情况:事情往往并不会想你想象的进展的那么顺利。
坑1:在从12.10.14升级到13.0.14,就出现了postgresql未能正常升级,无法启动,于是就手欠手动升级了数据库,这就彻底Gameover了,查看日志发现初始化失败,初始化使用的版本低于现在数据库版本,后来想明白了,可能后台数据升级未完成的原因,当时等一会,重新reconfigure可能就好了。
解决方法:很粗暴的卸载重装,rpm -e gitlab-ce 由于在本机演练过一次,这种情况也遇见了,但不是在这个阶段,卸载之后并不会清除配置数据,只需再 rpm -ivh 包名(12.10.14),正常安装时也会检查和升级数据,没发现有任何问题。
坑2:升级时使用gitlab-ctl stop命令停止服务,13版本之前升级可能没有问题,在13.12.15升级到14.0.12又是数据库无法启动,解决方法如上述,后来上网了解只需停sidekiq 和nginx,应为升级时需要部分服务启动状态,后来我又试了一下,不停任何服务直接升级,发现他会自己关闭这些服务,看来是多余了
还有个特殊情况:升级后使用时出现了登录后白屏,页面一直加载无法展开,看日志也没看出来什么,不用怀疑是浏览器兼容问题,升级到Chrome 版本83以上,解决