2012-09-30 110 views
6

我有一個Sinatra應用程序,我作爲一個守護進程運行,使用Apache端口轉發在端口80和端口7655之間進行調解。這在過去一直正常運行。今天,不太好。我無法弄清楚爲什麼。無法啓動sinatra進程 - eventmachine「no acceptor」

問題: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) 

嘗試:更新所有系統軟件包,更新所有的寶石。沒有幫助(除了來自eventmachine的更清晰的錯誤信息)。

當我運行sudo lsof -i :7655我什麼都沒有回來。當我運行sudo ps aux時,我沒有看到任何任何 Ruby進程。鑑於錯誤信息的性質,我發現它非常不規則!

那麼有什麼我找不到爲什麼端口不可用?


另外:

試圖改變港口,沒有什麼。我不知道它是否與「localhost」有關?當我ping本地主機時,我得到所有丟棄的數據包。這看起來不正常。

+1

你到底用了什麼來運行'my_process.rb'? – pje

+0

對不起,應該已經閱讀'sudo ruby​​ my_process.rb' – mlibby

回答

2

原來,這兩條線在主西納特拉腳本提供最多的信息:

set bind: "localhost" 
set port: 7655 

的問題是與本地主機。環回接口未正確配置。 ifconfig顯示了lo接口,但尚未分配IP 127.0.0.1。爲了解決這個問題,在shell(在Ubuntu Linux系統上)運行以下命令:

ifdown lo 
ifup lo 
+0

你能提供一些關於這個答案的更多細節。如果這是解決方案,你把「ifdown lo」和「ifup lo」放在哪裏?我不知道該怎麼辦... – BrainLikeADullPencil

+0

我編輯了答案,希望它有幫助。 – mlibby

+0

@BrainLikeADullPencil:「ifdown」和「ifup」是啓動和停止「loopback」(「software」)網絡適配器的Linux/MacOS命令。他們應該*不*必須爲您的[問題](http://stackoverflow.com/questions/14049765/port-in-use-when-not-using-a-port)。關鍵是要更改Sinatra腳本中的「綁定」地址,並查看它是否有助於正在爲端口#4567獲取的「正在使用端口」錯誤。 – paulsm4