Actualización Moodle 1.9 a Moodle 2.4: Planificación, consejos y problemas

53

description

Documentación de la ponencia realizada por http://elurnet.net en la Moodlemoot Euskadi celebrada el 14 de Junio de 2013. A raíz de nuestra propia experiencia y de un caso real, exponemos el procedimiento a seguir a la hora de abordar una actualización de la plataforma Moodle; desde la planificación, poniendo sobre la mesa posibles problemas y dando una serie de consejos para poder realizar el trabajo con éxito

Transcript of Actualización Moodle 1.9 a Moodle 2.4: Planificación, consejos y problemas

Page 1: Actualización Moodle 1.9 a Moodle 2.4:  Planificación, consejos y problemas
Page 2: Actualización Moodle 1.9 a Moodle 2.4:  Planificación, consejos y problemas

Actualización Moodle 1.9 a Moodle 2.4:Planificación, consejos y problemas

Page 3: Actualización Moodle 1.9 a Moodle 2.4:  Planificación, consejos y problemas

Índice

● Características de un caso práctico● Pasos iniciales. Determinar si Moodle ha sido modificado● Cambios en Moodle 2.x que afectan a la actualización● Limpieza previa de DB y moodledata● Actualización por fases● Tareas posteriores

Page 4: Actualización Moodle 1.9 a Moodle 2.4:  Planificación, consejos y problemas

Un caso práctico

Page 5: Actualización Moodle 1.9 a Moodle 2.4:  Planificación, consejos y problemas

Características de la plataforma (I)

● 1.980 cursos● 28.000 usuarios● 375.000 archivos en el directorio moodledata (unos 56GB)● Base de datos de 18GB

Page 6: Actualización Moodle 1.9 a Moodle 2.4:  Planificación, consejos y problemas

Características de la plataforma (II)

● Moodle 1.9.1– Actualización previa desde Moodle 1.7

– Código core de Moodle modificado, no existe documentación al respecto

– Plugins para versiones posteriores de Moodle

Page 7: Actualización Moodle 1.9 a Moodle 2.4:  Planificación, consejos y problemas

Características de la plataforma (II)

● Moodle 1.9.1– Base de datos no estándar, tipos de datos e índices incorrectos

– Parches puntuales para arreglar compatibilidad con xAMP

Moodle 1.9.1 + PHP 5.3 = formularios NO funcionan

Page 8: Actualización Moodle 1.9 a Moodle 2.4:  Planificación, consejos y problemas

¿Por dónde empiezo?

Page 9: Actualización Moodle 1.9 a Moodle 2.4:  Planificación, consejos y problemas

Preparar el entorno

● Copia de seguridad completa de la plataforma● Clonar servidor de producción para actualización de prueba

– Las operaciones de actualización consumen muchos recursos. Si virtualizas, establece cuotas de CPU, E/S y RAM para evitar la degradación del servicio

Page 10: Actualización Moodle 1.9 a Moodle 2.4:  Planificación, consejos y problemas

¿Es un Moodle estándar? (I)

● Determinar versión exacta de Moodle– Editar version.php

– $release = '1.9.1+ (Build: 20080604)'

● Encontrar copia de código fuente sin alterar en el repositorio de Moodle– git log –grep='20080604'

● diff entre ambos excluyendo mods, filters y themes

Page 11: Actualización Moodle 1.9 a Moodle 2.4:  Planificación, consejos y problemas

¿Es un Moodle estándar? (II)

● Análisis de código alterado– ¿Para qué sirve?

– ¿Es necesario?

– ¿Misma funcionalidad alcanzable mediante plugins en versiones 2.x?● Plugins de matriculación● Plugins para repositorios

● Planificación de tareas adicionales para estas alteraciones

Page 12: Actualización Moodle 1.9 a Moodle 2.4:  Planificación, consejos y problemas

¿Es un Moodle estándar? (III)

● Análisis de la base de datos– ¿Tablas personalizadas?

● Cuáles son de mods y cuáles personalizaciones del core

– ¿Son correctos los tipos de datos e índices?

– ¿Juego de caracteres correcto (UTF-8 vs. LATIN-1)?

– ¿Se puede eliminar alguna tabla?

Page 13: Actualización Moodle 1.9 a Moodle 2.4:  Planificación, consejos y problemas

¿Es un Moodle estándar? (IV)

● Análisis de base de datos– diff mediante

MySQL Workbench

Page 14: Actualización Moodle 1.9 a Moodle 2.4:  Planificación, consejos y problemas

¿Es un Moodle estándar? (V)

Esquema limpio

Esquema que teníamos

Delta, diferencia entre ambos

