In Linux, Supervisor is a client/server system that allows its users to monitor and control a number of processes on Linux or UNIX-like operating systems. Whenever we want, Processes can be stopped and started as a unit. It starts its sub-processes via fork/exec. The operating system gives the signals to Supervisor immediately when a process terminates. This is written in Python but Supervisor does not work on Python 3.
Benefits of Supervisor
Convenience: With the help of the Supervisor, We can configure the process as we want. Like Supervisor can be configured processes to automatically restart when they crash.
Accuracy: It is quite difficult to get the perfect status of processes about up or down. Basically, it starts the processes as sub-processes, That is the only reason that it is aware of the status of its children’s processes. This is very simple and easy for an end-user.
In this blog, We will learn about the installation of the supervisor and we will configure the supervisor to manage the Nginx process. You can follow the below steps:
Installation of supervisor in ubuntu
Basically, the Supervisor package is already available in Ubuntu‘s repository. But I will show you how to install a supervisor. You can follow the below command:
sudo apt-get install supervisor -y

After installing Supervisor, We can also verify the version of it by using the below command:
sudo supervisord -v
You will get the version of supervisor in output.

The supervisor is a service therefore we can check the status of supervisor service with this command.
sudo systemctl status supervisor

Supervisor Web Interface
Supervisor also provides a web-based user interface. Users can manage all the processes from there also. But Supervisor’s web interface is disabled by default. You can enable it by editing the file /etc/supervisor/supervisord.conf.
sudo vim /etc/supervisor/supervisord.conf
Add the following lines:
[inet_http_server]
port=*:6000
username=admin #username to access the web interface
password=admin # password to access the web interface
Press esc and :wq then restart the Supervisor service to apply the changes:
systemctl restart supervisor
sudo systemctl status supervisor
Configure the Nginx with Supervisor
First, We need to install the Nginx server with the below command:
sudo apt-get install nginx -y
After installation of Nginx, you will stop nginx and disable the Nginx service. Because here we will use Supervisor to manage the Nginx process.
We will use the below command to stop and disable the Nginx service:
sudo systemctl stop nginx
sudo systemctl disable nginx
Now, we can create an Nginx configuration file:
sudo vim /etc/supervisor/conf.d/nginx.conf
Add the following lines:
[program:nginx]
command=/usr/sbin/nginx -g "daemon off;"
autostart=true
autorestart=true
startretries=5
numprocs=1
startsecs=0
process_name=%(program_name)s_%(process_num)02d
stderr_logfile=/var/log/supervisor/%(program_name)s_stderr.log
stderr_logfile_maxbytes=10MB
stdout_logfile=/var/log/supervisor/%(program_name)s_stdout.log
stdout_logfile_maxbytes=10MB
Explanation:
- [program:nginx] – Define the program to monitor. We’ll call it “Nginx”.
- command – Basically, This is used to run the monitored process.
- autostart – It means the process will start when the Supervisord starts.
- auto restart – It means that the process will be restarted if it stops unexpectedly.
- startretries – It reties the process to a certain count before being considered as failed.
- stderr_logfile – The file to write any errors output.
- stdout_logfile – The file to write any regular output.
Press esc and:wq then reread the Supervisor service to apply the changes:
supervisorctl reread
You will get the output as shown below images:

nginx: available
Now update the supervisor to start the Nginx service:
sudo supervisorctl update
You will get the same output as shown below images:

nginx: added process group
Next, verify whether Supervisor started the Nginx service with the following command:
sudo supervisorctl
You should get the following output:
nginx:nginx_00 RUNNING pid 15717, uptime 0:00:13
If you want to stop the Nginx service the run below command:
stop nginx:nginx_00
Output:
nginx:nginx_00: stopped
To start the Nginx service again then run this command:
start nginx:nginx_00
Output:
nginx:nginx_00: started
If you want to exit from the Supervisor shell then you can run the below command:
exit
Now Access Supervisor Web Interface
You can now access the Supervisor web page using localhost:9000 or ip:9000

As you hit the port you will get the login page to access the page. We have added the username and password in the configuration. Therefore we will use that username and password here and get the status of all services affiliated with the supervisor. You can restart and stop the service from here also.

Conclusion
First of all, Thank you for reading my blog. We have covered how to configure the Nginx service with a supervisor. You can follow the man page of the supervisor.
You can also read my previous blog here.