Cómo clonar un Moodle (producción → staging) en hosting

 

 Cómo clonar un Moodle (producción → staging) en hosting

Este procedimiento sirve para Moodle 4.x en hosting compartido (como Dinahosting), usando SSH + phpMyAdmin.

El objetivo es crear un entorno de staging idéntico a producción, pero independiente y seguro.

Cómo clonar un Moodle (producción → staging) en hosting



🔴 Requisitos previos

  • Acceso SSH a ambos Moodle

  • Acceso a phpMyAdmin

  • Misma versión exacta de Moodle en ambos entornos

  • Un dominio o subdominio para staging


1️⃣ Copiar el código de Moodle (www)

En el Moodle de producción:

  1. Accede por SSH

  2. Entra en la carpeta web del Moodle (www)

  3. Comprime todo el código:

cd www tar -czf moodle_web.tar.gz .
  1. Copia ese archivo al Moodle de staging

  2. En el staging, descomprime sobrescribiendo el Moodle existente:

cd www tar -xzf moodle_web.tar.gz

📌 Resultado:
El staging tiene exactamente el mismo código que producción.

Nota: A veces será necesario dividir en varios zip y descomprimirlos asi:

unzip 1.zip

mv 1/* .

rm -rf 1

rm 1.zip


2️⃣ Crear un moodledata nuevo para staging

Cada Moodle debe tener su propio dataroot, fuera del directorio web.

En el staging, por SSH:

cd ~ mkdir moodledata_staging chmod 770 moodledata_staging

📌Si usas el mismo entocnes no es necesario crear este moodledata nuevo


3️⃣ Ajustar el config.php del staging

Edita el archivo config.php del staging:

cd www nano config.php

Asegúrate de que contiene:

$CFG->wwwroot = 'https://staging.midominio.com'; $CFG->dbtype = 'mariadb'; // o mysqli $CFG->dbhost = 'localhost'; $CFG->dbname = 'BD_STAGING'; $CFG->dbuser = 'USUARIO_BD'; $CFG->dbpass = 'PASSWORD_BD'; $CFG->dataroot = '/ruta/real/moodledata_staging'; $CFG->admin = 'admin'; // Recomendado para staging $CFG->noemailever = true;

📌 El dataroot nunca debe estar dentro de www.


4️⃣ Migrar la base de datos

Desde phpMyAdmin:

En producción

  1. Selecciona la base de datos

  2. Exporta en formato SQL

En staging

  1. Elimina la base de datos existente

  2. Créala de nuevo

  3. Importa el archivo .sql de producción

📌 Esto clona:

  • usuarios

  • cursos

  • roles

  • configuraciones


5️⃣ Verificar la conexión a la base de datos (opcional pero clave)

Desde SSH en staging:

mysql -h localhost -u USUARIO_BD -p BD_STAGING

Si accedes a MariaDB/MySQL sin error, la configuración es correcta.


6️⃣ Limpiar cachés de Moodle

Desde la carpeta www del staging:

php admin/cli/purge_caches.php

📌 Paso obligatorio tras mover código o base de datos.


7️⃣ Primer acceso al staging

Accede en el navegador a:

https://staging.midominio.com

Lo normal es que Moodle:

  • Pida actualizar la base de datos (aceptar)

  • Muestre el login de administrador

  • Arranque correctamente


🎯 Resultado final

  • ✅ Moodle clonado correctamente

  • ✅ Producción intacta

  • ✅ Staging independiente

  • ✅ Sin correos reales

  • ✅ Listo para pruebas y desarrollo


🧠 Buenas prácticas aprendidas

  • Cada Moodle necesita:

    • su propio código

    • su propia base de datos

    • su propio moodledata

  • moodledata nunca va dentro del directorio web

  • En hosting compartido:

    • SSH es ideal para copiar/descomprimir

    • phpMyAdmin para bases de datos

  • Errores de arranque suelen ser:

    • dataroot mal configurado

    • credenciales de base de datos incorrectas


Comentarios