2011-01-27 15 views
14

Zainstalowałem Sinatrę i działa, ale domyślnie korzysta z portu 4567. Chcę go uruchomić na porcie 80.Uruchamianie Sinatra na porcie 80

W celu uzyskania go do pracy na porcie 80, próbowałem to:

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

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

get '/' do 
    "Hello World" 
end 

Ale otrzymuję ten błąd:

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

Any pomysł co się dzieje?

+2

Ponieważ używasz Ruby 1.9, pamiętaj, że nie musisz już "wymagać" rubygem ""; są one zawarte w 1.9 dla ciebie. Nie musisz też wymagać 'Webrick', Sinatra zrobi to jako awarię, jeśli lepszy serwer (taki jak Thin) nie zostanie zainstalowany. – Phrogz

Odpowiedz

28

nie można po prostu użyć (http://www.sinatrarb.com/configuration.html):

set :port, 80 

Należy zauważyć, że w celu związania gniazdo do portu 80, musisz mieć prawa administratora.


I, przy okazji,

Using Sinatra.default_options to set base configuration items is obsolete

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

+0

Kiedy próbuję to zrobić: '/home/jason/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/1.9.1/webrick/utils.rb:73:in' initialize ': Odmowa uprawnień - bind (2) (Errno :: EACCES) ' –

+7

Aby powiązać wszystko poniżej portu 1024, musisz uruchomić jako root. –

+1

@JasonSwett To oznacza, że ​​masz już serwer WWW działający na porcie 80, lub musisz uruchomić skrypt jako superużytkownik, aby móc go skonfigurować na porcie 80. – Phrogz

16

Alternatywnym sposobem przyjętym odpowiedź

rvmsudo rackup -p 80 

W przypadku jednego używa RVM zarządzać wersji Ruby, może nie być w stanie używać sudo że łatwo (albo będzie potrzebne do konfiguracji rubin w ścieżce).

1

Tak, uruchamianie czegoś innego niż Apache, Nginx, Varnish lub HAProxy lub portu 80 jest w mojej opiniowej niebezpiecznej grze. Te narzędzia są bardzo dobre w tym, co robią. Odwrotna konfiguracja proxy jest drogą do zrobienia.

Powiązane problemy