Problemas de configuração do Gitlab :: NGINX Unicorn Port Conflict
Eu consegui configurar parcialmenteGitlab em um servidor Linux CentOS com Apache, Git, PHP, PostGreSQL e MySQL. Estou executando oVersão do Chef Cookbook. Eu tenho a rpm deaqui. Eu queria usá-lo para gerenciar meu repositório Git melhor e mais visualmente, e isso parecia ser uma boa escolha. Mas agora tenho problemas para fazê-lo funcionar.
Apenas para fazê-lo realmente funcionar e atualizar todos os arquivos, decidi executar novamente a configuração usandogitlab-ctl reconfigure
. A segunda execução funcionou:
Chef Client finished, 4 resources updated
gitlab Reconfigured!
Vejolog completo
O hoster já havia colocado o NGINX no 8080 para não entrar em discussão com o Apache em execução na porta 80, onde temos um projeto LAMP em execução. Mas agora o Ruby Unicorn Web Server parece estar em conflito com o NGINX. Eu trabalhei com o NGINX um pouco, não muito e esta é a minha primeira tentativa no Gitlab. Enfim, é isso que eu descobri com a ajuda do meu hoster.
Quando eu faço login no testserver.domain.net e transmito o seguinte comando:
netstat -ln |grep 8080
Entendo
tcp 0 0 127.0.0.1:8080 0.0.0.0:* LISTEN
Então, algo está sendo executado no 8080 De acordo com o meu hoster, ele deve executar no 0.0.0.0:8080. E quando verificamos o que está sendo executado nessa porta, vemos
netstat -tupln |grep 8080
tcp 0 0 127.0.0.1:8080 0.0.0.0:* LISTEN 21627/unicorn maste
Quando verificamos a identificação do processo 21627, vemos
cat /proc/21627/cmdline
unicorn master -E production -c /var/opt/gitlab/gitlab-rails/etc/unicorn.rb /opt/gitlab/embedded/service/gitlab-rails/config.ru
Esse é um processo Ruby, e não um processo NGINX.
Portanto, o NGINX parece estar em conflito com o Unicorn.
E quando verificamos os logs do nginx, vemos que o nginx não pode continuar por causa disso:
tail -f /var/log/gitlab/nginx/error.log
2014/07/28 09:43:10 [emerg] 23122#0: bind() to 0.0.0.0:8080 failed (98: Address already in use)
2014/07/28 09:43:10 [emerg] 23122#0: still could not bind()
2014/07/28 09:43:12 [emerg] 23123#0: bind() to 0.0.0.0:8080 failed (98: Address already in use)
2014/07/28 09:43:12 [emerg] 23123#0: bind() to 0.0.0.0:8080 failed (98: Address already in use)
2014/07/28 09:43:12 [emerg] 23123#0: bind() to 0.0.0.0:8080 failed (98: Address already in use)
2014/07/28 09:43:12 [emerg] 23123#0: bind() to 0.0.0.0:8080 failed (98: Address already in use)
2014/07/28 09:43:12 [emerg] 23123#0: bind() to 0.0.0.0:8080 failed (98: Address already in use)
2014/07/28 09:43:12 [emerg] 23123#0: still could not bind()
Eu pesquisei Unicorn.rb e encontrei issoligação. Eu também li que:
O Unicorn é um servidor HTTP para aplicativos de rack projetado para atender apenas clientes rápidos em conexões de baixa latência e alta largura de banda e tirar proveito dos recursos dos kernels do tipo Unix / Unix. Os clientes lentos devem ser atendidos apenas colocando um proxy reverso capaz de armazenar em buffer totalmente a solicitação e a resposta entre o Unicorn e os clientes lentos.
Quando eu verifico o arquivo/var/opt/gitlab/gitlab-rails/etc/unicorn.rb
Eu vejo que ele usa 8080. O problema é que parece que o Unicorn deve trabalhar junto com o NGINX; portanto, talvez eu não deva alterar a porta.
Que passo devo dar para que o Gitlab funcione? O Gitlab pode funcionar sem o Unicorn? Eu acho que não. Devo então escolher outra porta para ela ou talvez para o NGINX?