Delta + Esquema que teníamos = Esquema limpio

Page 15: Actualización Moodle 1.9 a Moodle 2.4:  Planificación, consejos y problemas

¿Es un Moodle estándar? (VI)

Page 16: Actualización Moodle 1.9 a Moodle 2.4:  Planificación, consejos y problemas

Análisis de Plugins

● ¿Qué plugins hay instalados?● ¿Funcionan correctamente?● ¿Existe versión para Moodle 2.x?

– No hay versión o mecanismo de actualización: Nanogong

● ¿No se utiliza? Mejor desinstalar que actualizar

Page 17: Actualización Moodle 1.9 a Moodle 2.4:  Planificación, consejos y problemas

Cambios en Moodle 2.x

Page 18: Actualización Moodle 1.9 a Moodle 2.4:  Planificación, consejos y problemas

Temas

● Los themes para 1.9 no son compatibles con 2.x● ¿Realmente los necesitamos?

– Muchos profesores prefieren el theme por defecto de las nuevas versiones de Moodle

– Actualizar un número X de themes supone más tiempo y dinero● Es “recomendable” que los themes 2.x sean adaptables y compatibles con

dispositivos móviles

Page 19: Actualización Moodle 1.9 a Moodle 2.4:  Planificación, consejos y problemas

Sistema de archivos (I)

● Moodle 1.9– moodledata/<id-curso>/{archivos curso}

– moodledata/<id-curso>/moddata/<nombre-mod>/{archivos mod}

– No hay sistema de referenciación explícito en la DB● Archivos borrados de sistema de archivos, movidos a otro directorio y mal

referenciados● Duplicidad de archivos● Problemas con rutas demasiado largas● Dependencia de dominio web

Son problemas del propio Moodle 1.9,No de migración

Page 20: Actualización Moodle 1.9 a Moodle 2.4:  Planificación, consejos y problemas

Sistema de archivos (II)

● Moodle 2.x– Hash de ruta: sha1(ruta)

– Hash de contenido: sha1_file(“misdatos.txt”)

0b5c8aaa6e3eaa8d6f7cb1da2d221ab1929e8f83

– Renombrar archivo$hash_contenido = sha1_file($archivo_usuario)rename($archivo_usuario, $hash_contenido)

Page 21: Actualización Moodle 1.9 a Moodle 2.4:  Planificación, consejos y problemas

Sistema de archivos (III)

● Moodle 2.x– Mover a carpeta indexada (tabla hash de doble nivel)

moodledata/filedir/0b/5c/0b5c8aaa6e3eaa8d6f7cb1da2d221ab1929e8f83

– Tabla específica para referenciar todos los archivos: mdl_file● Se evita duplicidad → ahorro de espacio● Archivos correctamente referenciados en todo momento● Aislar las operaciones del usuario del sistema de ficheros subyacente (capa de

abstracción)

– Independencia respecto a dominio web

Page 22: Actualización Moodle 1.9 a Moodle 2.4:  Planificación, consejos y problemas

Matriculación

● Moodle 1.9– Muchas veces implicaba hacer cambios en el core

● Moodle 2.x– Posibilidad de desarrollar plugins para cubrir necesidades

específicas de la institución

Page 23: Actualización Moodle 1.9 a Moodle 2.4:  Planificación, consejos y problemas

Transacciones DB

● Moodle 1.9:– Ideado para Mysql con MyISAM

– No hay transacciones

● Moodle 2.x:– Se añaden más SGBD: PostgreSQL, MariaDB...

– Opción de transacciones con MySQL + InnoDB

Page 24: Actualización Moodle 1.9 a Moodle 2.4:  Planificación, consejos y problemas

HTML estricto

● Moodle 1.9 y anteriores– Normas de limpieza de input de usuario menos tajantes

● Moodle 2.x– Limpieza y formateo estricto de código HTML introducido por

usuarios

Page 25: Actualización Moodle 1.9 a Moodle 2.4:  Planificación, consejos y problemas

Limpieza de primavera

Page 26: Actualización Moodle 1.9 a Moodle 2.4:  Planificación, consejos y problemas

Antes de empezar...

● Activar el Modo Mantenimiento– Acceso sólo disponible para admins

● Activar el nivel de debugging máximo

Page 27: Actualización Moodle 1.9 a Moodle 2.4:  Planificación, consejos y problemas

Desinstalar todo lo que se pueda

● Plugins que no se utlicen● Filtros rotos o innecesarios● Roles personalizados que no se vayan a utilizar● Usuarios inactivos desde hace tiempo● Cursos que ya no sirven● ...

