CRON no funciona

CRON no funciona

de Pedro Alburquerque -
Número de respuestas: 10

Hola a todos,

Administro una instalación moodle y sospecho que el CRON no está corriendo de la manera adecuada. De hecho creo que no corre en absoluto. Expongo mi caso por si alguien puede echarme una mano.

Datos:

  • Trabajo con Moodle 3.5.1, alojado en un servidor compartido (CDmon.com).
  • El alojamiento sólo me permite cronjobs accesibles mediante URL, así que tengo configurado un cronjob en mi alojamiento con una URL del tipo: "http://mi-alojamiento/moodle/admin/cron.php?password=opensesame". Este cronjob está configurado para que se ejecute cada 5 minutos y me envíe un correo electrónico con los resultados. Ya tengo acumulados miles de correos con los resultados: "Server Time: Sun, 17 May 2020 19:13:04 +0200"l La hora va cambiando y es distinta en cada correo, lógicamente.
  • Tengo configurado moodle para permitir la ejecución de cron mediante acceso web (en Administración del sitio > Seguridad > Políticas del sitio)
    • Ejecución de cron sólo mediante comandos: "desmarcado", es decir: NO
    • Contraseña de cron para acceso remoto: opensesame
    • Permitir 'Ejecutar ahora' (Run now) para tareas programadas:
  • Por otro lado en "Administrador del sitio > Servidor > Tareas programadas" no me aparece absolutamente nada, sólo una página en blanco y nada más, ni botones ni nada de nada. Esto me hace sospechar que algo no está bien en moodle.
  • En "Administración > Notificaciones" aparece el aviso: El script de mantenimiento del cron.php no ha sido ejecutado durante las últimas 24 horas. Si pincho en el enlace para correr el cron, da la impresión de que se pone en marcha cron y únicamente me devuelve el mensaje de arriba:
Server Time: Sun, 17 May 2020 19:13:04 +0200
  • Las copias de seguridad automáticas de los cursos hace tiempo (meses) que no se realizan. Tengo esta configuración en "Administración del sitio > Curso > Copias de seguridad > Copias de seguridad programada":
    • Activo: Manual (¿quizá esto debería estar en "Activado"?)
    • Programación: Todos los días
    • Ejecutar a las: 3:00
    • Almacén de copias de seguridad automáticas: Área de archivos de copia de seguridad
    • Guardar en: "vacío"
    • Número máximo de copias de seguridad guardadas: 1
    • Borrar las copias de seguridad más antiguas que: 2 días
    • Número mínimo de copias de seguridad guardadas: 1
    • ...
  • No se envían mensajes (correo) a los usuarios cuando se publica en los foros, aunque la suscripción esté configurada en "forzosa". Esta tarea la ejecuta el cron, por lo que es otro indicador de que algo no funciona bien.
  • El sistema de mensajería sí parece funcionar bien, a los profesores les llegan los mensajes de los alumnos prácticamente de forma instantánea. Supongo que en el otro sentido, del profesor hacia el alumno funciona igualmente bien.
Por todos los indicios:
  • Creo que en la parte del servidor está funcionando bien, el crontab llama al cron para que se ejecute como se ha programado.
  • El fallo debe estar en la parte de moodle. De alguna manera el cron no ejecuta nada, es como si no existiese, le faltase algo o estuviese mal configurado.
He revisado todas las configuraciones habidas y por haber. He leído la documentación sobre cron en la documentación de moodle (en español e inglés). He leído en los foros muchos post sobre el cron... Y no doy pie con bola.

¿Alguien puede echarme una mano, por favor?

Muchas gracias.

Promedio de valoraciones: -
En respuesta a Pedro Alburquerque

Re: CRON no funciona

de Luis rd -
Hola Pedro, se por el infierno que estás pasando, yo perdí evaluaciones, en estos foros nunca encontré la respuesta, pues son muy técnicos y les cuesta descender a nivel mortales. moodle es un laberinto intrincado. Pero te dejo el link que me ayudo ojalá te sirva amigo:
https://virtumedia.wordpress.com/2018/03/12/configurar-el-proceso-cron-de-moodle/
En respuesta a Luis rd

Re: CRON no funciona

de Pedro Alburquerque -
Gracias por responder Luís, ahora me siento un poco menos solo.

He leído el enlace que me envías. El problema no es el acceso a la aplicación CRON, ni configurarla en el servidor. En el lado del servidor ya está configurado el servicio CRON y se ejecuta correctamente. El problema yo creo que está en el lado de MOODLE, ya que cuando la rutina programada en el servidor llama al cron de moodle, éste solo devuelve la hora del servidor y no ejecuta nada más.

Además, la ruta Administración del sitio > Servidor > Tareas programadas me lleva a una pantalla completamente vacía:

Captura de pantalla
Al ejecutar el comando cron manualmente vía web se obtiene esto:

