Запуск Синатры на порту 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, является, по моему мнению, опасной игрой. Эти инструменты очень хороши в том, что они делают. Настройка обратного прокси-сервера - это путь.