HTTP 502: Whoops, GitLab is taking too much time to respond. | 少将全栈
  • 欢迎访问少将全栈,学会感恩,乐于付出,珍惜缘份,成就彼此、推荐使用最新版火狐浏览器和Chrome浏览器访问本网站。
  • 吐槽,投稿,删稿,交个朋友
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏少将全栈吧

HTTP 502: Whoops, GitLab is taking too much time to respond.

Linux admin 2年前 (2022-11-24) 1692次浏览 已收录 扫描二维码

gitlab突然报HTTP 502,解决方法如下:
先用gitlab-ctl tail查看日志,没找到相关线索,尝试如下:

gitlab-ctl reconfigure # 更新配置
gitlab-ctl restart # 重启应用
gitlab-ctl status # 查看服务状态

无效,原来以为是8080端口占用等常用的小问题,没想到发现了Kaiji僵尸病毒,cpu占用100%等问题。

通过搜索.img找到了这篇文章,断剑重铸?Kaiji僵尸网络正在重新构建 https://www.freebuf.com/articles/network/338696.html

概述如下:

捕获的Kaiji僵尸网络主要使用多种高危RCE漏洞(GitLab未授权访问漏洞(CVE-2021-22205)和Atlassian Confluence OGNL注入漏洞(CVE-2021-26084))利用作为初始攻击。一旦病毒入侵了服务器或物联网设备,Kaiji僵尸网络就可以在其团伙的指挥下发动DDoS攻击。

当前版本的Kaiji持久化模块非常强大,使用超过8种驻留手段进行持久化。Kaiji僵尸网络还会窃取本地SSH密钥,并进一步发起SSH爆破攻击以感染互联网上其他暴露的设备。

跟服务器的情况基本上一模一样,另外内网偶尔也会出现断网的情况(是不是在发起攻击?)。

检查了服务器上还莫名多了todesk远程软件(变肉鸡了)。

于是重装了gitlab

gitlab查看版本号的方法

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

 

打开linux系统终端,首先安装gitlab必须的ssh,以及在系统防火墙中打开HTTP、HTTPS和SSH访问。

sudo yum install -y curl policycoreutils-python openssh-server
sudo systemctl enable sshd
sudo systemctl start sshd
sudo firewall-cmd –permanent –add-service=http
sudo firewall-cmd –permanent –add-service=https
sudo firewall-cmd –permanent –add-port=80/tcp
sudo firewall-cmd –permanent –add-port=443/tcp
sudo systemctl reload firewalld

然后是安装发送邮件功能的postfix

sudo yum install postfix
sudo systemctl enable postfix
sudo systemctl start postfix

添加gitlab的包仓库(还原需要重装相同版本,不同版本这里找:https://packages.gitlab.com/gitlab/gitlab-ce)

安装gitlab(EXTERNAL_URL指的是你的gitlab访问地址,这里改为http://+你的linux系统ip

sudo EXTERNAL_URL="https://gitlab.example.com" yum install -y gitlab-ce
这边改成了:
sudo EXTERNAL_URL="http://192.168.1.2" yum install gitlab-ce-x.x.x-ce.0.el7.x86_64
yum安装最好加上EXTERNAL_URL,不加EXTERNAL_URL或者用rpm也需要我们手动进入配置文件中修改访问地址
sudo vim /etc/gitlab/gitlab.rb
# 修改文件中external_url 'http://你linux的ip'
并且我们还需要修改默认的gitlab clone地址,要不每次都得自己修改
sudo vim /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml
搜索Web server settings修改下面的host
重置并启动GitLab,执行以下命令
gitlab-ctl reconfigure
gitlab-ctl restart
用gitlab-ctl status查看服务状态,稍后访问看看是否正常。
正常访问后,开始gitlab恢复还原,注意gitlab版本。
备份恢复
GItlab只能还原到与备份文件相同的gitlab版本。
假设在上面gitlab备份之前创建了test项目,然后不小心误删了test项目,现在就进行gitlab恢复操作:
1、停止相关数据连接服务
gitlab-ctl stop unicorn
gitlab-ctl stop puma
gitlab-ctl stop sidekiq
查看gitlab状态
gitlab-ctl status
2、通过之前的备份文件进行恢复(默认的是/var/opt/gitlab/backups)
Gitlab的恢复操作会先将当前所有的数据清空,然后再根据备份数据进行恢复
gitlab-rake gitlab:backup:restore BACKUP=/var/opt/gitlab/backups/1659058311_2022_07_29_15.2.0
这边是
gitlab-rake gitlab:backup:restore BACKUP=/var/opt/gitlab/backups/xxx_2022_11_24_xxx
最后再次启动Gitlab
gitlab-ctl start
恢复命令完成后,可以check检查一下恢复情况
gitlab-rake gitlab:check SANITIZE=true
然后稍等一会(如果启动gitlab后,访问出现500,这是因为redis等程序还没完全启动,等一会儿访问就ok了),再次登录Gitlab,就会发现之前误删除的test项目已经恢复了!
另外:Gitlab迁移与恢复一样,但是要求两个GitLab版本号一致。

如果实在还是版本错误,没对上?无法还原,先卸载掉gitlab再安装对应版本。

停止gitlab
sudo gitlab-ctl stop
卸载gitlab(这块注意了,看看是gitlab-ce版本还是gitlab-ee版本,别写错误了)
sudo rpm -e gitlab-ce
查看gitlab进程
ps -ef|grep gitlab
  杀掉第一个守护进程(runsvdir -P /opt/gitlab/service log)
  kill -9 10283
  再次查看gitlab进程是否存在
删除gitlab文件,注意备份文件要转移到其他地方(最好U盘上,不挂载)或者改下名字,后面改回来。
因为备份文件里面也有带gitlab字符串,也会被删掉。
  find / -name *gitlab*|xargs rm -rf
  删除所有包含gitlab的文件及目录
  find / -name gitlab |xargs rm -rf
  删除gitlab-ctl uninstall时自动在root下备份的配置文件(ls /root/gitlab* 看看有没有,有也删除)
通过以上几步就可以彻底卸载gitlab
遇到这种事情还是停糟糕的,自动备份,异地备份少不了。
手动备份
可以手动执行如下命令进行手动备份,备份后文件如下:
gitlab-rake gitlab:backup:create
自动备份
编写备份脚本,结合crontab实施自动定时备份,比如每天2点备份一次
cd
cd bin/
vim gitlab_backup.sh
#!/bin/bash
/usr/bin/gitlab-rake gitlab:backup:create
 然后加入到crontab中
0 2 * * * /bin/bash /root/bin/gitlab_backup.sh > /dev/null 2>&1
异地备份
在脚本里面添加scp,配置上免密登陆后,可以通过脚本将备份文件上传到其他服务器或者用脚本定期备份到对象存储中。
最后的最后,本地可以正常访问,局域网怎么访问不了?
CentOS 7 防火墙设置及配置 https://www.whatled.com/post-8849.html
喜欢 (0)
[🍬谢谢你请我吃糖果🍬🍬~]
分享 (0)
关于作者:
少将,关注Web全栈开发、项目管理,持续不断的学习、努力成为一个更棒的开发,做最好的自己,让世界因你不同。