How to automatically restart Nginx
Here is instruction how to launch Nginx server after close unexpectedly.
1. Create /root/nginxfix.sh file with next content:
#!/bin/bash PATH=/usr/sbin:/usr/bin:/sbin:/bin if [[ ! "$(/etc/init.d/nginx status)" =~ "active (running)" ]] then echo $(date -u) "NGINX server has been stopped. It has now been restarted." service nginx start fi
2. Make it executable chmod +x /root/nginxfix.sh
3. sudo crontab -e
4. Add crontab job. For 3 min period job will be next:
*/3 * * * * /root/nginxfix.sh >> /var/log/nginxfix.log 2>&1
/var/log/nginxfix.log – log file
Let me know better approach in comments.
2 Comments
T S.N · 15 February, 2020 at 14:14
*/3 * * * * pgrep nginx > /dev/null || /etc/init.d/nginx restart
Tariq · 10 May, 2020 at 22:29
58
It is a feature of SystemD. Override existing unit file for NGINX by running systemctl edit nginx then paste in:
[Service]
Restart=always
Save.
If NGINX is down due to, e.g. the OOM killer, it will be restarted after dying. If you have a configuration error in NGINX, it will not be restarted, of course.
To verify this configuration. start NGINX service with systemctl start nginx, and verify it is running with systemctl status nginx.
Kill it via pkill -f nginx. Confirm that NGINX is running anyway with systemctl status nginx.