En ocasiones es necesario migrar el servidor moodle pero a un servidor externo al nuestro. Por ejemplo al servidor donde tenemos contratado el hosting. Esto tiene grandes ventajas en cuanto a que no hay que preocuparse de un montón de tareas de mantenimiento pero tiene la problemática de que no tenemos permisos para hacer lo que nos de la gana. Voy a citar y explicar brevemente los pasos que he seguido a la hora de realizar la migración del aula virtual que gestiono. Mi servidor origen es Ubuntu Server 9.04 y uso Apache y MySql. El destino es similar: también Linux con MySql.
En la parte de backups me basé esencialmente en el blog
http://jgdu.blogspot.com/2008/08/migrando-moodle-otro-servidor.html
Lo primero es avisar a la comunidad del aula virtual que se va a hacer la migración y que durante la misma va a estar inhabilitado moodle. En el caso de no hacerlo y no inhabilitarlo, el problema es que si alguien hace algún cambio posterior este no va a verse reflejado en la migración.
Lo primero es conocer la situación en nuestro servidor origen. Hay dos directorios implicados:
/var/www/moodle
/var/moodledata
o los equivalentes si en la instalación original usamos otros. Además tendremos también la base de datos bajo MySql. Realizaremos pues la copia de seguridad de los directorios y la base de datos (puede ser necesario aplicar sudo al realizar algunas de las siguientes acciones dependiendo de cómo estén configurados los permisos).
tar cvvf moodle.tar /var/www/moodle
tar cvvf moodledata.tar /var/moodledata
mysqldump -pXXXX -u NombreUsuario NombreBDMoodle > moodledb.sql
En el último caso, para la base de datos, el parámetro -p es la password de la base de datos, el -u es el nombre de usuario de la base de datos y finalmente NombreBDMoodle el nombre de la BD que hayamos dado en MySql. Estos datos se pueden ver en el archivo moodle/config.php. El nombre del backup (en este caso moodledb.sql) es indiferente.
Si algunos de los archivos de backup lo hemos creado con sudo puede que no tengamos permisos para copiarlo por lo que conviene hacer un chown para ser nosotros el propietario de dicho archivo.
Ya tenemos los tres archivo. Ahora, a continuación, hay que llevarlos al servidor donde tenemos contratado el hosting. Aquí las posibilidades son varias, se puede usar ftp o scp dependiendo de nuestras preferencias y de las posibilidades que nos de el hosting que tenemos contratado. En este texto voy a explicarlo todo mediante scp y ssh. Si la empresa que mantiene el hosting no tiene este servicio activado hay que pedirle que lo activen o que nos den otras opciones para subir, descomprimir los archivos y volcar la base de datos.
Para copiar los archivos (suponiendo que moodle.tar, moodledata.tar y moodledb.sql son los únicos que empiezan por la palabra moodle) realizamos la copia:
scp moodle* usuario@servidor_hosting:~
Esta operación puede ser lenta si nuestro curso ocupa varios gigas (esto ocurre principalmente en el archivo moodledata.tar) y nuestra conexión de subida es lenta.
Antes de hacer esto hay que tener en cuenta el espacio que tengamos en nuestro servidor de hosting y contratar más si fuera necesario o en previsión del futuro uso que se le vaya a dar.
Una vez que tenemos en el servidor remoto estos archivos hay que descomprimirlos y volcar la base de datos. Empezamos por esto último. Para volcar la base de datos primero tiene que existir en el servidor MySql. Por tanto mediante la herramienta que nos den en el hosting se debe crear una nueva base de datos con su usuario y contraseña. Aquí podemos encontrar el primer problema si en su día usábamos nombres "estándar" para la base de datos y para el usuario ya que como en el hosting se comparten un montón de bases de datos puede que ya existan y nos de ese error. No hay problema simplemente se le da otro nombre a la base de datos (Por ejemplo moodle_nombre_curso) y al usuario (por ejemplo: user_curso).
Si ya le hemos creado nos vamos al terminal y conectamos al servidor de hosting mediante ssh. Una vez conectados escribimos el siguiente comando:
mysql -u user_curso -pXXXXXXX moodle_nombre_curso < moodledb.sql
Esto vuelca nuestra base de datos antigua en la nueva. Hemos cambiado nombres pero lo reconfguraremos en nuestro moodle.
Un problema que nos podemos encontrar es que nuestra versión de MySql sea más nueva que la del servidor de hosting. Un error típico que da el comando anterior en este caso es que cierta variable no existe. En este caso no queda otro remedio que pedirle a nuestro servicio de hosting que nos actualice MySql a una versión más reciente. Existen otras formas de volcado pero o no las he investigado o no me han funcionado (por ejemplo volcar con mysqldump en versión 4.0), aunque quizá lo hice mal. En cualquier caso si el hosting es serio os hará este cambio de versión en poco tiempo (en mi caso tengo que agradecer al personal técnico de dinahosting que lo hicieron fenomenal).
Lo siguiente es descomprimir los archivos moodle.tar y moodledata.tar. El primero no es problema, hay que descomprimirlo en ~/www/moodle (o el directorio deseado o que nos haya cedido el servicio de hosting). El segundo no podemos descomprimirlo en su directorio habitual /var/moodledata porque lo habitual es que no tengamos permisos. Pero no es problema, vamos a descomprimirlo en ~/moodledata y luego ya reconfiguraremos moodle. Los comandos estando en el directorio de usuario:
tar xvvf moodle.tar
tar xvvf moodledata.tar
Al descomprimir es posible que haya mantenido la estructura original de directorios por lo que podéis usar mv para recolocar. Al final interesa que en ~/www/moodle/ esté el contenido del moodle.tar y en ~/moodledata/ el de moodledata.tar.
Lo siguiente es modificar el archivo moodle/config.php por los cambios que hemos hecho en la base de datos y en los directorios. Así que lo editamos con vim, nano, emacs o el editor que dispongamos y tendremos que actualizar las lineas:
$CFG->dbname = 'moodle_nombre_curso';
$CFG->dbuser = 'user_curso';
$CFG->dbpass = 'XXXXXXX'; //Esta sólo si la habéis cambiado, si no pues nada
$CFG->wwwroot = 'http://nombrehosting/moodle';
$CFG->dirroot = '/home/usuariohosting/www/moodle';
$CFG->dataroot = '/home/usuariohosting/moodledata';
Por supuesto esto es orientativo y dependerá de como está configurado vuestro hosting y de qué directorios hayáis usado, pero os debería valer de guía.
En el caso de que cometiérais el error de tener moodle en el servidor viejo en hhtps y ahora queréis dejarlo normal y no os deja entrar podéis ir a la base de datos con phpMyAdmin y buscáis la tabla mdl_config, allí la entrada loginhttps estará a 1, simplemente la ponéis a 0 y listo. En este caso es importante que $CFG->wwwroot esté con http y no con https.
Y si no me he olvidado de nada, poniendo en el navegador
http://nombrehosting/moodle
debería de funcionar todo tal cual lo teníais en el servidor original. Siempre podéis hacer la redirección de alguna dirección web que os interese.
Si habéis tenido problemas de permisos quizá tengáis que hacer cambios de usuario en los archivos.
Todo esto es orientativo y basado en mi caso particular, aunque creo que es relativamente fácil adaptarlo a otros casos. Siempre debéis de tener copia de seguridad de todo y estar en contacto con el servicio técnico del hosting para solucionar cualquier problema/duda.
No hay comentarios:
Publicar un comentario