Reiniciar Apache si falla el servicio con un script bash

Reiniciar Apache si falla el servicio con un script bash, de forma automática.

Le pese a quien le pese, Apache sigue siendo el servidor http más utilizado a nivel mundial. Hago este comentario porque últimamente aparecen informaciones, donde se afirma que Nginx ya esta a la misma altura si hablamos de instalaciones.

Realmente esto es falso (o es falso a medias). Lo que ocurre, que ahora mismo se está aprovechando las funciones de Nginx como cache, para mejorar el rendimiento de Apache. El servidor real sigue siendo Apache, pero se le incrusta Nginx para que opere como proxy inverso cacheando lo que sirve Apache.

Por lo explicado en el párrafo anterior, es común que al analizar un sitio web aparece como servidor http Nginx, pero el trabajo principal lo hace Apache.

No es común, pero puede suceder que por algún error inesperado o fallo en el sistema, el servicio que ofrece Apache caiga. En el mini artículo de hoy, crearemos un script bash que analizara el servicio cada 5 minutos y, lo reiniciara en cado que detecte un error. También mantendremos un registro, para identificar de forma simple los errores sucedidos.

Reiniciar Apache si falla el servicio

Reiniciar Apache si falla el servicio

 

Reiniciar Apache si falla el servicio con un script bash

El script es bastante simple. Creamos un directorio específico para él.

sudo mkdir /usr/restApache

Ahora el script bash.

sudo nano /usr/restApache/restApache.sh

Copia y pega lo siguiente, agregando tus datos reales (dominio o IP).

#!/bin/bash
# https://www.sololinux.es
# Sergio G.B.
# Elige una opcion, domain o server 
# y comenta o descomenta la que corresponda.
/usr/bin/wget --tries=1 --timeout=30 -O /dev/null https://dominio.es/
# /usr/bin/wget --tries=1 --timeout=30 -O /dev/null IP-de-Servidor

if [ $? -ne 0 ]; then
    systemctl restart httpd
    datetime=`date "+%Y%m%d %H:%M:%S"`
    echo $datetime "Error">>/var/log/restApache.log
fi

Guarda el archivo y cierra el editor.

Reiniciar Apache si falla el servicio con un script bash

 

Ahora lo automatizamos con una tarea cron, pero primero le concedemos permisos.

sudo chmod 755 /usr/restApache/restApache.sh

Abrimos el archivo de tareas cron.

sudo crontab -e

Copia y pega lo siguiente. Por defecto lo tenemos en 5 minutos, puedes modificar el valor según tus necesidades.

*/5 * * * *  /usr/restApache/restApache.sh > /dev/null 2>&1

Guarda el archivo y cierra el editor. Imagen de ejemplo.

Reiniciar Apache con tarea cron

Reiniciar Apache con tarea cron

 

Solo falta reiniciar el servidor, o bien… recargar el servicio.

sudo service cron reload

Ejemplo.

sergio@sololinux:~$ sudo service cron reload
 * Reloading configuration files for periodic command scheduler cron     [ OK ] 
sergio@sololinux:~$

 

Canales de Telegram: Canal SoloLinux – Canal SoloWordpress

Espero que este artículo te sea de utilidad, puedes ayudarnos a mantener el servidor con una donación (paypal), o también colaborar con el simple gesto de compartir nuestros artículos en tu sitio web, blog, foro o redes sociales. Reiniciar Apache si falla el servicio con un script bash.

Chat de SoloLinux en Telegram

 

Agregar comentario

1 logo sololinux

Suscríbete a SoloLinux

Recibe todos los nuevos artículos es tu correo electrónico

You have Successfully Subscribed!

Ir al contenido