{success} supervisorの設定内容とsupervisor関連で行った作業内容について記載しています。
php artisan queue:workコマンドを常時起動させるために導入しています。/etc/supervisor/conf.d/◯◯.conf
[program:◯◯]
command=php /var/www/html/production/◯◯/artisan queue:work
autostart=true
stdout_logfile=/var/www/html/production/◯◯/storage/logs/worker.log
stderr_logfile=/var/www/html/production/◯◯/storage/logs/worker-error.log
[program:〇〇]:設定のラベルみたいなもの
command:実行するコマンド
autostart:自動起動ON/OFF
autorestart:自動再起動ON/OFF 【※注意点を下記に記載。基本的には設定しない。】
stdout_logfile:標準ログファイル
stderr_logfile:エラーログファイル
{danger} [program:#{PROGRAM_NAME}] セクションには command で実行したいコマンドを書ける上に autorestart という便利そうな設定があります。 これは当該プロセスが落ちていた場合に自動的に再起動してくれるオプションなのですが、 気軽に使うと死にます 。
もし command に service コマンド経由や /etc/init.d 以下のスクリプト経由でサービス起動するような設定を書いていて autorestart を有効にした場合、 延々とプログラムが再起動し続けます 。
外部から見ると繋がったり繋がらなかったりしてチャタリングしているように見えるので、まともなサービスはできません。気をつけましょう。
とりあえず、あまり深い理解をせずに気軽に使いたければ、 autorestartは使わず、autostartだけ設定し、再起動が必要になったらserviceコマンドやinitスクリプトで手動立ち上げするか、またはcontainerごとrestartする(supervisordが立ち上がり直すのでautostartが起動する) ことをオススメします。
{primary} 本番サーバーでsupervisor関連で行った作業についてまとめています。
sudo apt install supervisor
[program:◯◯]
command=php /var/www/html/production/◯◯/artisan queue:work
autostart=true
stdout_logfile=/var/www/html/production/◯◯/storage/logs/worker.log
stderr_logfile=/var/www/html/production/◯◯/storage/logs/worker-error.log
sudo service supervisor start
sudo supervisorctl update