在企业开发中我们有时会需要搭建自己的gitlab服务器,而通常我们的服务器同时是web服务器,使用了nginx作为静态服务器来进行反向代理,这种情况下,在服务器上安装gitlab-ce版后,由于gitlab-ce自带nginx,而且自带的nginx会把80端口占用,导致我们自己的nginx服务失效,本文我对过程进行了详细的列出以供参考;
nginx 的源码安装可以参考这篇文章
https://blog.csdn.net/wireless911/article/details/83994953
gitlab-ce版本的安装可以参考这篇文章进行安装
https://www.cnblogs.com/restran/p/4063880.html
nginx反向代理gitlab服务器
- 找到gitlab的配置文件,配置文件的路径:/etc/gitlab/gitlab.rb
vim /etc/gitlab/gitlab.rb
- 由于nginx端口冲突,所以修改gitlab下nginx的监听端口为8040(这里的监听端口可以设置成任意你想要的端口,当然不能使用80 或者已经被占用的端口)
nginx['listen_port'] = 8040
- 修改外部访问gitlab的external_url地址(这里的地址设置为服务器的地址即可)
external_url 'http;//192.168.9.110'
- 配置外部Nginx服务器(配置文件位置/etc/nginx/nginx.conf)
upstream gitlab{
# 7.x 版本在此位置
# server unix:/var/opt/gitlab/gitlab-rails/tmp/sockets/gitlab.socket;
# 8.0 位置
server unix://var/opt/gitlab/gitlab-rails/sockets/gitlab.socket;
}
server{
listen 80;
# 此域名是提供给最终用户的访问地址 (即你经过域名解析过的地址,例:gitlab.example.com)
server_name 域名;
location / {
# 这个大小的设置非常重要,如果 git 版本库里面有大文件,设置的太小,文件push 会失败,根据情况调整
client_max_body_size 50m;
proxy_redirect off;
#以下确保 gitlab中项目的 url 是域名而不是 http://git,不可缺少
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# 反向代理到 gitlab 内置的 nginx
proxy_pass http://gitlab;
index index.html index.htm;
}
}
- 重启外部nginx,重启gitlab服务
sudo /usr/local/nginx/sbin/nginx -s reload
sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart
重启完成后就可以正常访问了,完成了nginx反向代理gitlab服务,如果无法访问,接着执行第六步;
- 权限配置
# 访问会报502.可能是nginx用户无法访问gitlab用户的socket文件,在这里将gitlab文件权限修改掉就好了;
sudo chmod 777 -R /var/opt/gitlab/gitlab-rails