2012-09-30 34 views
6

Tengo una aplicación Sinatra que ejecuto como daemon, utilizando el reenvío de puertos Apache para mediar entre el puerto 80 y el puerto 7655. Esto ha funcionado bien en el pasado. Hoy, no tan bien. No puedo entender por qué.no se puede iniciar el proceso sinatra - eventmachine "no acceptor"

Problema: sudo ruby my_process.rb devuelve:

/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) 

intentado: la actualización de todos los paquetes del sistema, la actualización de todas las gemas. Sin ayuda (a excepción del mensaje de error más claro de eventmachine).

Cuando ejecuto sudo lsof -i :7655, no recibo nada. Cuando ejecuto sudo ps aux no veo ningún proceso Ruby en absoluto. Lo cual me parece muy irregular, dada la naturaleza del mensaje de error!

Entonces, ¿hay algo que me falta para descubrir por qué el puerto no está disponible?


también:

puertos cambiantes intentado, nada. Me pregunto si está relacionado con "localhost"? Cuando hago ping al servidor local obtengo todos los paquetes descartados. Eso no parece normal.

+1

¿Qué está utilizando exactamente para ejecutar 'my_process.rb'? – pje

+0

Disculpe, debería haber leído 'sudo ruby ​​my_process.rb' – mlibby

Respuesta

2

Resulta que estas dos líneas en el script principal Sinatra siempre que la mayoría de la información:

set bind: "localhost" 
set port: 7655 

El problema era con localhost. La interfaz de bucle invertido no se configuró correctamente. ifconfig mostró la interfaz lo, pero no se le asignó el IP 127.0.0.1. Para resolver, ejecutó los siguientes comandos en el shell (en un sistema Ubuntu Linux):

ifdown lo 
ifup lo 
+0

¿Puede proporcionar un poco más de detalles sobre esta respuesta? ¿Dónde colocaste "ifdown lo" y "ifup lo" si esa es la solución? No puedo imaginar qué hacer ... – BrainLikeADullPencil

+0

Edité la respuesta, espero que ayude. – mlibby

+0

@BrainLikeADullPencil: "ifdown" AND "ifup" son comandos de Linux/MacOS para iniciar y detener el adaptador de red "loopback" ("software"). No deberían * ser necesarios para su [pregunta] (http://stackoverflow.com/questions/14049765/port-in-use-when-not-using-a-port). La clave es cambiar la dirección de "enlace" en su script de Sinatra, y ver si ayuda el error "puerto en uso" que está recibiendo actualmente para el puerto # 4567. – paulsm4

Cuestiones relacionadas