在80端口运行Sinatra

时间:2011-01-27 20:27:50

标签: ruby 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 `<main>': undefined method `default_options' for Sinatra::Application:Class (NoMethodError)

知道发生了什么事吗?

4 个答案:

答案 0 :(得分:30)

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

set :port, 80

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


顺便说一下,

  

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

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

答案 1 :(得分:16)

接受答案的另一种方式

rvmsudo rackup -p 80

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

答案 2 :(得分:2)

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

答案 3 :(得分:0)

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