2011-01-27 23 views
14

Sinatraをインストールしても機能しますが、デフォルトではポート4567が使用されます。私はそれはそれは、ポート80上で動作するように取得するための努力ではポート上で80Sinatraをポート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 'をrequireする必要はありません。彼らは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で稼働しているWebサーバーを持っているか、ポート80でセットアップできるようにスーパーユーザーとしてスクリプトを実行する必要があることを意味します。 – Phrogz

2

1024以下の任意のポートのみ特権プロセスのためです。あなたは80で直接sinatraアプリを実行するにはルートとして実行する必要があります。あなたは逆プロキシ - http://sinatra-book.gittr.com/#deploymentすることができます。

16

場合一

rvmsudo rackup -p 80 

受け入れ答えへの代替の方法は、Rubyのバージョンを管理するためにRVMを使用している、あなたは簡単に(または他のセットアップルビーする必要がありますsudoを使用することができないかもしれませんパス)。

1

はい、Apache、Nginx、Varnish、HAProxy、またはポート80以外のものを実行しているのは、私の意見では危険なゲームです。これらのツールは、自分が行っていることに非常に優れています。リバースプロキシの設定は、行く方法です。

関連する問題