Запуск Синатры на порт 80 - PullRequest
16 голосов
/ 27 января 2011

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

Есть идеи, что происходит?

Ответы [ 4 ]

31 голосов
/ 27 января 2011

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

set :port, 80

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


И, кстати,

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

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

16 голосов
/ 31 августа 2012

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

rvmsudo rackup -p 80

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

2 голосов
/ 27 января 2011

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

0 голосов
/ 21 ноября 2013

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...