前几天安装好了本地的Gitlab服务器,都没什么问题,可以直接打开。但是今天一通过 http//192.168.1.164:9090 来访问直接报了502错误。如下图:
502错误就是网关错误:
服务器正在作为一个网关或代理来完成客户访问所需网址的请求。 为了完成该请求,此服务器访问一个上游服务器, 但收到无效响应。
这通常并不意味着上游服务器已关闭(对网关 / 代理无响应), 而是上游服务器和网关 / 代理在交换数据的协议上不一致。 鉴于互联网协议是相当清楚的, 它往往意味着一个或这两个机器的编程都不正确或不完全。
一、查看官方文档
一开始想了好多的问题,查了一些资料,先查了官方文档得到如下答案。
Note that on a single-core server it may take up to a minute to restart Unicorn and Sidekiq. Your GitLab instance will give a 502 error until Unicorn is up again.
It is also possible to start, stop or restart individual components.
sudo gitlab-ctl restart sidekiq
Unicorn supports zero-downtime reloads. These can be triggered as follows:
sudo gitlab-ctl hup unicorn
Note that you cannot use a Unicorn reload to update the Ruby runtime.
其中这两条指令我试了,但是任然报502错误,有遇到的小伙伴可以先试试:
- sudo gitlab-ctl restart sidekiq
- sudo gitlab-ctl hup unicorn
二、会不会是权限不足
修改 /var/log/gitlab 的权限,首先查看里面的权限,如下:
使用 chmod -R 755 gitlab/ 将gitlab的权限修改:
修改以后在查看结果如下:
修改权限后我刷新了好久,发现还是不可以。仍然报502网关错误。只能继续找别的解决办法。
三、会不会是端口的问题
这里我解决了502的问题,但是改了好几次。一开始查的一些直说要我把 external_url 'http://localhost:8080' 后面的8080端口改了,我改为9090,但是后面还是不行,后面又看到一篇文章,终于可以完美解决。
首先 $ vim /etc/gitlab/gitlab.rb 修改gitlab.rb文件的内容。如下:
一开始我就改了 external_url 后面的内容,看到 unicorn['listen']与nicorn['port'] 都被注释掉了:
然后我把这两个注释的 "#" 去掉,改成如下:
external_url 'http://localhost:9090'
unicorn['listen'] = '127.0.0.1'
unicorn['port'] = 8008 尤其是这个参数,unicorn['port']为unicorn worker的工作端口,默认为8080,这里我的8080端口被占用的,所以这里我要修改为 8008 。
然后我重启gitlab,如下图:
$ gitlab-ctl reconfigure
$ gitlab-ctl restart
然后我就解决了502网关错误,通过Chrome输入 http//192.168.1.164:9090 可以直接访问,如下图:
OK,终于解决了Gitlab服务器报的502问题了。希望可以帮到遇到同样问题的小伙伴。