Назад | Перейти на главную страницу

Настройка каталога в Supervisor

Я настраивал демон супервизора, чтобы иметь возможность запускать / останавливать Celery.

Это не работает. После отладки я понял, что проблема в том, что рабочий каталог не изменился на тот, который указан в параметре каталога в supervisord.conf в разделе программы.

Надеюсь, есть workdir в сельдерее, но мне любопытно - какова цель directory вариант тогда?

Если вы запустите сценарий через супервизор и распечатаете pwd он будет выводить /.

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