supervisorについて


{success} supervisorの設定内容とsupervisor関連で行った作業内容について記載しています。


概要

  • supervisorは、Laravelのキューに登録されたジョブを実行するphp artisan queue:workコマンドを常時起動させるために導入しています。
  • Python製なので対象環境にPythonがインストールされている必要があります。Python3系で動きます。※Python2系では試したことありません。

supervisor設定ファイル

/etc/supervisor/conf.d/◯◯.conf

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

[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が起動する) ことをオススメします。


supervisor作業内容

{primary} 本番サーバーでsupervisor関連で行った作業についてまとめています。

概要

  • Python製なので対象環境にPythonがインストールされている必要があります。基本的にはPython3をインストールしています。
  • supervisorは元からLinuxにインストールされていないので、手動でインストールする必要があります。

手順

1. インストール

sudo apt install supervisor


2. 設定ファイル作成

[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


3. supervisordデーモン起動

sudo service supervisor start


4. 設定ファイルの反映

sudo supervisorctl update

参考文献