2011-01-27 11 views
14

Instalé Sinatra y funciona pero usa el puerto 4567 de forma predeterminada. Quiero que se ejecute en el puerto 80.Ejecutando Sinatra en el puerto 80

En un esfuerzo por conseguir que funcione en el puerto 80, he intentado esto:

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

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

get '/' do 
    "Hello World" 
end 

Pero me sale este error:

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

Cualquier idea de lo que está pasando?

+2

Dado que está ejecutando Ruby 1.9, tenga en cuenta que ya no necesita 'require 'rubygems''; están incluidos en 1.9 para ti. Tampoco necesita requerir 'webrick', Sinatra lo hará como una alternativa si no se instala un servidor mejor (como Thin). – Phrogz

Respuesta

28

no puedes usar (http://www.sinatrarb.com/configuration.html):

set :port, 80 

Tenga en cuenta que a fin de obligar a una toma de puerto 80, que tendrá que tener privilegios de superusuario.


Y, por cierto,

Using Sinatra.default_options to set base configuration items is obsolete

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

+0

Cuando intento hacer eso: '/home/jason/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/1.9.1/webrick/utils.rb:73:in' initialize ': Permiso denegado - bind (2) (Errno :: EACCES) ' –

+7

Para enlazar a cualquier cosa debajo del puerto 1024, debe ejecutar como root. –

+1

@JasonSwett Eso significa que ya tiene un servidor web ejecutándose en el puerto 80, o necesita ejecutar el script como un súper usuario para poder configurarlo en el puerto 80. – Phrogz

2

Cualquier puerto por debajo de 1024 es para procesos privilegiados solamente. Tendría que ejecutar como root para ejecutar la aplicación sinatra directamente en 80. Podría invertir el proxy: http://sinatra-book.gittr.com/#deployment.

16

Una forma alternativa de respuesta aceptada

rvmsudo rackup -p 80 

En caso de que uno está usando RVM para gestionar versiones de Ruby, es posible que no pueda utilizar sudo tan fácilmente (o de lo contrario tendría que rubí instalación en camino).

1

Sí, ejecutar cualquier cosa que no sea Apache, Nginx, Varnish o HAProxy o el puerto 80 es en mi opiniónun juego peligroso. Esas herramientas son muy buenas en lo que hacen. Una configuración de proxy inverso es el camino a seguir.

Cuestiones relacionadas