Gitlab配置问题:: NGINX Unicorn端口冲突

时间:2014-07-29 09:17:53

标签: ruby git nginx centos gitlab

我已经设法在Linux CentOS服务器上使用Apache,Git,PHP,PostGreSQL和MySQL部分设置Gitlab。我正在运行Chef Cookbook version。我从here获得了转速。我想用它来更好地和更直观地管理我的Git repo,这似乎是一个不错的选择。但现在我遇到了让它发挥作用的问题。

为了让它真正起作用并更新所有文件我决定使用gitlab-ctl reconfigure重新运行配置。第二次运行确实有效:

Chef Client finished, 4 resources updated
gitlab Reconfigured!

请参阅full log

主机已经把NGINX放在了8080而没有进入与在80端口运行的Apache的争论,我们在那里运行了一个LAMP项目。但现在Ruby的Unicorn Web Server似乎与NGINX相冲突。我和NGINX一起工作了一点点,并没有多少,这是我第一次尝试Gitlab。无论如何,这是我在我的主人的帮助下想出来的。

当我登录testserver.domain.net并传递以下命令时:

netstat -ln |grep 8080我看到了

tcp        0      0 127.0.0.1:8080              0.0.0.0:*                   LISTEN      

所以有些东西在8080上运行 根据我的主机,它应该运行在0.0.0.0:8080。当我们检查该端口上运行的是什么时,我们会看到

netstat -tupln |grep 8080
tcp        0      0 127.0.0.1:8080              0.0.0.0:*                   LISTEN      21627/unicorn maste 

当我们检查进程ID 21627时,我们看到

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

这是一个Ruby流程,而不是NGINX流程。

所以NGINX似乎与Unicorn相冲突。

当我们检查nginx的日志时,我们发现nginx无法正常运行:

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()

我用Google搜索了Unicorn.rb,发现了这个link。我也读过:

  

Unicorn是专为只提供服务而设计的Rack应用程序的HTTP服务器   低延迟,高带宽连接的快速客户端   Unix / Unix类内核中的功能优势。慢客户应该   只能通过放置一个能够完全缓冲的反向代理服务   Unicorn和慢客户端之间的请求和响应。

当我检查文件/var/opt/gitlab/gitlab-rails/etc/unicorn.rb时,我确实看到它使用了8080.问题是,似乎Unicorn应该与NGINX一起工作,所以也许我不应该改变端口。

我应该采取什么步骤来使Gitlab工作? Gitlab可以在没有Unicorn的情况下工作吗?我想不会。我应该为它选择另一个端口,还是为NGINX选择?

4 个答案:

答案 0 :(得分:9)

您应该覆盖/etc/gitlab/gitlab.rb中的端口。请勿混淆/var/opt/gitlab/...,因为重新配置后任何手动配置都将丢失。特别请阅读Setting the NGINX listen port。在下载页面中有一句话:有关故障排除和配置选项,请参阅Omnibus GitLab自述文件。我不知道人们是否看不到这种情况:/如果不是,我们应该更清楚。

答案 1 :(得分:8)

添加Axil的评论。我不得不在/var/opt/gitlab/gitlab-rails/etc/unicorn.rb文件中更改它。在那之后重新开始工作,我没有失去我的配置。即使多次重启,unicorn master也没有从/etc/gitlab/gitlab.rb文件中选择我的更改。

答案 2 :(得分:2)

您应该更新/etc/gitlab/gitlab.rb文件。

确保在修改文件时取消注释要更改的行。它使用的是厨师,因此如果在运行sudo gitlab-ctl reconfigure;时正确配置了gitlab.rb文件,它将正确更新相应的文件。然后sudo gitlab-ctl restart重新启动服务。

确定端口冲突时,

sudo lsof -Pni |grep <port number>是您的朋友

答案 3 :(得分:0)

The documentation建议设置'nginx ['listen_port'] = 8080',但是当我这样做时,独角兽无法绑定端口8080.我将nginx端口设置为8888而是有效。这表明,为了将nginx端口设置为8080,有必要将unicorn从默认端口8080更改为其他东西,但我没有探索这种可能性。如果设置nginx端口的示例是一个可以在默认配置中工作的设置,那将是很好的,我知道 - 我今天早上只安装了它。