我正在使用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)
如何将其绑定到正确的端口?
答案 0 :(得分:3)
set :port, ...
为Sinatra的内置服务器设置端口,但您使用的是rackup
,因此不使用此设置(9292是Rack的默认端口)。
您可以使用-p
或--port
选项rackup
来设置端口。从命令行中可以执行以下操作:
$ bundle exec rackup -p $OPENSHIFT_RUBY_PORT
您也可以在config.ru
的第一行指定命令行选项,但我认为您不能在那里指定环境变量。
如果要避免在命令行上指定端口,可能需要创建一个包装器脚本来读取环境变量并调用rackup
。