SlideShare une entreprise Scribd logo
1  sur  53
Télécharger pour lire hors ligne
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 al
respecto
– 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 xAMP
Moodle 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. Si
virtualizas, establece cuotas de CPU, E/S y RAM para evitar la
degradació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 repositorio
de 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 de
datos
– diff mediante
MySQL Workbench
¿Es un Moodle estándar? (V)
Esquema limpio
Esquema que
teníamos
Delta, diferencia
entre ambos
Delta + 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 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
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
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/0b5c8aaa6e3eaa8d6f7cb1da2d221ab1929
e8f83
– 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
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
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 por
usuarios
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 a
mano para saber cómo están relacionadas las tablas
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'));
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.
Limpiar moodledata (II)
● Caso extremo
– Si en la ruta de un curso tenemos dos carpetas con mismo nombre,
pero distinto case, podemos tener problemas
moodledata/4561/DATOSALUMNO/evaluación.pdf
moodledata/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
¿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 Tzo2OiJvYmplY3QiOjY6e3M6MTk6ImRpc3BsYXlfZGVzY3JpcHRpb24iO3M6MT
oiMSI7czoxNDoic2hvd251bWVudHJpZXMiO3M6MToiMyI7czo1OiJyc3NpZCI7YT
oxOntpOjA7czozOiIxMTEiO31zOjU6InRpdGxlIjtzOjA6IiI7czozNDoiYmxvY2tfcnN
zX2NsaWVudF9zaG93X2NoYW5uZWxfbGluayI7czoxOiIwIjtzOjM1OiJibG9ja19y
c3NfY2xpZW50X3Nob3dfY2hhbm5lbF9pbWFnZSI7czoxOiIxIjt9
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
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ódulos
funcionan 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 llamado
assign
– Usar el asistente de conversión
– NOTA: plugins de tipo assignment, intentar actualizarlos antes de
realizar 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)
● Herramientas
diagnó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 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

Contenu connexe

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

Introducció al moodle
Introducció al moodle Introducció al moodle
Introducció al moodle Avel·lí
 
Introduccion técnica a Drupal
Introduccion técnica a DrupalIntroduccion técnica a Drupal
Introduccion técnica a DrupalPedro Cambra
 
