Celeryを開始/停止できるように監視デーモンを構成していました。
うまく行かなかった。何度かデバッグした後、問題は、作業ディレクトリが、プログラムセクションのsupervisord.confのディレクトリオプションで指定されているディレクトリに変更されないことであることに気付きました。
うまくいけば、セロリにworkdir
がありますが、私は興味があります-directory
オプションの目的は何ですか?
スーパーバイザを介してスクリプトを実行し、pwd
を出力すると、/が出力されます。
私は同じ問題を抱えており、directory
とcommand
オプションの順序を逆にすることで解決できました:
例えばワーキング:
[program:cat]
directory=/var/log
command=cat logfile
機能していない:
[program:cat]
command=cat logfile
directory=/var/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
これは、正しい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
これが役に立てば幸いです!このアプリには、正しいディレクトリも必要です。