Juan Pablo Prado

Software Engineer

  • Home
  • About
  • Contact

Connect

  • Github
  • Linkedin
  • Twitter

Juan Pablo Prado © 2021

Cron para tu sitio WordPress

octubre 10, 2016 By Juan Prado Leave a Comment

automate-all-the-things

En el post anterior acerca de Backups Automáticos para tu sitio WordPress, nos encaminaba por el proceso de configuración de las copias de seguridad automáticas. En este post voy a demostrar cómo configurar cron.

WordPress ha incorporado soporte para las tareas programadas, lo que permite a ciertos procesos que se deben realizar como un proceso en segundo plano en los horarios establecidos. WordPress lleva a cabo las siguientes tareas programadas:

  • Las actualizaciones automáticas que son empujadas por el equipo central de WordPress para solucionar vulnerabilidades de seguridad.
  • Comprobar WordPress este instalado con la última versión estable.
  • Comprobar si hay actualizaciones de plugins.
  • Comprobar si hay actualizaciones del tema.
  • Publicar todos los mensajes programados para futuras versiones.

Sin embargo, el sistema cron usado por WordPress no es la implementación mas potente o precisa. De hecho, WordPress es un sistema de cron falso. La razón de esto es que las tareas programadas dentro de WordPress se activan durante el ciclo de vida de un page request. Por lo tanto, si tu sitio no recibe ninguna visita durante un período determinado de tiempo, ningún evento cron se activará durante este tiempo. Esto también aplica a los sitios que utilizan el almacenamiento en caché de página completa, tales como Nginx FastCGI. La razón de esto es que WordPress ya no está procesando cada solicitud de página si se golpea el caché de páginas. Por lo general, esto significa que el cron no se disparará hasta que el caché de la página expira. Si has configurado que el caché caduque después de 60 minutos esto puede no ser un problema, sin embargo, si estas cacheando períodos más largos de tiempo, esto puede llegar a serlo. Otros problemas pueden surgir en los sitios de alto tráfico, donde el almacenamiento en caché de página completa no es una opción. Esto se debe a la comprobación innecesaria de la cola cron en cada petición individual, lo cual es muy ineficiente.

Para superar estos problemas es aconsejable que cron se configure con el demonio del sistema (proceso en segundo plano), que está disponible en los sistemas basados en Unix. Debido a que cron se ejecuta como un daemon que se ejecutará en base a la hora del sistema del servidor y ya no requerirá que el usuario visita el sitio. Pero antes de configurar el cron se recomienda que deshabilites la manipulación automática de cron de WordPress. Para hacerlo añade la siguiente línea a tu archivo wp_config.php.

define('DISABLE_WP_CRON', true);

Introduciendo crontab

Los eventos Cron se añaden a un archivo de texto llamado crontab y cada línea dentro del archivo equivale a un único evento cron.

Primero conecte a su servidor.

ssh juan@apollo.juanpabloprado.com

Abre la crontab con el siguiente comando. Si esta es la primera vez que hayas abierto crontab, es posible que se te pida seleccionar un editor. Opción 2 (nano) es generalmente la más fácil.

crontab -e

crontab

No voy a entrar en detalles sobre la sintaxis crontab, pero añadiendo lo siguiente al final del archivo activará cron cada 5 minutos. Sólo recuerda que debes actualizar la ruta del archivo para apuntar a tu instalación de WordPress.

*/5 * * * * php -q /var/www/html/wp-cron.php >/dev/null 2>&1

La parte:

 >/dev/null 2>&1

Asegura que ningún mensaje de correo electrónico se envíe a la cuenta de usuario que inicia la tarea o cron job en ingles.

cron-job

Guarda el archivo pulsando Ctrl X seguido de Y.

De igual manera cuento con varias tareas automatizadas puedes echarles un vistazo al siguiente repo y en el futuro espera un blog post acerca de ellas.

Cron ahora está configurado con la función nativa cron de Unix. 🙂

Filed Under: Uncategorized Tagged With: Cron, Digital Ocean, Linux, Server, Ubuntu, WordPress, WordPress Development Tips

Backups Automáticos para tu sitio WordPress

septiembre 17, 2016 By Juan Prado 2 Comments

Es esencial realizar copias de seguridad con regularidad. Es inevitable que en algún momento en el futuro tendrás que restaurar la base de datos – ya sea debido a un error del usuario, corrupción o una violación de seguridad. Nunca se sabe lo que podría salir mal, por lo que tener una copia de seguridad reciente a la mano realmente puede hacernos la vida más fácil.

Yo en lo personal realizo las copias de seguridad de un solo sitio todos los lunes por la mañana, pero es posible que desees realizarlas con mayor frecuencia dependiendo de que tan seguido se actualiza el contenido de tu sitio.

Para configurar las copias de seguridad de un solo sitio, primero creamos un nuevo directorio dentro del directorio raíz del sitio.

sudo mkdir backups
sudo chown -R $USER:$USER /var/www/backups

Notarás lo limpio que se ve la estructura del directorio.

backup1

Ahora crearemos un archivo nuevo llamado backup.sh.

sudo nano backup.sh

Pega el siguiente contenido en el archivo, Asegurándote de actualizar el path apuntando a tu sitio.

Presiona Ctrl X seguido de Y para guardar el archivo.

sudo chown -R $USER:$USER backup.sh

backup2

Asegúrate de que el archivo recién creado tiene permisos de ejecución.

chmod u+x backup.sh

El último paso es programar el backup script para correr a una hora determinada. Comencemos abriendo el crontab.

crontab -e

Agrega la siguiente línea al final del archivo.

0 5 * * 0 sh /var/www/backup.sh

Esto ejecutará las copias de seguridad cada lunes por la mañana a las 05:00, hora del servidor. Con esto estamos listo para el día del juicio. Si manejas las copias de seguridad de manera diferente, házmelo saber en los comentarios.

Filed Under: Uncategorized Tagged With: Backup, Cron, Digital Ocean, Hosting, Linode, Linux, Server, Ubuntu, WordPress, WordPress Development Tips

Categorías

  • Uncategorized