我有一个Sinatra应用程序,我作为守护程序运行,使用Apache端口转发在端口80和端口7655之间进行调解。这在过去一直运行良好。今天不太好。我无法弄清楚原因。
问题: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 localhost时,我得到所有丢弃的数据包。这似乎不正常。
答案 0 :(得分:2)
在主要的Sinatra脚本中提供了最多信息:
set bind: "localhost"
set port: 7655
问题出在localhost上。环回接口配置不正确。 ifconfig
显示了lo
界面,但尚未为其分配IP 127.0.0.1
。要解决此问题,请在shell中运行以下命令(在Ubuntu Linux系统上):
ifdown lo
ifup lo