Sinatra没有绑定到正确的端口

时间:2016-06-21 17:05:17

标签: sinatra port openshift

我正在使用Openshift和Sinatra来托管我的网站。但它并没有绑定到正确的端口。

set :port, ENV["OPENSHIFT_RUBY_PORT"]
set :port, ENV["OPENSHIFT_RUBY_IP"]
...
puts ENV["OPENSHIFT_RUBY_PORT"]
puts settings.port
puts ENV["OPENSHIFT_RUBY_IP"]
puts settings.bind

返回正确的输出。但是当服务器实际启动时......

Listening on localhost:9292, CTRL+C to stop

错误:

no acceptor (port is in use or requires root privileges) (RuntimeError) 

如何将其绑定到正确的端口?

1 个答案:

答案 0 :(得分:3)

set :port, ...为Sinatra的内置服务器设置端口,但您使用的是rackup,因此不使用此设置(9292是Rack的默认端口)。

您可以使用-p--port选项rackup来设置端口。从命令行中可以执行以下操作:

$ bundle exec rackup -p $OPENSHIFT_RUBY_PORT

您也可以在config.ru的第一行指定命令行选项,但我认为您不能在那里指定环境变量。

如果要避免在命令行上指定端口,可能需要创建一个包装器脚本来读取环境变量并调用rackup