Запуск Синатры на порту 80

Я установил 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)

Любая идея, что происходит?

Ответы

Ответ 1

Не можете ли вы просто использовать (http://www.sinatrarb.com/configuration.html):

set :port, 80

Обратите внимание, что для привязки сокета к порту 80 вам понадобятся привилегии суперпользователя.


И, между прочим,

Использование Sinatra.default_options для установки базовых элементов конфигурации устарело

От: http://www.sinatrarb.com/one-oh-faq

Ответ 2

Альтернативный способ принятия ответа

rvmsudo rackup -p 80

В случае, если вы используете RVM для управления версиями Ruby, вы не сможете использовать sudo, что легко (или еще нужно настроить ruby ​​в пути).

Ответ 3

Любой порт ниже 1024 предназначен только для привилегированных процессов. Вам нужно будет запускать как root для запуска приложения sinatra непосредственно на 80. Вы можете отменить прокси - http://sinatra-book.gittr.com/#deployment.

Ответ 4

Да, запуск чего-либо другого, кроме Apache, Nginx, Varnish или HAProxy или порта 80, является, по моему мнению, опасной игрой. Эти инструменты очень хороши в том, что они делают. Настройка обратного прокси-сервера - это путь.