web-dev-qa-db-ja.com

ポート80でSinatraを実行

Sinatraをインストールしましたが、動作しますが、デフォルトでポート4567を使用します。ポート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)

何が起こっているのか分かりますか?

16
Jason Swett

ただ使用することはできません( http://www.sinatrarb.com/configuration.html ):

set :port, 80

ソケットをポート80にバインドするには、スーパーユーザー権限が必要であることに注意してください。


ところで、

Sinatra.default_optionsを使用して基本構成アイテムを設定することは廃止されました

差出人: http://www.sinatrarb.com/one-oh-faq

31
miku

回答を受け入れる別の方法

rvmsudo rackup -p 80

RVMを使用してRubyバージョンを管理している場合、Sudoを簡単に使用できない可能性があります(または、パスにRuby)を設定する必要があります) 。

16
ch4nd4n

1024未満のポートは、特権プロセス専用です。 sinatraアプリを80で直接実行するには、rootとして実行する必要があります。プロキシをリバースすることができます- http://sinatra-book.gittr.com/#deployment

2
Nick

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

0
MikeB