Problema del puerto del servidor HTTP del supervisor

65

Tengo una configuración de supervisor para administrar algunos procesos. Funciona perfectamente bien cuando inicio mi servidor, sin embargo, cuando lo detengo e intento iniciarlo nuevamente, falla y me da este mensaje de error:

 * Iniciando el administrador del demonio supervisor ...
Error: otro programa ya está escuchando en un puerto que uno de nuestros servidores HTTP está configurado para usar. Cierre este programa primero antes de iniciar la supervisión.
Para obtener ayuda, use / usr / bin / supervisord -h
   ...¡fallar!

Estoy ejecutando nginx en el puerto 80 y 4 servidores web en los puertos 8000, 8001, 8002, 8003

¿Alguien tiene alguna idea de lo que está pasando?

Cuando reinicio todo funciona bien.


fuente

Respuestas:

91

Me encontré con esto también. Lo arreglé haciendo cualquiera de estos:

sudo unlink /tmp/supervisor.sock

sudo unlink /var/run/supervisor.sock

Este archivo .sock se define en el valor de configuración del archivo [unix_http_server] /etc/supervisord.conf (el valor predeterminado es /tmp/supervisor.sock o /var/run/supervisor.sock).

Espero que esto ayude a alguien en el futuro.

ramayac
fuente
12
@sdolan ¡Guau, me ayudó! Eliminé /var/run/supervisor.sock y eliminé el error en Debian Stable
Abhishek A
2
ejecute find / -name supervisor.sock antes de ejecutar unlink - en sistemas debian se encuentra en / var / run /, pero su solución de desvinculación funcionó para mí
AndrewPK
2
¿Por qué el supervisor no termina con un código de error para permitir que los scripts se desvinculan automáticamente y vuelvan a intentarlo?
Tal Weiss
Ten cuidado aquí. Después de desvincular, ejecute "ps -ef | grep supervisor" y verá que el proceso anterior todavía se está ejecutando. Es posible que desee "matar <process_id>" también. EDITAR: Este fue mi caso mientras usaba Ubuntu 14.04.
jball037
1
Después del comando de desvinculación, intento reiniciar el supervisor, pero ahora se pierde el .sock. unix:///tmp/supervisor.sock no such file. Entonces, ¿qué más necesito hacer?
Robert
7

Usaría lsof para averiguar qué proceso está escuchando en esos puertos.

lsof -i tcp | grep LISTEN

Una vez que haya resuelto qué proceso es, esa es la mitad de la batalla.

gorila
fuente