Actualización de moodle 1 a 2

Actualización de moodle 1.9.x a 2.2.x

Referencias:

Previo: migrar la base de datos a utf8

Esto evita errores, puede ocurrir que no toda la base de datos utilice la misma codificación de caracteres y da problemas con el despliegue te texto en español, por ej.

i. Ejecutar un dump

mysqldump -uroot -p -c -e --default-character-set=utf8 --single-transaction --skip-set-charset --add-drop-database -B moodleeva2 > moodleeva2-migrando-utf.sql

ii. Convertir

Abrir el archivo con vim:

vim moodleeva2-migrando-utf.sql

y luego:

:%s/DEFAULT CHARACTER SET latin1/DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci/
:%s/DEFAULT CHARSET=latin1/DEFAULT CHARSET=utf8/
:x

iii. Crear la base de datos con la codificación correcta

mysql -u root -p -e "CREATE DATABASE moodleeva2 DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci" 

iv. Inyectar los datos

mysql -u root -p moodleeva2 < moodleeva2-migrando-utf.sql

Requerimientos

1. Software

2. Instalar módulos php necesario:

sudo apt-get install php5-intl php5-cli 

Nota: Lo que puede hacerse para saber los requerimientos, es ir a: http://&lt;url-de-moodle&gt;/admin/environment.php y cambiar la versión de moodle en la lista desplegable. De esta forma se informará sobre los requerimientos para dicha versión.

Procedimiento

3. Borrar módulos no estándar (hay que borrarlos de moodle y del disco (en ese orden!)):

Código para borrado de disco:

sudo rm -rf /usr/share/moodleeva2/mod/bigbluebutton && sudo rm -rf /usr/share/moodleeva2/mod/dimdim && 
sudo rm -rf /usr/share/moodleeva2/mod/feedback && sudo rm -rf /usr/share/moodleeva2/mod/hotpot && 
sudo rm -rf /usr/share/moodleeva2/mod/openmeetings && sudo rm -rf /usr/share/moodleeva2/mod/journal && 
sudo rm -rf /usr/share/moodleeva2/mod/lams

4. Idem filtros (se borran del disco):
rm -rf /usr/share/moodleeva2/filter/geshi
5. Idem bloques (se desinstalan y borran del disco):
sudo rm -rf /usr/share/moodleeva2/blocks/graph_stats && sudo rm -rf /usr/share/moodleeva2/blocks/admin_alert
En FCS se algunos módulos estandar provocaban errores y se quitaron:

6. Idem temas (se elige un estándar) (en FCS borramos TODOS los temas excepto el estandar cargado, daban errores algunos templates por defecto)

sudo /usr/share/moodleeva2/theme && sudo rm -rf agraria agraria2 artistica artistica2 ciencia ciencia2 entorno entorno2 interior interior2 salud salud2 social social2 udelar2

Dio error al actualizar "Courses" con "report" y borré carpeta
..course/report

7. Respaldo archivos y base

archivos:

sudo cp -R /usr/share/moodleeva2 /usr/share/moodleeva2-antes-de-migrar

El var/lib no es necesario, pues no lo modifiqué en el procedimiento; lo puedo volver a tomar de los respaldos.

base:

cd ~ && mysqldump -u root -p moodleeva2 | gzip > base-moodle-antes-de-migrar.sql.gz

8. Descargo y descomprimo php de moodle 2.2.x

Obs: Hay que actualizar primero a 2.2.x y luego a la última 2.x que exista (por ejemplo 2.3.1 hoy)

wget http://download.moodle.org/download.php/direct/stable22/moodle-latest-22.tgz
tar -xf moodle-latest-22.tgz

9. Copio los archivos

sudo mv /usr/share/moodleeva2 /usr/share/moodleeva2.old
sudo mv ~/moodle /usr/share/moodleeva2

y colocar los parámetros correctos de config.php

importante: copiar el hash de "pasword salt" para que funcionen las contraseñas

10. Script de actualización

10.a Vía web

Ir a la URL de moodle con el navegador y se advierte sobre la actualización. Hay que ser paciente y ver cómo la actualización se va desplegando hacia abajo. Puede durar varias horas.

10.a Por línea de comandos

OBS: utilizar lo siguiente a través de screen1 porque dura bastante y para prevenir la caída de la conexión

