开发者

Running Sinatra on port 80

开发者 https://www.devze.com 2023-02-07 07:14 出处:网络
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:

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 `def开发者_开发问答ault_options' for Sinatra::Application:Class (NoMethodError)

Any idea what's going on?


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


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).


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.


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.

0

精彩评论

暂无评论...
验证码 换一张
取 消