Настройка каталогов в супервизоре
Я настраивал демона supervisor для запуска / остановки Celery.
Это не работает. После отладки туда и обратно я понял, что проблема была в том, что он не изменил рабочий каталог на тот, который указан в опции каталога в supervisord.conf в разделе программы.
Надеюсь, что есть workdir
в сельдерее, но мне любопытно - какова цель directory
вариант тогда?
Если вы запускаете скрипт через супервизора и печатаете pwd
это выведет /.
2 ответа
I had the same problem and managed to resolve it by reversing the order of directory
а также command
опции:
например, работает:
[program:cat]
directory=/var/log
command=cat logfile
Не работает:
[program:cat]
command=cat logfile
directory=/var/log
Вот пример, как я получил приложение nodejs с правильным ENV, работающим с супервизором
[program:fake-smtp]
directory=/home/web/fake-smtp
command=sh -c 'NODE_ENV=production node src/index.js'
autostart=true
autorestart=true
user=web
redirect_stderr=true
stdout_logfile=/home/web/logs/smtp.log
stderr_logfile=/home/web/logs/smtp.err.log
надеюсь, это поможет! Это приложение также требует правильного каталога.
То же самое с Laravel (PHP Framework), я использую супервизор для запуска заданий в очереди, и файл.env не был найден, вот конфигурация, которая работает:
[program:laravel-worker]
process_name=%(program_name)s_%(process_num)02d
directory=/var/www/YOUR_LARAVEL_APP
command=php artisan queue:work database --sleep=3 --tries=3
autostart=true
autorestart=true
user=YOUR_USER
numprocs=8
redirect_stderr=true
stdout_logfile=/var/www/YOUR_LARAVEL_APP/storage/logs/worker.log
stderr_logfile=/var/www/YOUR_LARAVEL_APP/storage/logs/worker_error.log