Problemas al cambiar Moodle de directorio: guía completa paso a paso

por | Oct 29, 2025 | Blog | 0 Comentarios

Cambiar Moodle de /var/www/html/moodle a otro directorio (o de midominio.com/moodle a midominio.com/), sin romper nada, requiere método. Aquí tienes una guía práctica y segura, válida para Linux, Plesk y la mayoría de hostings.

0) Qué vas a necesitar a mano

  • Ruta actual del código (dirroot) y de datos (moodledata).

  • URL actual y URL de destino (si también cambias la ruta pública).

  • Acceso SSH/FTP y a la base de datos (MySQL/MariaDB o PostgreSQL).

  • Usuario del servidor web (habitual: www-data, apache o nginx).

1) Prepara y reduce riesgos

  1. Activa modo mantenimiento:

    php admin/cli/maintenance.php --enable
  2. Copias de seguridad:

    # Código
    rsync -a /ruta/actual/moodle/ /backup/moodle_$(date +%F)/
    # Datos
    rsync -a /ruta/moodledata/ /backup/moodledata_$(date +%F)/
    # Base de datos (MySQL/MariaDB)
    mysqldump -u USUARIO -p NOMBREBD > /backup/moodle_$(date +%F).sql
    # Base de datos (PostgreSQL)
    pg_dump -U USUARIO -F c NOMBREBD > /backup/moodle_$(date +%F).dump

2) Crea el nuevo destino

  • Directorio de destino para el código (ej.: /var/www/html/ o /var/www/vhosts/miweb/httpdocs/ en Plesk).

  • Revisa/crea la carpeta moodledata (ideal fuera del docroot público). No es necesario moverla si ya está fuera y la ruta no cambia.

Permisos recomendados:

sudo chown -R www-data:www-data /nuevo/dir/moodle
sudo chown -R www-data:www-data /ruta/moodledata
find /nuevo/dir/moodle -type d -exec chmod 755 {} \;
find /nuevo/dir/moodle -type f -exec chmod 644 {} \;

3) Mueve el código (no la base de datos)

rsync -a --delete /ruta/actual/moodle/ /nuevo/dir/moodle/

En Plesk: puedes mover el proyecto a httpdocs/ y ajustar el Document Root desde Hosting Settings.

4) Actualiza config.php

Abre /nuevo/dir/moodle/config.php y ajusta:

$CFG->wwwroot = 'https://midominio.com'; // o 'https://midominio.com/aula' si sigues en subcarpeta
$CFG->dirroot = '/nuevo/dir/moodle';
$CFG->dataroot = '/ruta/absoluta/moodledata';

Si solo cambias el directorio de código pero no la URL, deja $CFG->wwwroot igual.
Si cambias la URL (por ejemplo, de /moodle a raíz /), además harás un search/replace en el paso 6.

Pro tip Plesk/NGINX-Apache:

  • Activa PATH_INFO para que cargue el CSS correctamente (necesario para slasharguments):

    • Plesk > PHP Settings > cgi.fix_pathinfo=1 y comprueba que el handler PHP soporta PATH_INFO.

  • Asegúrate de que open_basedir incluye la ruta de moodledata.

5) Vacía cachés y ejecuta upgrade

php admin/cli/purge_caches.php
php admin/cli/upgrade.php --non-interactive

Comprueba notificaciones en /admin/index.php (logueado como admin).

6) ¿También cambiaste la URL pública?

Ejemplo: de https://midominio.com/moodle a https://midominio.com/.
Pasa el reemplazo seguro de URLs:

php admin/tool/replace/cli/replace.php --search='https://midominio.com/moodle' --replace='https://midominio.com' --non-interactive

Nota: este script actualiza referencias en la BD (etiquetas, bloques, enlaces incrustados, etc.).

7) Ajusta el cron y tareas

Si tu cron usa rutas absolutas, actualízalo:

crontab -e
# cada minuto (recomendado)
* * * * * /usr/bin/php /nuevo/dir/moodle/admin/cli/cron.php >/dev/null 2>&1

En Plesk: Tools & Settings > Scheduled Tasks, y cambia la ruta del PHP y del cron.php.

8) Redirecciones (SEO y enlaces antiguos)

