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.
🔴 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:
-
Accede por SSH
-
Entra en la carpeta web del Moodle (
www) -
Comprime todo el código:
-
Copia ese archivo al Moodle de staging
-
En el staging, descomprime sobrescribiendo el Moodle existente:
📌 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:
📌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:
Asegúrate de que contiene:
📌 El dataroot nunca debe estar dentro de www.
4️⃣ Migrar la base de datos
Desde phpMyAdmin:
En producción
-
Selecciona la base de datos
-
Exporta en formato SQL
En staging
-
Elimina la base de datos existente
-
Créala de nuevo
-
Importa el archivo
.sqlde 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:
Si accedes a MariaDB/MySQL sin error, la configuración es correcta.
6️⃣ Limpiar cachés de Moodle
Desde la carpeta www del staging:
📌 Paso obligatorio tras mover código o base de datos.
7️⃣ Primer acceso al staging
Accede en el navegador a:
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
-
-
moodledatanunca va dentro del directorio web -
En hosting compartido:
-
SSH es ideal para copiar/descomprimir
-
phpMyAdmin para bases de datos
-
-
Errores de arranque suelen ser:
-
datarootmal configurado -
credenciales de base de datos incorrectas

Comentarios
Publicar un comentario