Otra captura de pantalla
No sé lo que está ocurriendo, da la impresión de que el cron.php inicia su ejecución y se interrumpe nada más comenzar, pero no sé porqué ocurre esto.

En respuesta a Pedro Alburquerque

Re: CRON no funciona

de Jose Luis Martin Jimenez -
Imagen de Moodlers de gran ayuda
Hola, Pedro.
Más que la respuesta del cron, me llama la atención la otra imagen, en la que "Tareas programadas" está vacía. Efectivamente, a mí también me parece que hay algo mal en tu instalación de Moodle.
He ido a la página de tu hosting (cdmon.com) y he visto que ofrecen instaladores automáticos, por eso, mi pregunta ...
¿Cómo instalaste tu plataforma Moodle, mediante un instalador automático o paso a paso como se indica en las guías de la Documentación oficial?

El que no se muestre en pantalla algo que forma parte estándar de Moodle, puede deberse a muchas razones, entre ellas que falten archivos, o que los permisos de acceso no sean correctos, etc.

Saludos
En respuesta a Jose Luis Martin Jimenez

Re: CRON no funciona

de Pedro Alburquerque -
Hola José Luís, gracias por tu interés.

Siempre he Instalado Moodle yo mismo, paso a paso siguiendo la documentación oficial, desde la primera vez que lo instalé (versión 1.x) hasta la actual. No me gustan los instaladores automáticos de los alojamientos web, no suelen estar actualizados y no me dejan controlar el proceso de instalación. La instalación actual es una actualización de una versión anterior que realicé en julio de 2018. No me había percatado del fallo del cron hasta hace poco, cuando los profesores se quejaban de que los mensajes de los foros no llegaban a los alumnos.

He mirado los archivos del alojamiento y, a priori, no veo nada raro.

Me estoy planteando actualizar la plataforma a una versión superior, pero me frena el hecho de que ahora, con la situación actual, se está usando constantemente la plataforma y tendría que hacerlo un fin de semana, de madrugada, y cruzando los dedos para que nada falle.

Un saludo.
En respuesta a Pedro Alburquerque

Re: CRON no funciona

de Jose Luis Martin Jimenez -
Imagen de Moodlers de gran ayuda
De nada, Pedro.
Si esos fallos no ocurrían antes, puede ser que el problema haya surgido a raiz de alguna actualización en los servidores de tu alojamiento.
¿Has revisado el apartado "Entorno" para comprobar si hay algún aviso de problema?
¿Puedes poner aquí las versiones de PHP y MySQL (o la base de datos que sea) que te muestra esa pantalla "Entorno"?

En mi institución también tenemos todavía nuestra plataforma principal Moodle en la versión 3.5 (concretamente 3.5.6) porque es LTS. También tenemos que programar las actualizaciones para fechas con menos carga de usuarios (verano, generalmente). Pero lo que sí hacemos mucho tiempo antes de actualizar es "clonar" todo (base de datos, carpeta moodle y moodledata) para tener la "plataforma B" y simular ahí todo el proceso de actualización. Si tienes suficiente espacio y recursos en el alojamiento, te serviría para ver si se corrigen problemas o te encuentras inconvenientes en el proceso.

Saludos
En respuesta a Jose Luis Martin Jimenez

Re: CRON no funciona

de Pedro Alburquerque -
Pues no hay ningún aviso "grave". Está todo OK salvo dos cuestiones "a revisar":

  • unsupported_db_table_row_format (Su base de datos tiene tablas utilizando el formato de fichero Antelope. Se le recomienda convertir las tablas al formato de fichero Barracuda. Revise la documentación Administración mediante línea de comandos para detalles de la herramienta para convertir tablas InnoDB a Barracuda).
  • mysql_full_unicode_support (La configuración actual de MySQL o MariaDB está usando 'utf8'. Este set de caracteres no soporta caracteres de 4 byte los cuales incluyen algunos emoji. Si intenta usar esos caracteres finalizará con un error al actualizar una fila, y toda la información que esté siendo enviada a la base de datos se perderá. Por favor considere cambiar la configuración a 'utf8mb4'. Mire la documentación para más información).
Versión de PHP: 7.0.22
Versión de mysql: 5.5.57

Yo también pensaba en el verano para hacer la actualización...
Como tengo algunos avisos con las tablas de la base de datos que no sé como solucionar fácilmente y el gran problema del cron, en lugar de actualizar la plataforma actual, estaba pensando en hacer esto:

  • Ahora tengo la plataforma instalada en iesmiguelhernandez.es/moodle2 (el 2 viene del salto de la versión 1 a la 2, donde hice una instalación limpia nueva)
  • Prefijo de las "cookies" mdl2 (por lo mismo)
  • Había pensado hacer una instalación nueva limpia en iesmiguelhernandez.es/moodle
  • Poner como prefijo de las cookies mdl, para mantener temporalmente las dos instalaciones.
  • Hacer copias de seguridad de los cursos que realmente se están usando y restaurarlos en la nueva instalación
  • Hacer una copia de seguridad de la página principal del sitio y restaurarla en la nueva instalación
  • Crear un curso vacío en la antigua plataforma, matricular a todos los usuarios y hacer una copia de seguridad en la nueva plataforma para importar a todos los usuarios, cohortes, etc.