Si la URL ha cambiado, crea 301 desde la ruta antigua:

  • En Apache (.htaccess en el docroot anterior):

    RedirectMatch 301 ^/moodle/(.*)$ https://midominio.com/$1
  • En NGINX:

    location /moodle/ {
    return 301 https://midominio.com/$request_uri;
    }

9) Pruebas rápidas de salud

  • Entra como admin y visita:

    • Administración del sitio > Notificaciones

    • Administración del sitio > Servidor > Entorno

  • Prueba login, edición de curso, subida de archivos y una actividad (Quiz/tarea).

  • Si no carga el CSS/JS:

    • Verifica slasharguments (Administración del sitio > Servidor > HTTP) y PATH_INFO en el hosting.

    • Purga cachés otra vez:

      php admin/cli/purge_caches.php

10) Errores habituales y solución

  • Página en blanco / error 500
    Activa debug temporal en config.php:

    @error_reporting(E_ALL | E_STRICT);
    @ini_set('display_errors', '1');
    $CFG->debug = (E_ALL | E_STRICT);
    $CFG->debugdisplay = 1;

    Revisa logs de PHP/servidor.

  • CSS roto después del cambio
    Casi siempre es PATH_INFO/slasharguments o caché sin purgar. En Plesk, ajusta el handler PHP o activa cgi.fix_pathinfo.

  • “El sitio se encuentra en mantenimiento”
    Desactívalo:

    php admin/cli/maintenance.php --disable
  • Permisos sobre moodledata
    Asegúrate de que el usuario del servidor web tiene lectura/escritura en moodledata (subidas, cachés, sesiones).

11) Estrategia de rollback en 2 minutos

  1. Vuelve a apuntar el DocumentRoot (o symlink) al directorio anterior del código.

  2. Restaura config.php anterior.

  3. Purga cachés:

    php admin/cli/purge_caches.php
  4. Si cambiaste URLs, deshaz con replace inverso o restaura la BD desde el dump.

12) Cero-downtime con “cambio atómico” (opcional avanzado)

  1. Sincroniza el nuevo directorio: /var/www/releases/moodle-YYYYMMDD/

  2. Precalienta cachés y prueba en staging.

  3. Cambia un symlink:

    ln -sfn /var/www/releases/moodle-YYYYMMDD /var/www/html/moodle
    systemctl reload nginx || systemctl reload apache2
  4. Mantén un release anterior para volver instantáneamente.

13) Checklist final

  • Backups hechos y verificados

  • config.php con nuevas rutas y URL correcta

  • moodledata accesible y fuera del docroot

  • PATH_INFO/slasharguments OK

  • Cron actualizado

  • Cachés purgadas

  • Redirecciones 301 si cambia URL

  • Pruebas funcionales clave superadas

¿Usas Plesk y te falla el CSS tras moverlo?

  • Hosting Settings → Document Root al nuevo directorio.

  • PHP Settings → comprueba versión/handler y cgi.fix_pathinfo=1.

  • Apache & Nginx settings → Proxy mode activo (si corresponde) y sin reglas que capen index.php/....

  • open_basedir debe incluir la ruta de moodledata.

En Kit Docente podemos ayudarte

En Kit Docente somos especialistas en cambios de ruta y migraciones de Moodle sin caídas: planificación, copia, reemplazo de URLs, permisos, Plesk/NGINX/Apache, tuning y pruebas finales.

📧 info@kitdocente.es
🌐 https://kitdocente.es

Si lo prefieres, nos das acceso temporal y te lo dejamos funcionando con todo testado y documentado.

Written by

Related Posts

Instalar Moodle en Plesk: guía completa paso a paso

Moodle es una de las plataformas de e-learning más potentes y utilizadas en el mundo, y Plesk facilita su instalación y mantenimiento si sigues una estructura ordenada. A continuación tienes la guía definitiva para instalar Moodle en Plesk desde cero, con todos los...

leer más

0 comentarios

Enviar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Esta web utiliza cookies propias para su correcto funcionamiento. Contiene enlaces a sitios web de terceros con políticas de privacidad ajenas que podrás aceptar o no cuando accedas a ellos. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Más información
Privacidad