Archivo de la etiqueta: cron

‘curl: (6) Couldn’t resolve host’ en un servidor con Plesk

[linux]

En el servidor que uso en el trabajo tenemos dos tareas programadas en el Cron. Ejecutando crontab -l podíamos ver la configuración establecida:

SHELL=/opt/psa/bin/chrootsh
MAILTO=""
0 9 * * * /usr/bin/curl http://myweb.com/mytask

0 3 * * 0 /path/to/a/script/script.sh

Sin embargo ninguna de las dos tareas se estaba ejecutando. Tras investigar un poco, pruebo a utilizar el Shell que se especifica en el Cron descubriendo dos cosas:

1. La nueva raíz de directorio para este SHELL es distinta, y por tanto la ruta hasta el script.sh no existe.

2. Curl no es capaz de resolver la URL.

La solución al primer problema es sencilla, únicamente debemos corregir la ruta para que cumpla con la nueva raíz del shell. La segunda no es tan inmediata, y probablemente se deba a un fallo en la configuración de los DNS. En cualquier caso, y como solución rápida, elimino esa primera línea indicando el SHELL, ya que por lo que veo no está aportando nada excepto problemas. Tras realizar esa acción, curl empieza a funcionar correctamente.

Copia de seguridad automática de un blog WordPress – Parte 1: Crear la copia de los ficheros y base de datos

[blog]

Hace ya tiempo que estoy concienciado de lo importante que son las copias de seguridad, pero aún así no siempre me acuerdo de tener las copias al día. Es por esto que lo ideal es tener todo el proceso automatizado, pero no todos los servidores web nos ofrecen esta opción. Hasta ahora siempre he usado hostings gratuitos. El servicio no era el mejor y tiene múltiples inconvenientes, pero sobre todo se quedan muy pobres en las opciones que ofrecen para realizar copias de seguridad. Esto, unido a que tras actualizarme a la última versión de WordPress empezó a fallar el blog, me decidieron a buscar un servidor de pago.

Mis requisitos eran tener acceso al servidor por SSH y poder crear tareas CRON. Tras comparar algunas opciones, me decidí por 1and1, que tenía el mejor precio y cumplía con mis requisitos. He leído que su servicio de atención al cliente no es el mejor, pero las dudas que yo he tenido me las han respondido con rapidez.

Dicho esto, empecemos con la copia de seguridad:

Yo tengo el WordPress en el directorio raíz del FTP. Debería haberlo puesto en una subcarpeta, pero ahora ya no me apetece cambiar, así que se queda así y buscaré como solucionar los problemas que salgan.

En el mismo directorio raíz he creado una carpeta llamada backup. Lo primero será impedir el acceso a esta carpeta. Para ello en el fichero .htaccess que también se encuentra en el raíz, añadimos lo siguiente:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^(www.)?la-url-de-tu-web.com$
RewriteRule ^backup - [F]
</IfModule>

En esta carpeta de backup tendremos dos ficheros que se encargarán de hacer las copias de seguridad de la base de datos y de los ficheros. Empecemos con la copia de seguridad de la base de datos. El fichero se llamará wordpress-backup-files.sh y su contenido será el siguiente:

#!/bin/sh
tar czf /path-to-files/backup/`date "+%Y%m%d-%H-%M"`-wordpress-files.tar.gz /path-to-files/ --exclude='/path-to-files/backup' --exclude='/path-to-files/backup/*' --exclude='/path-to-files/logs' --exclude='/path-to-files/logs/*'

El primer parámetro será el nombre del fichero con el contenido del blog. Se genera automáticamente con la fecha. Los --exclude especifican que ficheros y carpetas no queremos añadir a la copia. En este caso, como nuestra carpeta de backup está al mismo nivel que el resto, la excluimos, así como su contenido, y hacemos lo mismo con la carpeta de logs.

La segunda parte será hacer una copia de seguridad de la base de datos. De ello se encargará el fichero wordpress-backup-bd.sh cuyo contenido será:

mysqldump -h [host de la base de datos] -u [usuario] -p[contraseña] [nombre de la base de datos] | gzip > /path-to-files/backup/$(date +%Y%m%d-%H-%M)-wordpress-mysql.gz

Por último tendremos que programar el cron para que ejecute estos dos ficheros. En mi caso lanzaré la copia de seguridad el domingo a las 3:00 la base de datos y a las 3:30 los ficheros:

#Weekly database backup
0 3 * * 0 /path-to-files/backup/wordpress-backup-bd.sh

#Weekly files backup
30 3 * * 0 /path-to-files/backup/wordpress-backup-files.sh