我正在尝试在Discourse代理后面设置Nginx,通过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
指向套接字的nginx conf
文件:
upstream discourse {
server unix:///var/www/discourse/tmp/sockets/thin.sock;
}
这一切都很有效......只要我只想要一个连接到套接字的web工作者。如果我自己正在运行thin
,我可以使用-s4
并获得四个瘦工作者,它甚至可以处理套接字文件,创建thin.0.socket
,thin.1.socket
等但是以这种方式运行thin
会使工作人员在他们自己的进程中旋转,然后退出,所以如果我将-s4
放入我的Procfile
,foreman
会认为某些事情已经死亡并且级联也让自己失望。
只是告诉foreman start -c web=2
会带来两个进程......但它们都指向同一个sock
文件,似乎都不起作用。
我确信有一种简单的方法可以解决这个问题,但我似乎无法弄清楚这种神奇的咒语。我在这里做错了什么?
答案 0 :(得分: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
}
[edit]我不认为使用unix套接字时需要端口选项。
[编辑2]好的,在我昨天测试之后,我开始阅读更多关于瘦,unix套接字和nginx的主题,并发现了这个博客:http://jordanhollinger.com/2011/04/22/threaded-thin-is-really-really-slow-on-ruby-1-9-2/。关于此的很多或资源。在此添加,因为它可以帮助人们寻找它。