sudo -u www-data /usr/bin/php /usr/share/moodleeva2/admin/cli/upgrade.php --non-interactive

1 Screen es un manejador de consolas virtuales que entre otras cosas permite recuperar una consola en caso que se corte la conexión. Más información en: https://help.ubuntu.com/community/Screen

LDAP

Para que ande LDAP tiene que estar instalado el módulo php

sudo apt-get install php5-ldap

Cambio de URL

Cuidado ! Si hay cambio de URL, se vuelve necesario 2 cosas:

  1. Cambiar el archivo config.php para que moodle sepa como construir los enlaces relativos (muy importante para no saltar sin querer al otro moodle)
  2. Cambiar los enlaces absolutos en la base de datos:
    1. Dump de la base actual
      mysqldump -u user -p moodle2 > moodle2.sql
      
    2. Realizar una copia de seguridad por las dudas
      cp moodle2.sql moodle2.sql.backup
      
    3. Realizar la sustitución
      sed -i "s|url-vieja|url-nueva|g" moodle2.sql
      
    4. Borrar la base y volver a crearla
      mysql -u user -p -e "DROP DATABASE moodle2" 
      mysql -u user -p -e "CREATE DATABASE moodle2 DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci" 
      
    5. Cargar los datos modificados
      mysql -u user -p  moodle2 < moodle2.sql
      

Cambiar motor de la base de datos

Es una recomendación cambiar a InnoDB que aparece en "Notificaciones":

Las tablas de la base de datos están utilizando el motor MyISAM: se recomienda usar un motor compatible con ACID que permita transacción completa, tal como InnoDB.

Luego existe un script en el propio moodle para hacerlo. Por tanto, hay que:
  1. Ir a la raíz de moodle por línea de comandos
  2. Ejecutar el siguiente comando:
    sudo -u www-data /usr/bin/php admin/cli/mysql_engine.php --engine=InnoDB
    

La ejecución del script en el EVA Central dura aproximadamente 3 horas.

Módulo de autenticación SECIU2

El módulo Radius que viene con moodle, no toma nombre y apellido de los estudiantes, de modo que ellos, al autenticarse la primera vez pueden colocar otro nombre diferente al que figura en el sistema de bedelías.

Algunos docentes de Facultad de Ingeniería, escribieron una mejor y a su vez lo migraron para moodle 2.x. Su nombre es auth_seciu2.

El mismo está disponible en el espacio de archivos de este mismo proyecto: http://proyecto.data.cse.edu.uy/projects/redeva/files (ir hasta la parte correspondiente a moodle 2.x)

Prerrequisitos:

Instalación: Al descomprimir el archivo encontrará un README.txt con las instrucciones de instalación.

Tareas post instalación: Una cosa que puede hacer, es transformar todas las autenticaciones radius a SECUI. Si se tiene acceso a la Base de Datos puede ejecutarse lo siguiente:

UPDATE moodle.mdl_user SET auth = 'seciu2' WHERE auth = 'radius';

FIXME: verificar si es seciu o seciu2 que hay que poner
OBS: recomendamos realizar pruebas y un respalo de la base de datos antes de aplicar el comando

Más allá de la 2.2.x

Me confirman de Facultad de Psicología, la actualización de la 2.2.x a la 2.4.x sin problemas. Por tanto el procedimiento sería:

  1. Hacer un respaldo de la carpeta donde está moodle 2.2.x renombrándola
  2. Descargar la última versión de moodle 2.4.x
  3. Llamarla con el mismo nombre que 1 y luego copiar el archivo config.php original
  4. Copiar temas o módulos si se instalaron luego de la actualización de 1.9.x a 2.2.x

Problemas con javascript y AJAX

Si llegan a aparecer problemas en el despliegue del menú principal, puede deberse al caché de AJAX y Javascript. Para corregirlo, deshabilitar los caches en: <raiz-de-moodle>admin/settings.php?section=ajax

Luego todo funcionará y se puede volver a activar.

Actualización de tareas

Parece que no actualiza las tareas a la nueva api de tareas. Para ello pruebo en ir a la url: <url-de-moodle>/admin/tool/assignmentupgrade/listnotupgraded.php

y actualizo todas las tareas