在端口80上运行Sinatra

我安装了Sinatra并且它可以工作,但它默认使用端口4567。 我希望它在端口80上运行。

为了让它在端口80上工作,我尝试了这个:

require 'rubygems' require 'rack/handler/webrick' require 'sinatra' Sinatra::Application.default_options.merge!( :run => false, :env => :production, :port => 80 ) get '/' do "Hello World" end 

但我得到这个错误:

 $ ruby -rubygems index.rb index.rb:5:in `': undefined method `default_options' for Sinatra::Application:Class (NoMethodError) 

知道发生了什么事吗?

你不能只使用( http://www.sinatrarb.com/configuration.html ):

 set :port, 80 

请注意,要将套接字绑定到端口80,您需要具有超级用户权限。


顺便说一下,

使用Sinatra.default_options设置基本配置项已过时

来自: http : //www.sinatrarb.com/one-oh-faq

接受答案的另一种方式

 rvmsudo rackup -p 80 

如果一个人使用RVM来管理Ruby版本,你可能无法轻易使用sudo(或者需要在路径中设置ruby)。

低于1024的任何端口仅用于特权进程。 您必须以root身份运行才能直接在80上运行sinatra应用程序。您可以反向代理 – http://sinatra-book.gittr.com/#deployment

是的,运行除Apache,Nginx,Varnish或HAProxy或端口80以外的任何东西在我看来是一个危险的游戏。 这些工具非常擅长他们的工作。 反向代理设置是可行的方法。