问题:在将旧gitlab服务器上的数据备份迁移到新服务器后(参照:Gitlab数据备份、迁移、恢复),有部分页面访问包500错误。经验证新服务器在恢复备份数据前,页面均访问正常,问题出现在备份恢复上。
分析:在网上查找资料发现,这是由于db_key_base问题导致的。因为gitlab默认的备份机制,是不会备份gitlab.rb和gitlab-secrets.json文件的。在备份恢复过程有如下警告提示:
其中,gitlab.rb配置了gitlab的域名、邮件发送信息、白名单等相关信息,gitlab-secrets.json文件存储了gitlab的db secret信息。db_key_base问题正与gitlab-secrets.json文件有关。
解决办法:
方法一、在旧gitlab配置文件未删除的情况下,拷贝gitlab-secrets.json文件到新服务器替换,重启gitlab。
方法二、若旧gitlab配置已删除,可执行以下两组命令重置相关CI的所有密钥和token。
命令1:
#gitlab-rails console
#Ci::Runner.all.update_all(token_encrypted: nil)
执行完命令后,重启gitlab服务
命令2:
#gitlab-rails dbconsole
#gitlabhq_production=> UPDATE projects SET runners_token = null, runners_token_encrypted = null;
#gitlabhq_production=> UPDATE namespaces SET runners_token = null, runners_token_encrypted = null;
#gitlabhq_production=> UPDATE application_settings SET runners_registration_token_encrypted = null;
执行完命令后,重启gitlab服务
网友评论