Супервизор на 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 / суперпользователь / супервизор.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

Good-To-know-stuff:
- Я использую Debian Wheezy на цифровом Океанском сервере.
- Я попытался проверить использование супервизора портов в чистой коробке Vagrant с теми же спецификациями, но у меня есть те же ошибки.

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

5 ответов


я решил свою проблему, отключив .

sudo unlink /var/run/supervisor.sock

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


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

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

и PID составляет 2503

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

kill -s SIGTERM 2503  

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


моя ситуация была немного конкретной, но это все еще может быть полезно.

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

первый контейнер всегда будет появляться, и все остальные будут терпеть неудачу с предупреждением, что упомянутый 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

это исправило столкновения портов и все контейнеры смогли начать.


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

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

Я часто сталкивался с проблемами делать /etc/init.d/supervisor restart хотя /etc/init.d/supervisor stop && /etc/init.d/supervisor start строительство.


похоже на ответ @N'falykaba, но, возможно, немного более прямой, как и в более новых версиях Supervisor вы можете использовать supervisorctl pid чтобы получить pid, убейте его и перезапустите:

$ kill -s SIGTERM $(supervisorctl pid)

перезагрузку:

$ supervisord -c /path/to/supervisord.conf

источник: docs.