6

Apacheポートフォワーディングを使用してポート80とポート7655の間を仲介する、デーモンとして実行するSinatraアプリがあります。これは、過去に正常に機能していました。今日はあまりよくありません。理由がわかりません。

問題:sudo ruby my_process.rb返品:

/var/lib/gems/1.9.1/gems/eventmachine-1.0.0/lib/eventmachine.rb:526:in `start_tcp_server': no acceptor (port is in use or requires root privileges) (RuntimeError)

試しました:すべてのシステムパッケージを更新し、すべてのgemを更新しました。ヘルプはありません(eventmachineからのより明確なエラーメッセージを除く)。

走っsudo lsof -i :7655ても何も返ってこない。実行すると、 Rubyプロセスがまったくsudo ps aux表示されません。エラーメッセージの性質を考えると、これは非常に不規則だと思います。

それで、ポートが利用できない理由を見つけるのに私が見逃しているものはありますか?


また:

ポートを変更しようとしましたが、何もありません。「localhost」と関係があるのか​​な?ローカルホストにpingを実行すると、ドロップされたすべてのパケットが取得されます。それは正常ではないようです。

4

2 に答える 2

3

メインの Sinatra スクリプトの次の 2 行が、最も多くの情報を提供していることがわかりました。

set bind: "localhost"
set port: 7655

問題はローカルホストにありました。ループバック インターフェイスが正しく構成されていませんでした。ifconfigインターフェイスはlo表示されましたが、 IP が割り当てられていませんでした127.0.0.1。解決するには、シェルで次のコマンドを実行しました (Ubuntu Linux システム上)。

ifdown lo
ifup lo
于 2012-10-08T13:05:06.097 に答える
0

タームを閉じるときに実際のサーバーを [CTRL+C] で停止するのを忘れた場合は、次のコマンドを実行して sinatra などのすべての ruby​​ プロセスを強制終了し、再度実行します。

killall ruby

実行すると、実際の Ruby プロセスを確認できます。

ps -ef | grep ruby
于 2022-03-03T16:23:43.783 に答える