如何初始化机架服务器监听套接字

时间:2013-09-05 11:22:50

标签: ruby-on-rails rack unix-socket

我必须修补一些代码,但无法弄清楚具体如何。所以基本上,我有一个机架服务器绑定到主机名和端口。我喜欢它绑定到unix socket。问题是,我无法弄清楚我必须给出的确切选项。

Rack::Server.new(:app => @app, :port => 3000).start 

做了预期的事情。我认为会是这样的:

Rack::Server.new(:app => @app, :socket => "path/to/file").start

但是这会绑定到默认端口。我怎么能这样做?

3 个答案:

答案 0 :(得分:5)

我发现如果你将文件名传递给:Host选项,它会绑定到unix套接字而不是tcp套接字。

文件名需要如下所示:

/var/www/myapp/my_app.socket./my_app.socket

如果它看起来像这样的域名,这将无效:

my_app.socket

例如,这是一个在Rack 1.2中运行的rackup命令:

rackup -s thin -E production -o ./my_app.socket faye.ru

或者你是如何从ruby那里做到的:

require 'rack'
require 'thin'
Rack::Handler.get('thin').run(app, :Host => './my_app.socket')

# or this works also

require 'rack'
require 'thin'
Rack::Server.new(:app => app, :Host => './my_app.socket').start

注意: :Host中的大写H是必需的。

我希望有所帮助!

答案 1 :(得分:2)

显然这是不可能的。机架兼容的服务器通常支持此功能,但Rack :: Server“接口”没有使用它(至少是截至2013年10月的最新版本)。为什么不,超出我的范围。

答案 2 :(得分:-1)

您尝试过:套接字还是:文件?请注意,使用Rack时,实际Web服务器(webrick,thin等)的选项通常以大写字符开头。