Sinatra 未绑定到正确的端口
Sinatra not binding to right port
我正在使用 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
这returns正确的输出。但是当服务器真正启动时...
Listening on localhost:9292, CTRL+C to stop
错误:
no acceptor (port is in use or requires root privileges) (RuntimeError)
如何让它绑定到正确的端口?
set :port, ...
设置 Sinatra 内置服务器的端口,但您使用的是 rackup
,因此未使用此设置(9292 是 Rack 的默认端口)。
您可以使用 -p
或 --port
选项到 rackup
来设置端口。从命令行你可以做:
$ bundle exec rackup -p $OPENSHIFT_RUBY_PORT
你也可以在config.ru
的第一行指定命令行选项,但我认为你不能在那里指定环境变量。
如果您想避免在命令行上指定端口,您可能需要创建一个包装脚本来读取环境变量并调用 rackup
.
我正在使用 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
这returns正确的输出。但是当服务器真正启动时...
Listening on localhost:9292, CTRL+C to stop
错误:
no acceptor (port is in use or requires root privileges) (RuntimeError)
如何让它绑定到正确的端口?
set :port, ...
设置 Sinatra 内置服务器的端口,但您使用的是 rackup
,因此未使用此设置(9292 是 Rack 的默认端口)。
您可以使用 -p
或 --port
选项到 rackup
来设置端口。从命令行你可以做:
$ bundle exec rackup -p $OPENSHIFT_RUBY_PORT
你也可以在config.ru
的第一行指定命令行选项,但我认为你不能在那里指定环境变量。
如果您想避免在命令行上指定端口,您可能需要创建一个包装脚本来读取环境变量并调用 rackup
.