После обновления от супервизора 3.0 к 3,2 (произошел при обновлении 14.04 к 16,04), наша конфигурация, которую мы используем для супервизора, кажется, не работает правильно больше.
Конфигурация супервизора по умолчанию абсолютно неизменна, и единственный важный параметр там:
[include]
files = /etc/supervisor/conf.d/*.conf
В conf.d
каталог там является двумя файлами; тот, который используется только в этой системе и той, что символьные ссылки в каталог приложения, таким образом, мы можем использовать ту же конфигурацию через установки.
000 универсальных environment.conf
[supervisord]
directory = /home/applicationuser/domains/<domain>/current
001-programs.conf (символьная ссылка на/home/applicationuser/domains//current/supervisord.conf)
[program:push-notifications]
rabbitmq:consumer device_notifications --env=prod --no-debug -m 100
autorestart = true
user = applicationuser
command = bin/console rabbitmq:consumer device_notifications --env=prod --no-debug -m 100
Когда я запускаю супервизор, единственная вещь, которую говорит журнал:
supervisord[11599]: 2018-06-21 08:00:16,549 INFO spawnerr: can't find command 'bin/console'
Это пробует несколько раз и затем решает войти в ФАТАЛЬНОЕ состояние из-за повторений. Эта установка всегда работала на нас, но теперь, кажется, повреждается. Я пропускаю что-то здесь? Я повреждал голову по этой проблеме некоторое время теперь, и я мог использовать некоторые новые глаза на вопрос.
Я в конце концов нашел проблему. В документации я заметил, что параметр directory используется только при демонизации.
В supervisor 3.0 это было по умолчанию; очевидно после обновления ubuntu и supervisor это поведение по умолчанию изменилось, и supervisor запустился с флагом -n в командной строке.
Снятие этого флага в systemd по какой-то причине привело к сбою демона, в то время как запуск supervisord из командной строки работал отлично. Выбрав легкий путь, потому что я хотел продолжить работу с более важными вещами, я понизил супервизор до 3.0, и все снова заработало как шарм.