Page 28: Actualización Moodle 1.9 a Moodle 2.4:  Planificación, consejos y problemas

Limpiar la DB (I)

● Moodle NO dispone de integridad referencial– Se borra curso con 10 topics, pero no todo lo relacionado:

actividades, recursos ...

● Conviene hacer un modelo entidad/relación esquemático a mano para saber cómo están relacionadas las tablas

Page 29: Actualización Moodle 1.9 a Moodle 2.4:  Planificación, consejos y problemas

Limpiar la DB (II)

● Eliminar todas las instancias de módulos no referenciados en ningún curso. Por ejemplo, para el módulo forum:

SELECT id, course, name FROM mdl_forum WHERE id NOT IN (SELECT instance FROM mdl_course_modules WHERE module = (SELECT id FROM mdl_modules WHERE name = 'forum'));

Page 30: Actualización Moodle 1.9 a Moodle 2.4:  Planificación, consejos y problemas

Limpiar moodledata (I)

● Eliminar directorios de cursos que ya no existan en la plataforma– Por ejemplo, si en la tabla mdl_course no existe ningún curso con

el id=45, eliminaremos el directorio moodledata/45 y todas sus subcarpetas.

Page 31: Actualización Moodle 1.9 a Moodle 2.4:  Planificación, consejos y problemas

Limpiar moodledata (II)

● Caso extremo– Si en la ruta de un curso tenemos dos carpetas con mismo nombre,

pero distinto case, podemos tener problemasmoodledata/4561/DATOSALUMNO/evaluación.pdfmoodledata/4561/Datosalumno/Evaluación.pdf

– Para Moodle 1.9, para Moodle 2.x iguales

– Solución: crear script para detectar casos problemáticos, buscar esos casos en DB, renombrar y actualizar DB

Page 32: Actualización Moodle 1.9 a Moodle 2.4:  Planificación, consejos y problemas

¿Cambio de dominio?

● Los enlaces de Moodle 1.9 son absolutos– Herramienta administrativa replace para búsqueda y reemplazo

masivo: http://dominiomoodle/admin/tool/replace.php

– Caso extremo: Bloque de tipo HTML en Moodle● ¿El reemplazo masivo no funciona, por qué?● Contenidos se guardan codificados en BASE64 y serializados

mdl_block_instance

pagetype configdata

course-view Tzo2OiJvYmplY3QiOjY6e3M6MTk6ImRpc3BsYXlfZGVzY3JpcHRpb24iO3M6MToiMSI7czoxNDoic2hvd251bWVudHJpZXMiO3M6MToiMyI7czo1OiJyc3NpZCI7YToxOntpOjA7czozOiIxMTEiO31zOjU6InRpdGxlIjtzOjA6IiI7czozNDoiYmxvY2tfcnNzX2NsaWVudF9zaG93X2NoYW5uZWxfbGluayI7czoxOiIwIjtzOjM1OiJibG9ja19yc3NfY2xpZW50X3Nob3dfY2hhbm5lbF9pbWFnZSI7czoxOiIxIjt9

Page 33: Actualización Moodle 1.9 a Moodle 2.4:  Planificación, consejos y problemas

HTML incorrecto (I)

● Todos los campos de input de texto almacenados en DB pueden contener HTML no-estricto– En Moodle 2.x puede que estos campos rompan el estilo de los

cursos por completo, incluso pueden romper la funcionalidad del mismo

● Solución: búsqueda masiva de inputs de texto en DB, filtrado mediante limpiador HTML, y actualización de campos

Page 34: Actualización Moodle 1.9 a Moodle 2.4:  Planificación, consejos y problemas

HTML incorrecto (II)

Page 35: Actualización Moodle 1.9 a Moodle 2.4:  Planificación, consejos y problemas

HTML incorrecto (III)

Page 36: Actualización Moodle 1.9 a Moodle 2.4:  Planificación, consejos y problemas

Actualizar por fases

Page 37: Actualización Moodle 1.9 a Moodle 2.4:  Planificación, consejos y problemas

Moodle 1.9.1 → 1.9.19+

● ¿Moodle no estándar?– Deshacer cambios sobreescribiendo con versión limpia

● Cambios a tener en cuenta– Salt para contraseñas

– Políticas de passwords

– Versión más reciente de TinyMCE● Hasta 1.9.9 no se muestra en Chrome

Page 38: Actualización Moodle 1.9 a Moodle 2.4:  Planificación, consejos y problemas

Moodle 1.9 → 2.2

● Conservar sólo config.php● La fase que más tiempo consumirá● Utilizar la versión CLI del actualizador

– Evitar timeouts y problemas de conectividad

