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

Chu*_*ckE 3 rack ruby-on-rails unix-socket

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

Rack::Server.new(:app => @app, :port => 3000).start 
Run Code Online (Sandbox Code Playgroud)

做了什么预期.我以为会是这样的:

Rack::Server.new(:app => @app, :socket => "path/to/file").start
Run Code Online (Sandbox Code Playgroud)

但是这会绑定到默认端口.我怎样才能做到这一点?

com*_*tic 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
Run Code Online (Sandbox Code Playgroud)

或者这是你如何从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
Run Code Online (Sandbox Code Playgroud)

注意:此处:Host需要大写字母H.

我希望有所帮助!