2016-06-21 4 views
0

私はOpenshiftとSinatraを使って自分のウェブサイトをホストしています。しかし、それは正しいポートにバインドされていません。Sinatraが正しいポートにバインドしていません

set :port, ENV["OPENSHIFT_RUBY_PORT"] 
set :port, ENV["OPENSHIFT_RUBY_IP"] 
... 
puts ENV["OPENSHIFT_RUBY_PORT"] 
puts settings.port 
puts ENV["OPENSHIFT_RUBY_IP"] 
puts settings.bind 

これは正しい出力を返します。サーバーが実際に開始したときにでも...

Listening on localhost:9292, CTRL+C to stop 

はエラー:

no acceptor (port is in use or requires root privileges) (RuntimeError) 

は、どのように私はそれが正しいポートにバインドするのですか?

+0

他のサーバーが同じポートで実行されていませんか? 'OPENSHIFT_RUBY_PORT'設定は何になっていますか? – Kashyap

+0

'OPENSHIFT_RUBY_PORT'は8080です。 – Dittoslash

+1

あなたはどのようにサーバーを起動していますか?再生のためのサンプルスクリプトを提供できますか? – Kashyap

答えて

2

set :port, ...はSinatraの組み込みサーバーのポートを設定しますが、rackupを使用しているため、この設定は使用されません(9292はRackのデフォルトポートです)。

rackupには-pまたは--portオプションを使用してポートを設定できます。あなたが行うことができますコマンドラインから:

$ bundle exec rackup -p $OPENSHIFT_RUBY_PORT 

またconfig.ruの最初の行にコマンドラインオプションを指定することができますが、私はあなたがそこに環境変数を指定することができるとは思いません。

コマンドラインでポートを指定しないようにするには、環境変数を読み込み、rackupを呼び出すラッパースクリプトを作成する必要があります。

関連する問題