El archivo de manejo de errores del apache (/usr/local/apache/logs/error_log) en Linux se llena continuamente de errores por la inexistencia en las cuentas de los clientes de los archivos favicon.ico, 400.shtml, 401.shtml, 403.shtml, 404.shtml, 406.shtml, 500.shtml y robots.txt. Para evitar este inconveniente debemos crear estos archivos vacíos (en el caso del favicon.ico se puede crear con creadores online) y copiarlos en el esqueleto del cpanel de tal forma que queden instalados con cada nueva creación de una cuenta. A su vez, debemos hacer un cron que ejecute un script que verifique la inexistencia de estos archivos en las cuentas para que los copie en el caso de que no existan, evitando así el reporte de dichos errores.
El procedimiento a seguir para esto es:
Crear el archivo de favicon.ico usando un creador de favicons (googlearlo)
Crear los archivos de los errores (400.shtml, 401.shtml, 403.shtml, 404.shtml, 406.shtml, 500.shtml) con los contenidos deseados para cada uno. En principio pueden ser archivos vacios pero deben existir para que no generen errores en los logs.
Crear el archivo robots.txt con el contenido deseado (en principio puede estar vacío pero debe existir para que no genere errores en los logs).
Subir los archivos de errores a la carpeta:
adminXX/erroresphp
Ejecutar:
cp /home/admin41/erroresphp/* /root/cpanel3-skel/public_html/
cd /usr/local/src
nano -w repararerrores.sh
Colocar:
#!/bin/bash
# Asegurar la existencia en las cuentas de los archivos: favicon.ico, robots.txt, 400.shtml, 401.shtml, 403.shtml, 404.shtml, 406.shtml y 500.shtml
# Si no existen se copian desde /root/cpanel3-skel/public_html/ donde deben haber sido colocados previamente
# Esto permite que al crear una nueva cuenta se coloquen en forma automática y a la vez evitan que el archivo error_log del apache se llene
# Copyright 2011 TecnoSoluciones.com
# Retardo en Segundos entre cuentas
typeset -i DELAY=1
# Nos ubicamos en el directorio seguro
cd /home
for i in `ls /home/ | grep -v "virtfs\|tmp\|quota.user\|MySQL-install\|munin\|lost+found\|error_log\|cpeasyapache\|cpapachebuild\|cprestore/|aquota.user/|.cpan\|.cpanm\|.cpcpan\|cptmp/|backup/"`
do
echo "Verificando si existen los archivos en el usuario $i ..."
if [ ! -e /home/$i/public_html/favicon.ico ]
then
echo "$i no tiene favicon.ico - se copia a /home/$i/public_html/"
cp /root/cpanel3-skel/public_html/favicon.ico /home/$i/public_html/
chown $i:$i /home/$i/public_html/favicon.ico
chmod 644 /home/$i/public_html/favicon.ico
fi
if [ ! -e /home/$i/public_html/robots.txt ]
then
echo "$i no tiene robots.txt - se copia a /home/$i/public_html/"
cp /root/cpanel3-skel/public_html/robots.txt /home/$i/public_html/
chown $i:$i /home/$i/public_html/robots.txt
chmod 644 /home/$i/public_html/robots.txt
fi
if [ ! -e /home/$i/public_html/400.shtml ]
then
echo "$i no tiene 400.shtml - se copia a /home/$i/public_html/"
cp /root/cpanel3-skel/public_html/400.shtml /home/$i/public_html/
chown $i:$i /home/$i/public_html/400.shtml
chmod 644 /home/$i/public_html/400.shtml
fi
if [ ! -e /home/$i/public_html/401.shtml ]
then
echo "$i no tiene 401.shtml - se copia a /home/$i/public_html/"
cp /root/cpanel3-skel/public_html/401.shtml /home/$i/public_html/
chown $i:$i /home/$i/public_html/401.shtml
chmod 644 /home/$i/public_html/401.shtml
fi
if [ ! -e /home/$i/public_html/403.shtml ]
then
echo "$i no tiene 403.shtml - se copia a /home/$i/public_html/"
cp /root/cpanel3-skel/public_html/403.shtml /home/$i/public_html/
chown $i:$i /home/$i/public_html/403.shtml
chmod 644 /home/$i/public_html/403.shtml
fi
if [ ! -e /home/$i/public_html/404.shtml ]
then
echo "$i no tiene 404.shtml - se copia a /home/$i/public_html/"
cp /root/cpanel3-skel/public_html/404.shtml /home/$i/public_html/
chown $i:$i /home/$i/public_html/404.shtml
chmod 644 /home/$i/public_html/404.shtml
fi
if [ ! -e /home/$i/public_html/406.shtml ]
then
echo "$i no tiene 406.shtml - se copia a /home/$i/public_html/"
cp /root/cpanel3-skel/public_html/406.shtml /home/$i/public_html/
chown $i:$i /home/$i/public_html/406.shtml
chmod 644 /home/$i/public_html/406.shtml
fi
if [ ! -e /home/$i/public_html/500.shtml ]
then
echo "$i no tiene 500.shtml - se copia a /home/$i/public_html/"
cp /root/cpanel3-skel/public_html/500.shtml /home/$i/public_html/
chown $i:$i /home/$i/public_html/500.shtml
chmod 644 /home/$i/public_html/500.shtml
fi
done
Guardar el archivo y salir.
Luego ejecutar:
chmod 755 repararerrores.sh
./repararerrores.sh
cd /usr/local/apache/logs/
service httpd stop
echo > error_log
service httpd start
service httpd status
tail -f error_log
Tomar nota de los errores y depurar los que queden pendientes.
Para que el cron se ejecute una vez a la semana a las 6am debemos ejecutar:
crontab -e
y agregar al final:
0 6 * * 1 /usr/local/src/repararerrores.sh > /dev/null 2>&1
Guardar el archivo y reiniciar el servicio crond con:
service crond restart
Listo