2011-01-27 20 views
14

Ho installato Sinatra e funziona, ma per impostazione predefinita utilizza la porta 4567. Voglio che venga eseguito sulla porta 80.Esecuzione di Sinatra sulla porta 80

Nel tentativo di farlo funzionare sulla porta 80, ho provato questo:

require 'rubygems' 
require 'rack/handler/webrick' 
require 'sinatra' 

Sinatra::Application.default_options.merge!(
    :run => false, 
    :env => :production, 
    :port => 80 
) 

get '/' do 
    "Hello World" 
end 

Ma ottengo questo errore:

$ ruby -rubygems index.rb 
index.rb:5:in `<main>': undefined method `default_options' for Sinatra::Application:Class (NoMethodError) 

Qualsiasi idea cosa sta succedendo?

+2

Poiché si sta eseguendo Ruby 1.9, si noti che non è più necessario 'richiedere' rubygems''; sono inclusi nel 1.9 per te. Inoltre non è necessario richiedere 'webrick', Sinatra lo farà come fallback se non è installato un server migliore (come Thin). – Phrogz

risposta

28

Non puoi semplicemente usare (http://www.sinatrarb.com/configuration.html):

set :port, 80 

Si noti che al fine di impegnare un socket alla porta 80, è necessario avere i privilegi di superutente.


E, a proposito,

Using Sinatra.default_options to set base configuration items is obsolete

Da: http://www.sinatrarb.com/one-oh-faq

+0

Quando provo a farlo: '/home/jason/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/1.9.1/webrick/utils.rb:73:in' initialize ': Autorizzazione negata - bind (2) (Errno :: EACCES) ' –

+7

Per eseguire il binding su qualsiasi cosa sotto la porta 1024, è necessario eseguire come root. –

+1

@JasonSwett Questo significa che hai già un server Web in esecuzione sulla porta 80, oppure devi eseguire lo script come super user per poterlo configurare sulla porta 80. – Phrogz

16

Un modo alternativo per risposta accettata

rvmsudo rackup -p 80 

Nel caso in cui si sta usando RVM per gestire le versioni di Ruby, non si può essere in grado di utilizzare sudo tanto facilmente (altrimenti avrebbe bisogno di impostare rubino in cammino).

1

Sì, eseguire qualsiasi cosa diversa da Apache, Nginx, Varnish o HAProxy o porta 80 è a mio avviso un gioco pericoloso. Questi strumenti sono molto bravi in ​​quello che fanno. Una configurazione proxy inversa è la strada da percorrere.

Problemi correlati