Running Sinatra on port 80

[亡魂溺海] 提交于 2019-12-05 11:27:44

问题


I installed Sinatra and it works but it uses port 4567 by default. I want it to run on port 80.

In an effort to get it to work on port 80, I tried this:

require 'rubygems'
require 'rack/handler/webrick'
require 'sinatra'

Sinatra::Application.default_options.merge!(
  :run => false,
  :env => :production,
  :port => 80
)

get '/' do
  "Hello World"
end

But I get this error:

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

Any idea what's going on?


回答1:


Can't you just use (http://www.sinatrarb.com/configuration.html):

set :port, 80

Note that in order to bind a socket to port 80, you'll need to have superuser privileges.


And, by the way,

Using Sinatra.default_options to set base configuration items is obsolete

From: http://www.sinatrarb.com/one-oh-faq




回答2:


An alternate way to accepted answer

rvmsudo rackup -p 80

In case one is using RVM to manage Ruby versions, you may not be able to use sudo that easily (or else would need to setup ruby in path).




回答3:


Any port below 1024 is for privileged processes only. You'd have to run as root to run the sinatra app directly on 80. You could reverse proxy - http://sinatra-book.gittr.com/#deployment.




回答4:


Yes, running anything other than Apache, Nginx, Varnish or HAProxy or port 80 is in my opiniona dangerous game. Those tools are very good at what they do. A reverse proxy setup is the way to go.



来源:https://stackoverflow.com/questions/4821466/running-sinatra-on-port-80

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!