– <moodle>/admin/cli/upgrade.php

● Tomarse un tiempo para revisar los logs y que los módulos funcionan correctamente

Page 39: Actualización Moodle 1.9 a Moodle 2.4:  Planificación, consejos y problemas

Moodle 2.2 → 2.3 → 2.4

● Se añade el plugin Book al core de Moodle● Se añade una nueva versión del módulo assignment llamado assign– Usar el asistente de conversión

– NOTA: plugins de tipo assignment, intentar actualizarlos antes de realizar esta fase

Page 40: Actualización Moodle 1.9 a Moodle 2.4:  Planificación, consejos y problemas

¿Hemos acabado?

Page 41: Actualización Moodle 1.9 a Moodle 2.4:  Planificación, consejos y problemas

Tareas posteriores

● Planificar script cron.php y desactivar acceso desde web– crontab -u apache -e

● Activar soporte reCAPTCHA– Eliminar SPAM previo usando herr. adm.

http://moodle/admin/tool/spamcleaner.php

● Comprobar el correcto funcionamiento de los cursos– Reconstruir caché del curso: borrar campo modinfo de mdl_course

– Plugin rebuildcoursecache: https://moodle.org/plugins/view.php?plugin=tool_rebuildcoursecache

Page 42: Actualización Moodle 1.9 a Moodle 2.4:  Planificación, consejos y problemas

Tareas posteriores (II)

● Herramientas diagnóstico admin– Diagnóstico de roles

– Conversión a InnoDB

– Profiling de plataforma

– ...

Page 43: Actualización Moodle 1.9 a Moodle 2.4:  Planificación, consejos y problemas

Tareas posteriores

● Eliminar directorios vacíos de moodledata● Hacer pruebas de carga y activar módulos de cacheo

– Memcache, MongoDB ...

● Requerir cambio de password a todos los usuarios– Políticas de password reforzadas + salt

Page 44: Actualización Moodle 1.9 a Moodle 2.4:  Planificación, consejos y problemas

¡Hemos acabado!

Page 45: Actualización Moodle 1.9 a Moodle 2.4:  Planificación, consejos y problemas

¿Preguntas?

Page 46: Actualización Moodle 1.9 a Moodle 2.4:  Planificación, consejos y problemas

Info. contacto

● Inko Perurena– Twitter: @inkoperurena

– Email: [email protected]

Page 47: Actualización Moodle 1.9 a Moodle 2.4:  Planificación, consejos y problemas

Bonus

Page 48: Actualización Moodle 1.9 a Moodle 2.4:  Planificación, consejos y problemas

Malas prácticas en Plugins (I)

● Nanogong– Se publica versión para Moodle 1.9

– Se detiene el desarrollo durante 2-3 años

– Se anuncia nueva y mejorada versión de Nanogong● Compatible con Moodle 1.9 y con Moodle 2.x● Múltiples optimizaciones de rendimiento y nuevas opciones

Page 49: Actualización Moodle 1.9 a Moodle 2.4:  Planificación, consejos y problemas

Malas prácticas en Plugins (II)

● Nanogong– ¿Dónde está la pega?

– Tengo ejercicios hechos con la versión vieja de Nanogong

– Instalo la versión nueva de Nanogong● Instalación → OK● Ejercicios previos → Mal

Page 50: Actualización Moodle 1.9 a Moodle 2.4:  Planificación, consejos y problemas

Malas prácticas en Plugins (III)

● Nanogong– ¡Función de upgrade.php vacía!

/** * Execute nanogong upgrade from the given old version * * @param int $oldversion * @return bool */function xmldb_nanogong_upgrade($oldversion) { return true;}

Page 51: Actualización Moodle 1.9 a Moodle 2.4:  Planificación, consejos y problemas
Page 52: Actualización Moodle 1.9 a Moodle 2.4:  Planificación, consejos y problemas

Referencias

● Fuentes de datos adicionales– Moodle docs – http://docs.moodle.org

– Wikipedia – http://www.wikipedia.org

Page 53: Actualización Moodle 1.9 a Moodle 2.4:  Planificación, consejos y problemas

Licencia

● Todas las fotos e imágenes de esta presentación pertenecen a sus respectivos dueños. Véase:

Elurnet SL, Moodle, Stéfan (flickr), 20th Century Fox, ...

● El resto de contenidos está sujeto a CC-BY-SA 3.0

– Eres libre de copiar, distribuir y presentar esta obra en público

– Eres libre de crear obras derivadas

– Tienes que reconocer la autoría de la obra, de la manera que te indica el autor

– Tienes que mantener la misma licencia al distribuir esta obra o sus derivados