Bienvenidos a este Blog

Bienvenidos a este blog dirigido a todos aquellos docentes interesados en utilizar cada vez más y mejor las TIC dentro de su aula.
Se trata de un blog con una clara vocación de divulgación técnica y su objetivo es facilitar a los formadores el acceso a los recursos informáticos existentes hoy en día.

viernes, 1 de febrero de 2013

Traslado a internet de un servidor Moodle ubicado en local.

Recientemente he tenido la necesidad de realizar un traslado de servidor de un sitio Moodle, como parte de una operación más amplia de migración de versión y de creación de un sitio de respaldo para pruebas y contingencias.

El proceso que comentaré se centra básicamente en el traslado de un sitio Moodle ubicado en una instalación local (localhost) a un Servidor Privado Virtual (VPS) alojado en un proveedor de hosting. Esta operación es muy habitual en diferentes situaciones, si bien, este artículo pretende dar una orientación sobre todo a aquellos que se inician en el uso de Moodle y que utilizan para su aprendizaje y para la construcción de sus primeros cursos una instalación en local, en un ordenador personal, y posteriormente necesitan poner sus cursos en internet a disposición de sus alumnos.

No hace falta ser un experto en linux, pero sí es verdad que necesitamos unos conocimientos mínimos de gestión de nuestro VPS y los permisos adecuados para poder subir archivos por FTP, así como conocer la estructura web pública de nuestro servidor. También deberemos acceder al gestor de base de datos MySQL de nuestro servidor, normalmente phpMyAdmin, al que se accede mediante el panel de control que el hosting ponga a nuestra disposición (Cpanel, Parallels,....).

En nuestro caso, supongamos tener la carpeta pública en el siguiente path del servidor web
/midominio.com/httpdocs

mientras que en local, supuesto que trabajamos con XAMPP, la tenemos en 
c:\xampp\htdocs


En primer lugar debemos entender cual es la estructura de Moodle para así comprender qué debemos subir desde local a nuestro dominio web. Son básicamente cuatro elementos a considerar:
  • La estructura de scripst de Moodle (la carpeta “moodle”)
  • La carpeta de archivos (la carpeta “moodledata”)
  • La base de datos (normalmente la habremos llamado “moodle”)
  • El archivo de configuración (el archivo de configuración “config.php”)

Comenzaremos por la carpeta “moodle”. Deberemos seguir el siguiente proceso
  • Comprimir la carpeta en un archivo tipo zip o tar
  • Subir el archivo por FTP al servidor web
  • Descomprimir el archivo creando la carpeta
midominio.com/httpdocs/moodle

Casi todos los paneles de control permiten gestionar archivos comprimidos, pero si no dispusiéramos de un panel o el nuestro no permitiera la gestión de archivos comprimidos, deberíamos subir por FTP toda la carpeta “moodle”.

Revisemos los permisos de la carpeta y de sus archivos, que deberán ser 755, según la nomenclatura linux.

Seguidamente haremos lo mismo con la carpeta “moodledata”, pero esta vez, la colocaremos fuera del área web pública del servidor, en 
/midominio.com/moodledata

En este caso, los permisos deberán ser 777.

El cambio de los permisos lo realizaremos mediante las utilidades que ponga a nuestra disposición el panel de control del que disponemos, o bien, mediante una conexión SSH como usuario root y utilizando el comando linux chmod.

Ahora continuaremos con la base de datos, que deberemos exportar de nuestra instalación local e importar en la instalación VPS.

Para ello, mediante phpMyAdmin, que viene con XAMPP, seleccionamos la base de datos “moodle” y la pestaña Exportar. Existen diferentes formatos de exportación; podemos utilizar el formato SQL o el formato XML, que nos generaran un fichero de texto con extensión .sql o extensión .xml.
Ahora, desde la utilidad de gestión de bases de datos que tengamos disponible en nuestro hosting VPS, que probablemente será también phpMyAdmin, utilizamos la opción importar para cargar este archivo y crear la base de datos.

Una vez creada la base de datos, debemos crear un usuario asociado a la misma y con todos los permisos sobre la misma. Recordemos el nombre y la constraeña de este usuario, ya que la necesitaremos posteriormente.

Seguidamente queda modificar el archivo config.php para que apunte a la nueva configuración, poniendo especial atención a
  • la URL de acceso al sitio, definida en $CFG->wwwroot
  • el path de acceso a la carpeta moodledata, definido en $CFG->dataroot
  • el usuario de acceso a la base de datos, definido en $CFG->dbuser y en $CFG->dbpass

Para terminar, hemos de tener en cuenta que podemos tener en los cursos redireccionamientos locales que apuntan a http://localhost y que nos darán problemas al no localizarse los recursos correspondientes.

Para solucionar este problema debemos recurrir a una utilidad de Moodle, la utilidad replace. Desde el navegador accedemos a la siguiente dirección
http://midominio.com/admin/tool/replace

Se nos presenta un formulario donde deberemos indicar la cadena a sustituir y la nueva cadena. En nuestro caso
http://localhost -----> http://midominio.com

Ya tenemos listo nuestro nuevo sitio Moodle.