Experiencia de migración de Moodle 1.9 a 2.x en Mondragon Unibertsitatea (Moo...
Experiencia de migración de Moodle 1.9 a 2.x en Mondragon Unibertsitatea (Moo...Experiencia de migración de Moodle 1.9 a 2.x en Mondragon Unibertsitatea (Moo...
Experiencia de migración de Moodle 1.9 a 2.x en Mondragon Unibertsitatea (Moo...Iñigo Zendegi Urzelai
 
e-Ghost 2014: introducción al desarrollo de módulos en drupal 7
e-Ghost 2014: introducción al desarrollo de módulos en drupal 7e-Ghost 2014: introducción al desarrollo de módulos en drupal 7
e-Ghost 2014: introducción al desarrollo de módulos en drupal 7Keopx
 
Introducción a la programación para joomla
Introducción a la programación para joomlaIntroducción a la programación para joomla
Introducción a la programación para joomlaRoberto Segura
 
Programación de módulos para Drupal 7
Programación de módulos para Drupal 7Programación de módulos para Drupal 7
Programación de módulos para Drupal 7Cristian Mamani
 
¡This is drupal! - Global Training Days
¡This is drupal! - Global Training Days¡This is drupal! - Global Training Days
¡This is drupal! - Global Training DaysLa Drupalera
 
[DrupalCampSpain2023] Introducción al desarrollo de módulos en Drupal 10
[DrupalCampSpain2023] Introducción al desarrollo de módulos en Drupal 10[DrupalCampSpain2023] Introducción al desarrollo de módulos en Drupal 10
[DrupalCampSpain2023] Introducción al desarrollo de módulos en Drupal 10Keopx
 
Haciendo que tu entorno de desarrollo de Drupal rocks
Haciendo que tu entorno de desarrollo de Drupal rocksHaciendo que tu entorno de desarrollo de Drupal rocks
Haciendo que tu entorno de desarrollo de Drupal rocksSacha Chua
 
DrupalCamp Spain 2014: Introducción al desarrollo de módulos en Drupal 7
DrupalCamp Spain 2014: Introducción al desarrollo de módulos en Drupal 7DrupalCamp Spain 2014: Introducción al desarrollo de módulos en Drupal 7
DrupalCamp Spain 2014: Introducción al desarrollo de módulos en Drupal 7Keopx
 
Construyendo una red social con Drupal
Construyendo una red social con DrupalConstruyendo una red social con Drupal
Construyendo una red social con DrupalDaniel Primo
 
Sesionmoodle 101223143117-phpapp02
Sesionmoodle 101223143117-phpapp02Sesionmoodle 101223143117-phpapp02
Sesionmoodle 101223143117-phpapp02Kimiemi VJ
 
Sesion moodle - "más allá de lo básico"...
Sesion moodle - "más allá de lo básico"...Sesion moodle - "más allá de lo básico"...
Sesion moodle - "más allá de lo básico"...Valeria Pleszowski
 
Arquitectura de proyectos Drupal
Arquitectura de proyectos DrupalArquitectura de proyectos Drupal
Arquitectura de proyectos DrupalYmbra
 

Similaire à Actualización Moodle 1.9 a Moodle 2.4: Planificación, consejos y problemas (20)

¡This is drupal!
¡This is drupal!¡This is drupal!
¡This is drupal!
 
Introducció al moodle
Introducció al moodle Introducció al moodle
Introducció al moodle
 
Introduccion técnica a Drupal
Introduccion técnica a DrupalIntroduccion técnica a Drupal
Introduccion técnica a Drupal
 
Experiencia de migración de Moodle 1.9 a 2.x en Mondragon Unibertsitatea (Moo...
Experiencia de migración de Moodle 1.9 a 2.x en Mondragon Unibertsitatea (Moo...Experiencia de migración de Moodle 1.9 a 2.x en Mondragon Unibertsitatea (Moo...
Experiencia de migración de Moodle 1.9 a 2.x en Mondragon Unibertsitatea (Moo...
 
e-Ghost 2014: introducción al desarrollo de módulos en drupal 7
e-Ghost 2014: introducción al desarrollo de módulos en drupal 7e-Ghost 2014: introducción al desarrollo de módulos en drupal 7
e-Ghost 2014: introducción al desarrollo de módulos en drupal 7
 
Introducción a la programación para joomla
Introducción a la programación para joomlaIntroducción a la programación para joomla
Introducción a la programación para joomla
 
Programación de módulos para Drupal 7
Programación de módulos para Drupal 7Programación de módulos para Drupal 7
Programación de módulos para Drupal 7
 
¡This is drupal! - Global Training Days
¡This is drupal! - Global Training Days¡This is drupal! - Global Training Days
¡This is drupal! - Global Training Days
 
Migrando data - DRUPAL
Migrando data - DRUPALMigrando data - DRUPAL
Migrando data - DRUPAL
 
[DrupalCampSpain2023] Introducción al desarrollo de módulos en Drupal 10
[DrupalCampSpain2023] Introducción al desarrollo de módulos en Drupal 10[DrupalCampSpain2023] Introducción al desarrollo de módulos en Drupal 10
[DrupalCampSpain2023] Introducción al desarrollo de módulos en Drupal 10
 
Haciendo que tu entorno de desarrollo de Drupal rocks
Haciendo que tu entorno de desarrollo de Drupal rocksHaciendo que tu entorno de desarrollo de Drupal rocks
Haciendo que tu entorno de desarrollo de Drupal rocks
 
DrupalCamp Spain 2014: Introducción al desarrollo de módulos en Drupal 7
DrupalCamp Spain 2014: Introducción al desarrollo de módulos en Drupal 7DrupalCamp Spain 2014: Introducción al desarrollo de módulos en Drupal 7
DrupalCamp Spain 2014: Introducción al desarrollo de módulos en Drupal 7
 
Construyendo una red social con Drupal
Construyendo una red social con DrupalConstruyendo una red social con Drupal
Construyendo una red social con Drupal
 
Sesionmoodle 101223143117-phpapp02
Sesionmoodle 101223143117-phpapp02Sesionmoodle 101223143117-phpapp02
Sesionmoodle 101223143117-phpapp02
 
Sesionmoodle 101223143117-phpapp02
Sesionmoodle 101223143117-phpapp02Sesionmoodle 101223143117-phpapp02
Sesionmoodle 101223143117-phpapp02
 
Sesion moodle - "más allá de lo básico"...
Sesion moodle - "más allá de lo básico"...Sesion moodle - "más allá de lo básico"...
Sesion moodle - "más allá de lo básico"...
 
Manual del desarrollador
Manual del desarrolladorManual del desarrollador
Manual del desarrollador
 
Drupal Sitebuilding 101
Drupal Sitebuilding 101Drupal Sitebuilding 101
Drupal Sitebuilding 101
 
Arquitectura de proyectos Drupal
Arquitectura de proyectos DrupalArquitectura de proyectos Drupal
Arquitectura de proyectos Drupal
 
This is Drupal! (Basics)
This is Drupal! (Basics)This is Drupal! (Basics)
This is Drupal! (Basics)
 

Plus de Elurnet Informatika Zerbituzak (16)

Venta online bueno, bonito y ¿barato?
Venta online bueno, bonito y ¿barato?Venta online bueno, bonito y ¿barato?
Venta online bueno, bonito y ¿barato?
 
Estrategia en redes sociales
Estrategia en redes socialesEstrategia en redes sociales
Estrategia en redes sociales
 
Estrategia sare sozialetan
Estrategia sare sozialetanEstrategia sare sozialetan
Estrategia sare sozialetan
 
Administrazioa20
Administrazioa20Administrazioa20
Administrazioa20
 
Administración 2.0 2012
Administración 2.0   2012Administración 2.0   2012
Administración 2.0 2012
 
Babelium - Presentación
Babelium - PresentaciónBabelium - Presentación
Babelium - Presentación
 
Babelium presentation
Babelium presentationBabelium presentation
Babelium presentation
 
Administrazioa 2.0
Administrazioa 2.0Administrazioa 2.0
Administrazioa 2.0
 
Esku Era Jardunaldiak
Esku Era JardunaldiakEsku Era Jardunaldiak
Esku Era Jardunaldiak
 
Informazioaren kudeaketa eduki sindikazioaren bidez
Informazioaren kudeaketa eduki sindikazioaren bidezInformazioaren kudeaketa eduki sindikazioaren bidez
Informazioaren kudeaketa eduki sindikazioaren bidez
 
Wikiak eta elkarlan tresnak UEU
Wikiak eta elkarlan tresnak UEUWikiak eta elkarlan tresnak UEU
Wikiak eta elkarlan tresnak UEU
 
Internet eta mugikortasuna
Internet eta mugikortasunaInternet eta mugikortasuna
Internet eta mugikortasuna
 
Web2.0 en la empresa
Web2.0 en la empresaWeb2.0 en la empresa
Web2.0 en la empresa
 
Elurnet
ElurnetElurnet
Elurnet
 
Elurnet
ElurnetElurnet
Elurnet
 
Web2.0 eta Software Librea
Web2.0 eta Software LibreaWeb2.0 eta Software Librea
Web2.0 eta Software Librea
 

Dernier

Tema 19. Inmunología y el sistema inmunitario 2024
Tema 19. Inmunología y el sistema inmunitario 2024Tema 19. Inmunología y el sistema inmunitario 2024
Tema 19. Inmunología y el sistema inmunitario 2024IES Vicent Andres Estelles
 
Infografía EE con pie del 2023 (3)-1.pdf
Infografía EE con pie del 2023 (3)-1.pdfInfografía EE con pie del 2023 (3)-1.pdf
Infografía EE con pie del 2023 (3)-1.pdfAlfaresbilingual
 
Feliz Día de la Madre - 5 de Mayo, 2024.pdf
Feliz Día de la Madre - 5 de Mayo, 2024.pdfFeliz Día de la Madre - 5 de Mayo, 2024.pdf
Feliz Día de la Madre - 5 de Mayo, 2024.pdfMercedes Gonzalez
 
Concepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptxConcepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptxFernando Solis
 
Los avatares para el juego dramático en entornos virtuales
Los avatares para el juego dramático en entornos virtualesLos avatares para el juego dramático en entornos virtuales
Los avatares para el juego dramático en entornos virtualesMarisolMartinez707897
 
SEPTIMO SEGUNDO PERIODO EMPRENDIMIENTO VS
SEPTIMO SEGUNDO PERIODO EMPRENDIMIENTO VSSEPTIMO SEGUNDO PERIODO EMPRENDIMIENTO VS
SEPTIMO SEGUNDO PERIODO EMPRENDIMIENTO VSYadi Campos
 
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docxPLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docxiemerc2024
 
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docxEliaHernndez7
 
Proyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdfProyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdfpatriciaines1993
 
CONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptx
CONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptxCONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptx
CONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptxroberthirigoinvasque
 
2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx
2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx
2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptxRigoTito
 
FUERZA Y MOVIMIENTO ciencias cuarto basico.ppt
FUERZA Y MOVIMIENTO ciencias cuarto basico.pptFUERZA Y MOVIMIENTO ciencias cuarto basico.ppt
FUERZA Y MOVIMIENTO ciencias cuarto basico.pptNancyMoreiraMora1
 
Tema 10. Dinámica y funciones de la Atmosfera 2024
Tema 10. Dinámica y funciones de la Atmosfera 2024Tema 10. Dinámica y funciones de la Atmosfera 2024
Tema 10. Dinámica y funciones de la Atmosfera 2024IES Vicent Andres Estelles
 
Análisis de los Factores Externos de la Organización.
Análisis de los Factores Externos de la Organización.Análisis de los Factores Externos de la Organización.
Análisis de los Factores Externos de la Organización.JonathanCovena1
 
LA LITERATURA DEL BARROCO 2023-2024pptx.pptx
LA LITERATURA DEL BARROCO 2023-2024pptx.pptxLA LITERATURA DEL BARROCO 2023-2024pptx.pptx
LA LITERATURA DEL BARROCO 2023-2024pptx.pptxlclcarmen
 
La Sostenibilidad Corporativa. Administración Ambiental
La Sostenibilidad Corporativa. Administración AmbientalLa Sostenibilidad Corporativa. Administración Ambiental
La Sostenibilidad Corporativa. Administración AmbientalJonathanCovena1
 
SESION DE PERSONAL SOCIAL. La convivencia en familia 22-04-24 -.doc
SESION DE PERSONAL SOCIAL.  La convivencia en familia 22-04-24  -.docSESION DE PERSONAL SOCIAL.  La convivencia en familia 22-04-24  -.doc
SESION DE PERSONAL SOCIAL. La convivencia en familia 22-04-24 -.docRodneyFrankCUADROSMI
 
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).pptPINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).pptAlberto Rubio
 
Tema 17. Biología de los microorganismos 2024
Tema 17. Biología de los microorganismos 2024Tema 17. Biología de los microorganismos 2024
Tema 17. Biología de los microorganismos 2024IES Vicent Andres Estelles
 

Dernier (20)

Tema 19. Inmunología y el sistema inmunitario 2024
Tema 19. Inmunología y el sistema inmunitario 2024Tema 19. Inmunología y el sistema inmunitario 2024
Tema 19. Inmunología y el sistema inmunitario 2024
 
Infografía EE con pie del 2023 (3)-1.pdf
Infografía EE con pie del 2023 (3)-1.pdfInfografía EE con pie del 2023 (3)-1.pdf
Infografía EE con pie del 2023 (3)-1.pdf
 
Feliz Día de la Madre - 5 de Mayo, 2024.pdf
Feliz Día de la Madre - 5 de Mayo, 2024.pdfFeliz Día de la Madre - 5 de Mayo, 2024.pdf
Feliz Día de la Madre - 5 de Mayo, 2024.pdf
 
Concepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptxConcepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptx
 
Los avatares para el juego dramático en entornos virtuales
Los avatares para el juego dramático en entornos virtualesLos avatares para el juego dramático en entornos virtuales
Los avatares para el juego dramático en entornos virtuales
 
SEPTIMO SEGUNDO PERIODO EMPRENDIMIENTO VS
SEPTIMO SEGUNDO PERIODO EMPRENDIMIENTO VSSEPTIMO SEGUNDO PERIODO EMPRENDIMIENTO VS
SEPTIMO SEGUNDO PERIODO EMPRENDIMIENTO VS
 
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docxPLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
 
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
 
Proyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdfProyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdf
 
CONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptx
CONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptxCONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptx
CONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptx
 
2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx
2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx
2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx
 
FUERZA Y MOVIMIENTO ciencias cuarto basico.ppt
FUERZA Y MOVIMIENTO ciencias cuarto basico.pptFUERZA Y MOVIMIENTO ciencias cuarto basico.ppt
FUERZA Y MOVIMIENTO ciencias cuarto basico.ppt
 
Tema 10. Dinámica y funciones de la Atmosfera 2024
Tema 10. Dinámica y funciones de la Atmosfera 2024Tema 10. Dinámica y funciones de la Atmosfera 2024
Tema 10. Dinámica y funciones de la Atmosfera 2024
 
Análisis de los Factores Externos de la Organización.
Análisis de los Factores Externos de la Organización.Análisis de los Factores Externos de la Organización.
Análisis de los Factores Externos de la Organización.
 
LA LITERATURA DEL BARROCO 2023-2024pptx.pptx
LA LITERATURA DEL BARROCO 2023-2024pptx.pptxLA LITERATURA DEL BARROCO 2023-2024pptx.pptx
LA LITERATURA DEL BARROCO 2023-2024pptx.pptx
 
Supuestos_prácticos_funciones.docx
Supuestos_prácticos_funciones.docxSupuestos_prácticos_funciones.docx
Supuestos_prácticos_funciones.docx
 
La Sostenibilidad Corporativa. Administración Ambiental
La Sostenibilidad Corporativa. Administración AmbientalLa Sostenibilidad Corporativa. Administración Ambiental
La Sostenibilidad Corporativa. Administración Ambiental
 
SESION DE PERSONAL SOCIAL. La convivencia en familia 22-04-24 -.doc
SESION DE PERSONAL SOCIAL.  La convivencia en familia 22-04-24  -.docSESION DE PERSONAL SOCIAL.  La convivencia en familia 22-04-24  -.doc
SESION DE PERSONAL SOCIAL. La convivencia en familia 22-04-24 -.doc
 
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).pptPINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
 
Tema 17. Biología de los microorganismos 2024
Tema 17. Biología de los microorganismos 2024Tema 17. Biología de los microorganismos 2024
Tema 17. Biología de los microorganismos 2024
 

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

  • 1.
  • 2. Actualización Moodle 1.9 a Moodle 2.4: Planificación, consejos y problemas
  • 3. Í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
  • 5. 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
  • 6. 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
  • 7. 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
  • 9. 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
  • 10. ¿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
  • 11. ¿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
  • 12. ¿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?
  • 13. ¿Es un Moodle estándar? (IV) ● Análisis de base de datos – diff mediante MySQL Workbench
  • 14. ¿Es un Moodle estándar? (V) Esquema limpio Esquema que teníamos Delta, diferencia entre ambos Delta + Esquema que teníamos = Esquema limpio
  • 15. ¿Es un Moodle estándar? (VI)
  • 16. 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
  • 18. 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
  • 19. 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
  • 20. 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)
  • 21. Sistema de archivos (III) ● Moodle 2.x – Mover a carpeta indexada (tabla hash de doble nivel) moodledata/filedir/0b/5c/0b5c8aaa6e3eaa8d6f7cb1da2d221ab1929 e8f83 – 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
  • 22. 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
  • 23. 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
  • 24. 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
  • 26. Antes de empezar... ● Activar el Modo Mantenimiento – Acceso sólo disponible para admins ● Activar el nivel de debugging máximo
  • 27. 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 ● ...
  • 28. 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
  • 29. 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'));
  • 30. 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.
  • 31. Limpiar moodledata (II) ● Caso extremo – Si en la ruta de un curso tenemos dos carpetas con mismo nombre, pero distinto case, podemos tener problemas moodledata/4561/DATOSALUMNO/evaluación.pdf moodledata/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
  • 32. ¿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 Tzo2OiJvYmplY3QiOjY6e3M6MTk6ImRpc3BsYXlfZGVzY3JpcHRpb24iO3M6MT oiMSI7czoxNDoic2hvd251bWVudHJpZXMiO3M6MToiMyI7czo1OiJyc3NpZCI7YT oxOntpOjA7czozOiIxMTEiO31zOjU6InRpdGxlIjtzOjA6IiI7czozNDoiYmxvY2tfcnN zX2NsaWVudF9zaG93X2NoYW5uZWxfbGluayI7czoxOiIwIjtzOjM1OiJibG9ja19y c3NfY2xpZW50X3Nob3dfY2hhbm5lbF9pbWFnZSI7czoxOiIxIjt9
  • 33. 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
  • 37. 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
  • 38. 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
  • 39. 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
  • 41. 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
  • 42. Tareas posteriores (II) ● Herramientas diagnóstico admin – Diagnóstico de roles – Conversión a InnoDB – Profiling de plataforma – ...
  • 43. 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
  • 46. Info. contacto ● Inko Perurena – Twitter: @inkoperurena – Email: inko@elurnet.net
  • 47. Bonus
  • 48. 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
  • 49. 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
  • 50. 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; }
  • 51.
  • 52. Referencias ● Fuentes de datos adicionales – Moodle docs – http://docs.moodle.org – Wikipedia – http://www.wikipedia.org
  • 53. 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