在80端口运行Sinatra

Jas*_*ett 16 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
Run Code Online (Sandbox Code Playgroud)

但我得到这个错误:

$ ruby -rubygems index.rb
index.rb:5:in `<main>': undefined method `default_options' for Sinatra::Application:Class (NoMethodError)
Run Code Online (Sandbox Code Playgroud)

知道发生了什么事吗?

mik*_*iku 31

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

set :port, 80
Run Code Online (Sandbox Code Playgroud)

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


顺便说一下,

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

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

  • 要绑定到端口1024以下的任何内容,您需要以root身份运行. (7认同)

ch4*_*d4n 16

接受答案的另一种方式

rvmsudo rackup -p 80
Run Code Online (Sandbox Code Playgroud)

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