Esto no lo he pensando muy detenidamente, seguramente se me escapa alguna cosa. Tampoco tengo claro que sea buena idea.

Un saludo.

En respuesta a Pedro Alburquerque

Re: CRON no funciona

de Jose Luis Martin Jimenez -
Imagen de Moodlers de gran ayuda
Bueno, es mejor no tener avisos de posibles problemas, por si acaso están relacionados con lo que te ocurre (tal vez no, o sí 🤔)

Lo que planteas de la segunda plataforma me parece muy oportuno, aunque yo lo haría un poco distinto, para simular la actualización de lo que tienes, de la forma más sencilla:
  • Exportar la B.D. completa e Importarla después con un nombre diferente, claro. Tendrás en el mismo servidor MySQL la "basedatosantigua" y "basedatosnueva" iguales, en principio. Puedes arle permisos en esa Base de datos al mismo usuario mysql que usas actualmente.
  • Copiar la carpeta/directorio "moodledata" para tener "moodledatanueva" (como le llames) al mismo nivel los dos.
  • Descargar el paquete Moodle 3.5.12+ y descomprimir en una carpeta/directorio al mismo nivel que tu carpeta "moodle" actual.
  • Ten en cuenta que con PHP 7.0 no puedes actualizar a versiones de Moodle más actuales. Necesitarías tener mínimo PHP 7.1
    https://download.moodle.org/releases/security/
  • Desde la administración de tu Moodle actual, revisa todos los "plugins no estándar" que tienes instalados, y copia las carpetas de cada uno a la del "nuevo" Moodle (ya sea en .../mod .../blocks .../theme etc.)
  • Copia el archivo "config.php" del antiguo Moodle en la del nuevo que has descargado. 
  • MUY IMPORTANTE: Antes que nada, edita ese archivo "config.php" para cambiar: nombre de la nueva base de datos, nombre de la nueva carpeta moodledata, URL del nuevo moodle.
  • Revisa los permisos (0750 para la carpeta y subcarpetas del moodlenuevo, 0770 para la carpeta moodledata y todas las que cuelgan de ella).

Creo que es todo. Tu Moodle antiguo seguiría como está. Al entrar al nuevo por primera vez, se actualizará a la última "actualización" de la versión 3.5 y podrás probar si el cron funciona, y después, seguir los procedimientos para corregir los dos "Avisos" que tienes en Entorno. Ambos están explicados en la documentación oficial: https://docs.moodle.org/35/en/Main_page

Suerte


En respuesta a Jose Luis Martin Jimenez

Re: CRON no funciona

de Pedro Alburquerque -
Gracias josé Luís por tus recomendaciones, me parecen muy acertadas, las tendré en cuenta.

En mi alojamiento me van a migrar a un servidor con los requerimientos de php y mysql que necesita la versión 3.8 y voy a actualizar (o instalar desde cero) la última versión de moodle. Para hacer todo esto esperaré hasta julio, con los alumnos de "vacaciones", momento en el que podré poner la plataforma en mantenimiento sin muchas molestias para los usuarios.

Gracias por tus aportaciones.

Saludos.
En respuesta a Pedro Alburquerque

Re: CRON no funciona

de Martín Franco -

Buenas tardes Pedro, actualmente experimento el mismo inconveniente, cron no corre correctamente.

Podrías indicarme si resolviste el problema y donde encontraste la falla?

Sería de gran utilidad.

Saludos.

En respuesta a Martín Franco

Re: CRON no funciona

de Pedro Alburquerque -

Hola Martín,

Pues sí el problema se solucionó y ahora el cron corre bien, tengo tareas programadas, etc.

Lo que no sé decirte es exactamente como ha vuelto a funcionar todo...

Yo creo que ha sido cosa del servidor donde tengo alojado el moodle. Tenía en mente hacer una actualización de moodle y para eso necesitaba una versión superior de PHP, por lo que pedí a los reponsables del alojamiento que actualizasen PHP o migrasen mi instalación a otro servidor con una versión de PHP superior (hicieron esto último). Durante el proceso hubo algunos "accidentes" con la BBDD y otros fallos que no vienen a cuento, pero resulta que en ese proceso de migración, cron empezó a funcionar el solito. Por eso te digo que no sé exactamente cómo se solucionó el problema concreto del cron. Misterios de la informática y los servidores.

Siento no poder darte más información.

Un saludo. Ánimo.