Ответ 1
Я решил проблему, отменив файл .sock
.
sudo unlink /var/run/supervisor.sock
Если это не поможет, вы должны проверить и отменить связь с файлом в /tmp/supervisor.sock
.
Когда я запустил 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 с теми же спецификациями, но у меня есть те же ошибки.
Как я могу проверить, какой порт является источником этой ошибки?
Я решил проблему, отменив файл .sock
.
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
И ПИД-код 2503
Затем введите это:
kill -s SIGTERM 2503
Он должен работать
Моя ситуация была немного специфичной, но это может быть полезно.
Я запускал несколько контейнеров-докеров на одном хосте. Все контейнеры работали в режиме сетевой сети. Каждый контейнер имел несколько процессов, контролируемых супервизором.
Первый контейнер всегда появлялся, а все остальные терпели неудачу с предупреждением, что 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
работает.