1

我正在尝试在Nginx代理后面设置Discourse ,通过Thin提供服务并通过Foreman启动。

所以我有一个Procfile这样的:

web: thin start -p $PORT --socket tmp/sockets/thin.sock
sidekiq: bundle exec sidekiq -e $RAILS_ENV
clockwork: bundle exec clockwork config/clock.rb

conf还有一个指向套接字的 nginx文件:

upstream discourse {
  server unix:///var/www/discourse/tmp/sockets/thin.sock;
}

这一切都很好......只要我只想要一个连接到套接字的网络工作者。如果我只是thin自己运行,我可以加入 a-s4并获得四个瘦工人,它甚至可以处理套接字文件,创建thin.0.socket,thin.1.socket等。但是以thin这种方式运行会在他们自己的进程中启动工人,然后退出,所以如果我把它-s4放进我的Procfileforeman认为有什么东西死了,然后瀑布,也把它自己弄下来了。

只是告诉foreman start -c web=2带来了两个进程......但它们都指向同一个sock文件,而且似乎都不起作用。

我敢肯定有一个简单的方法来处理这个,但我似乎无法弄清楚魔法咒语。我在这里做错了什么?

4

1 回答 1

2

所以这有效:

# Procfile
web: thin start -p 9292 --socket /tmp/thin.0.sock
web: thin start -p 9293 --socket /tmp/thin.1.sock
web: thin start -p 9294 --socket /tmp/thin.2.sock
# and so on

# nginx.conf
upstream backend {
  server unix:/tmp/thin.0.sock
  server unix:/tmp/thin.1.sock
  server unix:/tmp/thin.2.sock
}

[编辑] 我认为使用 unix 套接字时不需要端口选项。


[编辑 2] 好的,在我昨天测试之后,我开始阅读更多关于瘦、unix 套接字和 nginx 的主题,并找到了这个博客:http: //jordanhollinger.com/2011/04/22/threaded-thin-is -really-really-slow-on-ruby-1-9-2/。关于这个的很多或资源。在此处添加它,因为它可能会帮助人们寻找它。


于 2013-04-20T08:35:40.900 回答