gitlab自帶的Nginx與原Nginx沖突的解決方案


gitlab

 

推薦方案2

 

默認情況下,gitlab使用自帶的Nginx,占用80端口,這樣就與系統原本安裝的Nginx沖突。導致其中一個nginx無法啟動

 

我的gitlab可以正常啟動,當再部署一個接口文檔的項目時,發現原nginx無法啟動,報錯如下,

[root@ACA83229 nginx]# service nginx restart
Stoping nginx... nginx: [error] open() "/usr/local/nginx/logs/nginx.pid" failed (2: No such file or directory)
 failed. Use force-quit
Terminating nginx...  done
Starting nginx... nginx (pid 25521 25520 25519 25518 25517 25516 25515) already running.

 

按照網上說的執行以下命令,並不能很好的解決問題。

/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

 

后來想到可能是gitlab的Nginx沖突導致的,並成功解決

 

方案一:通過修改GitLab端口解決沖突

  • vim /var/opt/gitlab/nginx/conf/gitlab-http.conf
upstream gitlab-workhorse {
  server unix:/var/opt/gitlab/gitlab-workhorse/socket;
}

server {
  listen *:80;  --修改端口


  server_name localhost;
  server_tokens off; ## Don't show the nginx version number, a security best practice
  ......
  ......
  只列舉了其中一部分
}

將其中的80改為其它端口即可,如我的是8022,執行gitlab-ctl restart 重啟gitlab等待網關恢復,重新訪問:http://ip:8022 即可

 

方案二:禁用gitlab自帶Nginx 並把 UNIX套接字 更改為 TCP端口

禁用捆綁的Nginx
vim /etc/gitlab/gitlab.rb

將
nginx['enable'] = true
修改為
nginx['enable'] = false
並去掉注釋 (前邊的#)

 

允許gitlab-workhorse監聽TCP(默認端口設置為8021),編輯/etc/gitlab/gitlab.rb:

gitlab_workhorse['listen_network'] = "tcp"
gitlab_workhorse['listen_addr'] = "127.0.0.1:8021"  //這個端口號一會和Nginx代理的端口號要一致

 

運行 sudo gitlab-ctl reconfigure 使更改生效。

  • 通過系統原本安裝的Nginx反代以便提供訪問
$ vim /usr/local/nginx/conf/vhost/gitlab.conf
# 為原Nginx新建一個gitlab的配置文件
server {
    listen       8022;  #我的gitlab一般使用8022端口訪問
    server_name  localhost;

    location / {
        root  html;
        index index.html index.htm;
        proxy_pass http://127.0.0.1:8021; #這里與前面設置過的端口一致
    }
}


systemctl restart nginx  或者 service nginx restart 重啟

 

通過 172.168.50.41:8022 訪問gitlab,一切OK


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM