What is supervisor?
Supervisor is a process monitor in linux based operating system. Basically it keeps the background task up and running. It restarts the task if it failed for some reason.
How to install supervisor?
Using linux terminal run following command to install supervisor:
sudo apt-get install supervisor
How to configure supervisor?
Let's create a sample configuration for laravel application to run background jobs. First of all we need to create a new configuration for our laravel app.
Create a new file called /etc/supervisor/conf.d/laravel-worker.conf this file will have our supervisor configuration for our laravel queue workers.
Let's paste following contents to this file:
[program:laravel-worker] process_name=%(program_name)s_%(process_num)02d command=php /home/ssh_user/laravel-project/artisan queue:work sqs --sleep=3 --tries=3 autostart=true autorestart=true user=ssh_user numprocs=8 redirect_stderr=true stdout_logfile=/home/ssh_user/laravel-project/worker.log
In above file replace ssh_user with your ssh user on linux server. I assume that your laravel project is setup under /home/ssh_user/laravel-project folder.
Save above file and run following command to start supervisor:
# let our supervisor know about this new task sudo supervisorctl reread # update newly created config file sudo supervisorctl update # start our background task sudo supervisorctl start laravel-worker:* # check the status of our supervisor task sudo supervisorctl status
That is it, this newly created task will be constantly monitored using supervisor in case it fails supervisor will restart our task and you can check the status using status command.