Amazon Linux 2にSupervisorを設定する
Laravelでキューワーカー(Queue Worker)を実行するために、Amazon Linux 2にSupervisorをインストールしました。
Supervisorとは
Linux(Unix系)のOSでプロセスを監視/制御するためのプログラムです。
いきなり躓いた(失敗の手順)
ネット上にはpipでインストールする手順がよくありますが、pythonのライブラリを導入するのはめんどくさそうなので、yumでインストールしました。
sudo yum install supervisor
普通にインストールできたのでとりあえず起動
systemctl start supervisord起動エラー
Failed to start supervisord.service: Unit not found.
このあとも少しがんばったけど動作しなかったので一旦削除
sudo yum remove supervisor
あらためて導入手順
こう
sudo yum install python3 sudo pip3 install supervisor pip3 -V > pip 9.0.3 from /usr/lib/python3.7/site-packages (python 3.7) supervisord -v > 4.2.2
Supervisorの設定ファイルを書きます
sudo mkdir /etc/supervisord sudo echo_supervisord_conf > /etc/supervisord/supervisord.conf sudo mkdir /etc/supervisord/conf.d※2行目エラーになる場合は、
cd /usr/local/bin/ ./echo_supervisord_conf > /etc/supervisord/supervisord.conf追加の設定ファイルを読み込むように、/etc/supervisord/supervisord.confの末尾に以下を追加
vi /etc/supervisord/supervisord.conf
[include] files = /etc/supervisord/conf.d/*.conf
Laravelの設定ファイルを追加
sudo vi /etc/supervisord/conf.d/laravel-worker.conf
[program:laravel-worker] process_name=%(program_name)s_%(process_num)02d command=php /path/to/laravel/artisan queue:work --sleep=1 --tries=1 autostart=true autorestart=true user=apache numprocs=1 redirect_stderr=true stdout_logfile=/path/to/log/laravel-worker.log
サービスの登録
sudo vi /etc/systemd/system/supervisord.service
[Unit] Documentation=http://supervisord.org After=network.target [Service] Type=forking ExecStart=/usr/local/bin/supervisord -c /etc/supervisord/supervisord.conf ExecReload=/usr/local/bin/supervisorctl reload ExecStop=/usr/local/bin/supervisorctl shutdown User=root [Install] WantedBy=multi-user.target
Supervisorの起動
sudo systemctl start supervisord状態の確認
sudo systemctl status supervisord ● supervisord.service - supervisord - Supervisor process control system for UNIX Loaded: loaded (/etc/systemd/system/supervisord.service; enabled; vendor preset: disabled) Active: active (running) since Sun 2021-04-11 23:58:48 JST; 1min 44s ago Docs: http://supervisord.org Process: 26765 ExecStop=/usr/local/bin/supervisorctl shutdown (code=exited, status=1/FAILURE) Process: 26771 ExecStart=/usr/local/bin/supervisord -c /etc/supervisord/supervisord.conf (code=exited, status=0/SUCCESS) Main PID: 26774 (supervisord) CGroup: /system.slice/supervisord.service ├─26774 /usr/bin/python3 /usr/local/bin/supervisord -c /etc/supervisord/supervisord.conf └─26775 php /path/to/laravel/artisan queue:work --sleep=3 --tries=1 Apr 11 23:58:48 production2 systemd[1]: Starting supervisord - Supervisor process control system for UNIX... Apr 11 23:58:48 production2 systemd[1]: Started supervisord - Supervisor process control system for UNIX. [root@report_cloud conf.d]#
停止
sudo systemctl stop supervisord
自動起動の設定
sudo systemctl enable supervisord
以上