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

on

  • 5,388 views

Documentación de la ponencia realizada por http://elurnet.net en la Moodlemoot Euskadi celebrada el 14 de Junio de 2013. ...

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

Statistics

Views

Total Views
5,388
Views on SlideShare
4,694
Embed Views
694

Actions

Likes
3
Downloads
75
Comments
0

4 Embeds 694

http://elurnet.net 679
http://www.esle.eu 9
https://twitter.com 5
http://cloud.feedly.com 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

CC Attribution-ShareAlike LicenseCC Attribution-ShareAlike License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

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 Presentation Transcript

  • 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
  • Un caso práctico
  • 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
  • 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
  • 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
  • ¿Por dónde empiezo?
  • 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
  • ¿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
  • ¿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
  • ¿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?
  • ¿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 = Esquema limpio
  • ¿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 versión o mecanismo de actualización: Nanogong● ¿No se utiliza? Mejor desinstalar que actualizar
  • 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 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
  • 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
  • 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)
  • 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
  • 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
  • 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
  • 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
  • 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 vayan a utilizar● Usuarios inactivos desde hace tiempo● Cursos que ya no sirven● ...
  • 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
  • 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));
  • 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.
  • 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
  • ¿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
  • 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
  • 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 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
  • 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
  • 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
  • ¿Hemos acabado?
  • 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
  • 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– Memcache, MongoDB ...● Requerir cambio de password a todos los usuarios– Políticas de password reforzadas + salt
  • ¡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– 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
  • 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
  • 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;}
  • 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é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