2011-01-27 6 views
14

Я установил Sinatra, и он работает, но по умолчанию используется порт 4567. Я хочу, чтобы работать на порту 80.Запуск Sinatra на порту 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) 

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

+2

Поскольку вы используете Ruby 1.9, обратите внимание, что вам больше не нужно «требовать» rubygems''; они включены в 1.9 для вас. Вам также не нужно требовать «webrick», Sinatra сделает это как резерв, если не будет установлен лучший сервер (например, Thin). – Phrogz

ответ

28

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

set :port, 80 

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


И, кстати,

Using Sinatra.default_options to set base configuration items is obsolete

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

+0

Когда я пытаюсь это сделать: '/home/jason/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/1.9.1/webrick/utils.rb:73:in' initialize ': разрешение отклонено - bind (2) (Errno :: EACCES) ' –

+7

Чтобы связать что-либо ниже порта 1024, вам нужно запустить его как root. –

+1

@JasonSwett Это означает, что у вас уже есть веб-сервер, работающий на порту 80, или вам нужно запустить скрипт как суперпользователя, которому разрешено настраивать его на порт 80. – Phrogz

2

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

16

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

rvmsudo rackup -p 80 

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

1

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

Смежные вопросы