AWS Laravel 技術情報

LightsailのLAMP環境でSupervisorをインストールして利用する方法

Laravelでキューに投入されたジョブを処理するには、以下のコマンドの実行が必要です。

php artisan queue:work

AWSのLightsailは開発環境で利用することが多いかと思いますが、たとえ開発環境でも、実行するたびにコマンドを実行するのは手間なです。

今回は、プロセスを管理するツールであるSupervisorを利用して、Laravelのキューを常時実行できるようにすう手法について記載しておこうと思います。

インストール

Supervisorをインストール

sudo apt update
sudo apt install supervisor

Supervisor設定ファイルを作成

設定ファイルが無いので作成。
Supervisorは、/etc/supervisor/conf.dフォルダ内のconfファイルを探すので、こちらに設定ファイルを作成。

sudo nano /etc/supervisor/conf.d/laravel-worker.conf

設定内容(プロジェクト名、部分を書き替えてください)

[program:laravel-worker]
process_name=%(program_name)s_%(process_num)02d
command=/opt/bitnami/php/bin/php /opt/bitnami/apache2/htdocs/(プロジェクト名)/artisan queue:work --tries=3
autostart=true
autorestart=true
user=bitnami
numprocs=1
redirect_stderr=true
stdout_logfile=/opt/bitnami/apache2/htdocs/(プロジェクト名)/storage/logs/worker.log

nanoエディタの使い方:設定内容を記載後、保存 (Ctrl + O → Enter) し、終了 (Ctrl + X)します

設定ファイルが正しく作成されているか確認

ls -l /etc/supervisor/conf.d/

こんな感じに出るはず

-rw-r--r-- 1 root root xxx date time laravel-worker.conf

Supervisorを再読み込みして起動

sudo supervisorctl reread
sudo supervisorctl update

正しく動作していれば、laravel-worker: availableと表示されるはず。

LaravelのWorkerを起動

sudo supervisorctl start laravel-worker:*

サービスのステータス確認

sudo supervisorctl status

こんな感じに出ればOK

laravel-worker:laravel-worker_00 RUNNING pid 12345, uptime 0:00:10

上記のようにRUNNINGと表示されるはず。

上手く起動しない場合

Supervisor を再起動

sudo systemctl restart supervisor

この後、上記にも記載したSupervisorを再読み込みして起動します。

(補足)エラー時の対処

Supervisor のログ

sudo cat /var/log/supervisor/supervisord.log

Laravel Worker のログ

sudo tail -f /opt/bitnami/apache2/htdocs/(プロジェクト名)/storage/logs/worker.log

テスト

再起動して正常に動作するか

Supervisorは自動でプロセスを再起動しますが、念のため再起動後の動作をテスト

sudo reboot

再起動後、以下でWorkerが動作中か確認

sudo supervisorctl status

実際にキューに投入されたジョブが動作するかどうか確認

あとは実際にジョブを作成してみて、実行されることを確認してください。

株式会社OZでは、他の方達にも有益と思われる情報は、社内ナレッジに留めず、積極的に情報公開するという方針をとっております。
株式会社OZをよろしくお願いします!

-AWS, Laravel, 技術情報
-, ,