Supervisor 中的目录设置

Supervisor 中的目录设置

我正在配置主管守护进程以便能够启动/停止 Celery。

它不起作用。经过反复调试后,我意识到问题在于它没有将工作目录更改为程序部分下 Supervisord.conf 中的目录选项中提到的目录。

希望 Celery 中有一个workdir,但我很好奇——那么这个选项的用途是什么directory

如果你通过主管运行脚本并打印,pwd它将输出/

答案1

directory我遇到了同样的问题,并通过颠倒和选项的顺序解决了它command

例如工作:

[program:cat]
directory=/var/log
command=cat logfile

不起作用:

[program:cat]
command=cat logfile
directory=/var/log

答案2

下面是一个例子,我如何让具有正确 ENV 的 nodejs 应用程序与主管一起工作

[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

希望这有帮助!此应用程序还需要正确的目录。

答案3

这与 Laravel(PHP 框架)相同,我使用 Supervisor 来运行队列中的作业,但找不到 .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

相关内容