13 comentarios:

  1. Buen día amigo Javier me gustó tu blog, porque buscaba esta información que para mi caso es pasar mi moodle que está en mi dominio principal a un subdominio y este artículo puede ayudarme mucho lo probaré y enviaré los comentarios de como me vá. Entendí casi todo los pasos pero me queda la duda de lo que hablas del cambio de los permisos lo realizaremos mediante las utilidades que ponga a nuestra disposición el panel de control del que disponemos, o bien, mediante una conexión SSH como usuario root y utilizando el comando linux chmod.

    ResponderEliminar
  2. Para modificar los permisos de una carpeta o archivo en linux se utiliza el comando "chmod". En el caso de disponer de un panel de control, también se pueden modificar desde esta harramienta gráfica, normlamente en una utilidad que se llama "Administración de archivos" o similar.

    ResponderEliminar
  3. Apreciado Javier Sola, le agradezco infinitamente esta aportación, gracias a ésta logré recuperar mi moodle, mire que le busqué la información por todos lados y hasta que dí con su aporte, asi q nuevamente gracias y saludos !

    ResponderEliminar
  4. Genial Javier!!. Habia migrado el sitio e iba a poner un script en la base para actualizar las URLs. El Replace estuvo genial.

    ResponderEliminar
  5. Estimado Javier! Gracias por tu valioso aporte. Me sucede que no se por qué, cuando quiero ingresar por la web me dice Forbidden. Le asigne permiso 755 a mi subdominio, al directorio moodle y tambien en el config.php . Que peude ser? Gracias y perdon las molestias!

    ResponderEliminar
  6. Hola, Javier! Definitivamente algo estoy haciendo mal con mi config.php . Podrias chequearlo?

    $CFG->dbtype = 'mysqli';
    $CFG->dblibrary = 'native';
    $CFG->dbhost = 'localhost';
    $CFG->dbname = 'moodle';
    $CFG->dbuser = 'uv1674';
    $CFG->dbpass = 'xxxxxxx';
    $CFG->prefix = 'mdl_';
    $CFG->dboptions = array (
    'dbpersist' => 0,
    'dbport' => '',
    'dbsocket' => '',
    );

    $CFG->wwwroot = 'http://hrglobal.com.ar/elearning';
    $CFG->dataroot = 'http://hrglobal.com.ar/moodledata';
    $CFG->admin = 'admin';

    $CFG->directorypermissions = 0777;

    ResponderEliminar
  7. Verifica que la carpeta moodledata tiene permisos totales (777)

    ResponderEliminar
  8. Hola Javier! Gracias por tu respuesta y ayuda. He trabajado mucho estos dias y aun no consigo resolver. Paso los datos:

    - El error que tira no aparece en el error log y se ve solo como una pag en blanco.
    - La carpeta moodledata tiene permisos totales (es necesario aplicarlos tambian a todos los subdirectorios?). Está fuera de mi public_html. ¿que pasa si la pongo dentro de public?
    - La carpeta moodle está dentro de mi subdominio (misitio.com/elearning/moodle). A mi subdominio le he asingado los registros tipo A, ¿debo aplicarselos tambien a /moodle?? Qué pasa si coloco todos los archivos de la carpeta moodle directamente en mi subdominio (misitio.com/elearning)?
    - Mi Config.php actual esta asi (las x corresponden a mi usuario y pass):

    dbtype = 'mysqli';
    $CFG->dblibrary = 'native';
    $CFG->dbhost = 'us77.toservers.com';
    $CFG->dbname = 'xxxx_moodle';
    $CFG->dbuser = 'xxxx';
    $CFG->dbpass = 'xxxxxxxxxxx';
    $CFG->prefix = 'mdl_';
    $CFG->dboptions = array (
    'dbpersist' => 0,
    'dbport' => '',
    'dbsocket' => '',
    );

    $CFG->wwwroot = 'http://misitio.com/elearning/moodle';
    $CFG->dataroot = '/www/docs/misitio.com/moodledata';
    $CFG->admin = 'admin';

    $CFG->directorypermissions = 0777;

    require_once(dirname(__FILE__) . '/lib/setup.php');

    ResponderEliminar
  9. Respetado Javier te pregunto! necesito incluir el uso de hotpotatoes en moodle versión 2.5 ya está icluido en las actividades siguiendo los pasos que se dan en la página principal de moodle descargar, etc pero no puedo incorporar el módulo para cuando entramos en importar preguntas, ni consigo información precisa sobre ésto. Te agradezco lo que me puedas ayudar

    ResponderEliminar
  10. Hola buenas noches tengo un error al querer actualizar mi perfil, agregar algun archivo a una clase, y no puedo enviar correo de los comentarios del aula vitual
    el error es Forbidden

    You don't have permission to access /lms/user/edit.php on this server.

    Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.

    Esto sucede desde que se cambio a otro hosting

    ResponderEliminar
  11. mi configuracion config.php es:
    dbtype = 'mysqli';
    $CFG->dblibrary = 'native';
    $CFG->dbhost = 'localhost';
    $CFG->dbname = 'xxxxx_mdln1';
    $CFG->dbuser = 'xxxxxx_mdln1';
    $CFG->dbpass = 'xxxxxxxxxxxxxxxxxxx';
    $CFG->prefix = 'mdl_';
    $CFG->dboptions = array (
    'dbpersist' => 0,
    'dbsocket' => 0,
    );

    //http://74.54.143.249/~roboti/lms/ (este dato no se a que esta apuntando)
    //http://misitio.edu.pe/lms

    $CFG->wwwroot = 'http://www.misitio.edu.pe/lms';
    $CFG->dataroot = '/home/xxxxx/.cpanel/quickinstall/moodle-1345474106';
    $CFG->admin = 'admin';

    $CFG->directorypermissions = 0777;

    $CFG->passwordsaltmain = 'cWqeSmvi%fkFthPG';

    require_once(dirname(__FILE__) . '/lib/setup.php');

    Espero su apoyo gracias

    ResponderEliminar
  12. Excelente artículo, ando en busca de como Migrar hosting, seguramente lo intentaré probar para ver como me va.

    saludos.

    ResponderEliminar