我安装了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)
知道发生了什么事吗?
答案 0 :(得分:30)
你不能只使用(http://www.sinatrarb.com/configuration.html):
set :port, 80
请注意,为了将套接字绑定到端口80,您需要具有超级用户权限。
顺便说一下,
使用Sinatra.default_options设置基本配置项已过时
答案 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以外的任何东西在我看来都是危险的游戏。这些工具非常擅长他们的工作。反向代理设置是可行的方法。