Подтвердить что ты не робот

Супервизор в Debian Wheezy: еще одна программа уже прослушивает порт, который один из наших HTTP-серверов настроен на использование

Когда я запустил service supervisor start, я столкнулся с следующей ошибкой:

Starting supervisor: Error: Another program is already listening on a port that one of our HTTP servers is configured to use.  Shut this program down first before starting supervisord.
For help, use /usr/bin/supervisord -h

Содержимое /var/log/superuser/supervisord.log:

2014-08-04 16:25:45,891 CRIT Supervisor running as root (no user in config file)
2014-08-04 16:25:45,891 WARN Included extra file "/etc/supervisor/conf.d/com.domain.subdomain.conf" during parsing

Хорошо к ноу-материал:
- Я использую Debian Wheezy на сервере Digital Ocean.
- Я пытался проверить, что диспетчер портов использует в чистом поле Vagrant с теми же спецификациями, но у меня есть те же ошибки.

Как я могу проверить, какой порт является источником этой ошибки?

4b9b3361

Ответ 1

Я решил проблему, отменив файл .sock.

sudo unlink /var/run/supervisor.sock

Если это не поможет, вы должны проверить и отменить связь с файлом в /tmp/supervisor.sock.

Ответ 2

Введите это в свой терминал

ps -ef | grep supervisord

Вы получите некоторый pid супервизора, как эти

root   2503  1  0 Nov19 ?  00:03:23 /usr/bin/python /usr/bin/supervisord
root   21337 2556  0 18:15 pts/8   00:00:00 grep --color=auto supervisord

И ПИД-код 2503

Затем введите это:

kill -s SIGTERM 2503  

Он должен работать

Ответ 3

Моя ситуация была немного специфичной, но это может быть полезно.

Я запускал несколько контейнеров-докеров на одном хосте. Все контейнеры работали в режиме сетевой сети. Каждый контейнер имел несколько процессов, контролируемых супервизором.

Первый контейнер всегда появлялся, а все остальные терпели неудачу с предупреждением, что OP упомянул: Another program is already listening on a port that one of our HTTP servers is configured to use. Shut this program down first before starting supervisord.

Для меня проблема заключалась в том, что у меня была следующая строка в моей конфигурации диспетчера:

[inet_http_server]
port=127.0.0.1:9001

[supervisorctl]

Первый контейнер будет успешно привязан к порту 9001, и каждый последующий контейнер не запустится, потому что они также попытаются привязать этот же порт, который уже был выполнен.

Я заменил эти строки следующим: переключение с привязки http-сервера на localhost: 9001 на сервер, работающий в соке домена unix.

[unix_http_server]
file=/var/run/supervisor.sock

[supervisorctl]
serverurl=unix:///var/run/supervisor.sock

Это фиксировало столкновение портов и все контейнеры смогли запустить.

Ответ 4

Здесь была та же проблема. Решение заключалось в том, что systemctl stop supervisor.service не остановил службу. supervisord все еще работает, хотя вы думаете иначе.

Убедитесь, что вы пробовали это, прежде чем вручную отсоединить разъем.

У меня часто возникали проблемы с выполнением /etc/init.d/supervisor restart, хотя /etc/init.d/supervisor stop && /etc/init.d/supervisor start работает.