h1. Actualización de moodle 1 a 2 {{>toc}} h2. Actualización de moodle 1.9.x a 2.2.x Referencias: * "Presentación de migración a moodle 2.x en II Moodlemoot UY":http://prezi.com/yonqxe4ji2vq/migracion-a-moodle-2x/ * [[redeva:Estudio-migrar-moodle21| Estudio del DATA sobre migrar a moodle2]] * "Upgrading to 2.2" http://docs.moodle.org/22/en/Upgrading_to_Moodle_2.2 * "Upgrading" en moodle.org: http://docs.moodle.org/22/en/Upgrading h3. 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
h3. Requerimientos *1.* Software * PHP: Ver 5.3.5 - requerida: 5.3.2. * MySQL: Versión 5.1.54 - requerida: 5.0.25 *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:///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. h3. Procedimiento *3.* Borrar módulos no estándar (hay que borrarlos de moodle y del disco (en ese orden!)): * bigbluebutton * dimdim * módulo encuesta (retroalimentación) * hotpotatoes * openmeetings * journal * lams 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): * geshi
rm -rf /usr/share/moodleeva2/filter/geshi
*5.* Idem bloques (se desinstalan y borran del disco): * Alertas del Administrador ..block/admin_alert * Estadísitcas ..block/graph_stats
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: * Site Administration ..block/admin-tree * Administration ..block/admin * Global Search ..block/search * Loancalc ..block/loancalc *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 screen[1] 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
fn1. 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 h3. LDAP Para que ande LDAP tiene que estar instalado el módulo php
sudo apt-get install php5-ldap
h3. Cambio de URL Cuidado ! Si hay cambio de URL, se vuelve necesario 2 cosas: # Cambiar el archivo config.php para que moodle sepa como construir los enlaces relativos (muy importante para no saltar sin querer al otro moodle) # Cambiar los enlaces absolutos en la base de datos: ## Dump de la base actual
mysqldump -u user -p moodle2 > moodle2.sql
## Realizar una copia de seguridad por las dudas
cp moodle2.sql moodle2.sql.backup
## Realizar la sustitución
sed -i "s|url-vieja|url-nueva|g" moodle2.sql
## 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" 
## Cargar los datos modificados
mysql -u user -p  moodle2 < moodle2.sql
h3. 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: # Ir a la raíz de moodle por línea de comandos # 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.* h3. 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:* * Tener habilitada la ip donde corre moodle para consultar al SGB (Sistema de Gestión de Bedelías) *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 h2. 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: # Hacer un respaldo de la carpeta donde está moodle 2.2.x renombrándola # Descargar la última versión de moodle 2.4.x # Llamarla con el mismo nombre que 1 y luego copiar el archivo config.php original # Copiar temas o módulos si se instalaron luego de la actualización de 1.9.x a 2.2.x h3. 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: admin/settings.php?section=ajax Luego todo funcionará y se puede volver a activar. h2. Actualización de tareas Parece que no actualiza las tareas a la nueva api de tareas. Para ello pruebo en ir a la url: /admin/tool/assignmentupgrade/listnotupgraded.php y actualizo todas las tareas