Your SlideShare is downloading. ×
0
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...
Un caso práctico
Características de la plataforma (I)● 1.980 cursos● 28.000 usuarios● 375.000 archivos en el directorio moodledata (unos 56...
Características de la plataforma (II)● Moodle 1.9.1– Actualización previa desde Moodle 1.7– Código core de Moodle modifica...
Características de la plataforma (II)● Moodle 1.9.1– Base de datos no estándar, tipos de datos e índices incorrectos– Parc...
¿Por dónde empiezo?
Preparar el entorno● Copia de seguridad completa de la plataforma● Clonar servidor de producción para actualización de pru...
¿Es un Moodle estándar? (I)● Determinar versión exacta de Moodle– Editar version.php– $release = 1.9.1+ (Build: 20080604)●...
¿Es un Moodle estándar? (II)● Análisis de código alterado– ¿Para qué sirve?– ¿Es necesario?– ¿Misma funcionalidad alcanzab...
¿Es un Moodle estándar? (III)● Análisis de la base de datos– ¿Tablas personalizadas?● Cuáles son de mods y cuáles personal...
¿Es un Moodle estándar? (IV)● Análisis de base dedatos– diff medianteMySQL Workbench
¿Es un Moodle estándar? (V)Esquema limpioEsquema queteníamosDelta, diferenciaentre ambosDelta + Esquema que teníamos = Esq...
¿Es un Moodle estándar? (VI)
Análisis de Plugins● ¿Qué plugins hay instalados?● ¿Funcionan correctamente?● ¿Existe versión para Moodle 2.x?– No hay ver...
Cambios en Moodle 2.x
Temas● Los themes para 1.9 no son compatibles con 2.x● ¿Realmente los necesitamos?– Muchos profesores prefieren el theme p...
Sistema de archivos (I)● Moodle 1.9– moodledata/<id-curso>/{archivos curso}– moodledata/<id-curso>/moddata/<nombre-mod>/{a...
Sistema de archivos (II)● Moodle 2.x– Hash de ruta: sha1(ruta)– Hash de contenido: sha1_file(“misdatos.txt”)0b5c8aaa6e3eaa...
Sistema de archivos (III)● Moodle 2.x– Mover a carpeta indexada (tabla hash de doble nivel)moodledata/filedir/0b/5c/0b5c8a...
Matriculación● Moodle 1.9– Muchas veces implicaba hacer cambios en el core● Moodle 2.x– Posibilidad de desarrollar plugins...
Transacciones DB● Moodle 1.9:– Ideado para Mysql con MyISAM– No hay transacciones● Moodle 2.x:– Se añaden más SGBD: Postgr...
HTML estricto● Moodle 1.9 y anteriores– Normas de limpieza de input de usuario menos tajantes● Moodle 2.x– Limpieza y form...
Limpieza de primavera
Antes de empezar...● Activar el Modo Mantenimiento– Acceso sólo disponible para admins● Activar el nivel de debugging máximo
Desinstalar todo lo que se pueda● Plugins que no se utlicen● Filtros rotos o innecesarios● Roles personalizados que no se ...
Limpiar la DB (I)● Moodle NO dispone de integridad referencial– Se borra curso con 10 topics, pero no todo lo relacionado:...
Limpiar la DB (II)● Eliminar todas las instancias de módulos no referenciados enningún curso. Por ejemplo, para el módulo ...
Limpiar moodledata (I)● Eliminar directorios de cursos que ya no existan en laplataforma– Por ejemplo, si en la tabla mdl_...
Limpiar moodledata (II)● Caso extremo– Si en la ruta de un curso tenemos dos carpetas con mismo nombre,pero distinto case,...
¿Cambio de dominio?● Los enlaces de Moodle 1.9 son absolutos– Herramienta administrativa replace para búsqueda y reemplazo...
HTML incorrecto (I)● Todos los campos de input de texto almacenados en DBpueden contener HTML no-estricto– En Moodle 2.x p...
HTML incorrecto (II)
HTML incorrecto (III)
Actualizar por fases
Moodle 1.9.1 → 1.9.19+● ¿Moodle no estándar?– Deshacer cambios sobreescribiendo con versión limpia● Cambios a tener en cue...
Moodle 1.9 → 2.2● Conservar sólo config.php● La fase que más tiempo consumirá● Utilizar la versión CLI del actualizador– E...
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 llamad...
¿Hemos acabado?
Tareas posteriores● Planificar script cron.php y desactivar acceso desde web– crontab -u apache -e● Activar soporte reCAPT...
Tareas posteriores (II)● Herramientasdiagnóstico admin– Diagnóstico de roles– Conversión a InnoDB– Profiling de plataforma...
Tareas posteriores● Eliminar directorios vacíos de moodledata● Hacer pruebas de carga y activar módulos de cacheo– Memcach...
¡Hemos acabado!
¿Preguntas?
Info. contacto● Inko Perurena– Twitter: @inkoperurena– Email: inko@elurnet.net
Bonus
Malas prácticas en Plugins (I)● Nanogong– Se publica versión para Moodle 1.9– Se detiene el desarrollo durante 2-3 años– S...
Malas prácticas en Plugins (II)● Nanogong– ¿Dónde está la pega?– Tengo ejercicios hechos con la versión vieja de Nanogong–...
Malas prácticas en Plugins (III)● Nanogong– ¡Función de upgrade.php vacía!/*** Execute nanogong upgrade from the given old...
Referencias● Fuentes de datos adicionales– Moodle docs – http://docs.moodle.org– Wikipedia – http://www.wikipedia.org
Licencia● Todas las fotos e imágenes de esta presentación pertenecen a susrespectivos dueños. Véase:Elurnet SL, Moodle, St...
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
Upcoming SlideShare
Loading in...5
×

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

6,326

Published on

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

Published in: Education
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
6,326
On Slideshare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
98
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

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

  1. 1. Actualización Moodle 1.9 a Moodle 2.4:Planificación, consejos y problemas
  2. 2. Í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
  3. 3. Un caso práctico
  4. 4. 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
  5. 5. 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 alrespecto– Plugins para versiones posteriores de Moodle
  6. 6. 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 xAMPMoodle 1.9.1 + PHP 5.3 = formularios NO funcionan
  7. 7. ¿Por dónde empiezo?
  8. 8. 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. Sivirtualizas, establece cuotas de CPU, E/S y RAM para evitar ladegradación del servicio
  9. 9. ¿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 repositoriode Moodle– git log –grep=20080604● diff entre ambos excluyendo mods, filters y themes
  10. 10. ¿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
  11. 11. ¿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?
  12. 12. ¿Es un Moodle estándar? (IV)● Análisis de base dedatos– diff medianteMySQL Workbench
  13. 13. ¿Es un Moodle estándar? (V)Esquema limpioEsquema queteníamosDelta, diferenciaentre ambosDelta + Esquema que teníamos = Esquema limpio
  14. 14. ¿Es un Moodle estándar? (VI)
  15. 15. 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
  16. 16. Cambios en Moodle 2.x
  17. 17. Temas● Los themes para 1.9 no son compatibles con 2.x● ¿Realmente los necesitamos?– Muchos profesores prefieren el theme por defecto de las nuevasversiones 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 condispositivos móviles
  18. 18. 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 malreferenciados● Duplicidad de archivos● Problemas con rutas demasiado largas● Dependencia de dominio webSon problemas del propio Moodle 1.9,No de migración
  19. 19. 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)
  20. 20. 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 deabstracción)– Independencia respecto a dominio web
  21. 21. Matriculación● Moodle 1.9– Muchas veces implicaba hacer cambios en el core● Moodle 2.x– Posibilidad de desarrollar plugins para cubrir necesidadesespecíficas de la institución
  22. 22. 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
  23. 23. 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 porusuarios
  24. 24. Limpieza de primavera
  25. 25. Antes de empezar...● Activar el Modo Mantenimiento– Acceso sólo disponible para admins● Activar el nivel de debugging máximo
  26. 26. 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● ...
  27. 27. 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 amano para saber cómo están relacionadas las tablas
  28. 28. Limpiar la DB (II)● Eliminar todas las instancias de módulos no referenciados enningún curso. Por ejemplo, para el módulo forum:SELECT id, course, nameFROM mdl_forumWHERE id NOT IN (SELECT instanceFROM mdl_course_modulesWHERE module = (SELECT id FROM mdl_modules WHERE name = forum));
  29. 29. Limpiar moodledata (I)● Eliminar directorios de cursos que ya no existan en laplataforma– Por ejemplo, si en la tabla mdl_course no existe ningún curso conel id=45, eliminaremos el directorio moodledata/45 y todas sussubcarpetas.
  30. 30. 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, buscaresos casos en DB, renombrar y actualizar DB
  31. 31. ¿Cambio de dominio?● Los enlaces de Moodle 1.9 son absolutos– Herramienta administrativa replace para búsqueda y reemplazomasivo: 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 serializadosmdl_block_instancepagetype configdatacourse-view Tzo2OiJvYmplY3QiOjY6e3M6MTk6ImRpc3BsYXlfZGVzY3JpcHRpb24iO3M6MToiMSI7czoxNDoic2hvd251bWVudHJpZXMiO3M6MToiMyI7czo1OiJyc3NpZCI7YToxOntpOjA7czozOiIxMTEiO31zOjU6InRpdGxlIjtzOjA6IiI7czozNDoiYmxvY2tfcnNzX2NsaWVudF9zaG93X2NoYW5uZWxfbGluayI7czoxOiIwIjtzOjM1OiJibG9ja19yc3NfY2xpZW50X3Nob3dfY2hhbm5lbF9pbWFnZSI7czoxOiIxIjt9
  32. 32. HTML incorrecto (I)● Todos los campos de input de texto almacenados en DBpueden contener HTML no-estricto– En Moodle 2.x puede que estos campos rompan el estilo de loscursos por completo, incluso pueden romper la funcionalidad delmismo● Solución: búsqueda masiva de inputs de texto en DB, filtradomediante limpiador HTML, y actualización de campos
  33. 33. HTML incorrecto (II)
  34. 34. HTML incorrecto (III)
  35. 35. Actualizar por fases
  36. 36. 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
  37. 37. 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ódulosfuncionan correctamente
  38. 38. 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 llamadoassign– Usar el asistente de conversión– NOTA: plugins de tipo assignment, intentar actualizarlos antes derealizar esta fase
  39. 39. ¿Hemos acabado?
  40. 40. 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
  41. 41. Tareas posteriores (II)● Herramientasdiagnóstico admin– Diagnóstico de roles– Conversión a InnoDB– Profiling de plataforma– ...
  42. 42. 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
  43. 43. ¡Hemos acabado!
  44. 44. ¿Preguntas?
  45. 45. Info. contacto● Inko Perurena– Twitter: @inkoperurena– Email: inko@elurnet.net
  46. 46. Bonus
  47. 47. 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
  48. 48. 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
  49. 49. 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;}
  50. 50. Referencias● Fuentes de datos adicionales– Moodle docs – http://docs.moodle.org– Wikipedia – http://www.wikipedia.org
  51. 51. Licencia● Todas las fotos e imágenes de esta presentación pertenecen a susrespectivos 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 teindica el autor– Tienes que mantener la misma licencia al distribuir esta obra o susderivados
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×