Administrar Moodle por línea de comandos

Administrar Moodle por línea de comandos
0
(0)

¿Y si te digo que puedes ahorrar mucho tiempo en la gestión de tu web? Como lo lees, administrando Moodle por línea de comandos puedes hacer muchas más tareas en menos tiempo.

Sí, ya sé que a través de la interfaz o, mejor dicho, el backend de Moodle, también se pueden hacer un montón de tareas de forma fácil, pero la línea de comandos te da más control e incluso la posibilidad de hacer algunas automatizaciones.

Si te interesa, quédate porque en esta guía te explico cómo administrar Moodle por línea de comandos, paso a paso y con ejemplos prácticos. Verás cómo automatizar tareas, gestionar usuarios, hacer copias de seguridad y mucho más.

¿Vamos?

¿Qué necesito para utilizar la consola de Moodle?

El único requisito para trabajar con Moodle por línea de comandos es tener acceso SSH en tu plan de hosting.

Recuerda que en LucusHost tienes la posibilidad de acceder por SSH en nuestros planes de Hosting Moodle. Al utilizar la tecnología CloudLinux, todas las cuentas de hosting se encuentran en un entorno aislado, como si fuese un VPS  «mini», por lo que SSH no supone ningún problema de seguridad.

Lo único que tienes que hacer es habilitar SSH en tu plan de hosting. Esto puedes hacerlo desde la sección «Servicios» – «Mis servicios» de tu área de clientes.

Activar SSH en un plan de hosting desde el área de clientes de LucusHost

Si tienes dudas a la hora de conectarte, te recomiendo que le eches un ojo a una guía que publicamos hace un tiempo: Cómo crear una conexión SSH.

Comandos básicos de Moodle

A continuación, te voy a mostrar algunas de las tareas más habituales de Moodle y sencillas que puedes realizar a través de línea de comandos.

Empezamos por la más básica de todas, ¿sabes cuál es?

Venga 🙂

Cómo instalar Moodle por línea de comandos

No podía hacer una guía sobre cómo administrar Moodle por línea de comandos sin explicarte cómo instalar este CMS.

Spoiler: es una tarea muy básica (diría que la que más), pero no es la más sencilla o la que más rápido se pueda hacer. Pero explicarte cómo hacerlo es casi una obligación. ¿Vemos?

1. Descarga Moodle

Lo primero de todo es dirigirnos a la ruta en la que se va a realizar la instalación:

cd /home/lucushost/moodle.alvarovillar.lucusprueba.es

Luego, utilizando el comando wget, descargaremos Moodle. En este descargamos la versión 4.3:

wget https://download.moodle.org/download.php/direct/stable403/moodle-latest-403.tgz

Comando para descargar Moodle por línea de comandos

Una vez que se haya descargado, hay que descomprimir los ficheros de instalación:

tar -xvzf moodle-latest-403.tgz

Por defecto, el contenido se descargará dentro de una carpeta llamada moodle. Puedes mover el contenido de esa carpeta a la ruta en la que estamos a través del siguiente comando:

mv moodle/* moodle/.* .

Una vez que tienes el contenido en el directorio de tu instalación, elimina la carpeta moodle y el fichero moodle-latest-403.tgz:

rm -rf moodle
rm moodle-latest-403.tgz

2. Crea la carpeta moodledata

El siguiente paso es crear la carpeta moodledata.

Esta es la carpeta en donde se almacenará todo el contenido subido a la instalación de Moodle.

¡Ojo! Por seguridad, esta carpeta debe crearse en la raíz del hosting, para ello ejecuta:

mkdir /home/lucushost/moodledata

Y luego con el comando chmod le asignamos los permisos correctos:

chmod 770 /home/lucushost/moodledata

3. Crea la base de datos

Ahora que tienes la estructura de ficheros de Moodle, el siguiente paso es crear la base de datos para la instalación. Esto puedes hacerlo a través de la interfaz gráfica de cPanel en el apartado «Asistente de bases de datos MySQL».

Lo primero de todo, nómbrala:

Crear una base de datos en cPanel

A continuación, crea el usuario y una contraseña.

Crear un usuario para una base de datos en cPanel

Por último, asigna todos los permisos. Recuerda hacer clic en «Hacer cambios» para que se aplique la configuración.

Crear un usuario a una base de datos en cPanel

4. Ejecuta el script de la instalación

Ahora que tienes la base de datos creada, ya puedes ejecutar el script de instalación de Moodle:

php admin/cli/install.php \
--chmod=2770 \
--lang=es \
--wwwroot=https://moodle.alvarovillar.lucusprueba.es \
--dataroot=/home/lucushost/moodledata \
--dbtype=mariadb \
--dbhost=localhost \
--dbname=lucushost_nombrebbdd \
--dbuser=lucushost_usuariobbdd \
--dbpass=contraseñabbdd \
--fullname="Mi Plataforma Moodle" \
--shortname="Moodle" \
--adminuser=usuariomoodle \
--adminpass=contraseñamoodle \
--adminemail=correodemoodle@dominio.com \
--non-interactive \
--agree-license

Importante: cambia los valores según lo que necesites para tu instalación.

A continuación, te explico el significado de cada parámetro del comando:

php admin/cli/install.php

Ejecuta el script de instalación de Moodle desde la línea de comandos utilizando PHP.

--chmod=2770

Define los permisos que tendrás las carpetas y archivos de Moodle. En este ejemplo establecemos 2770:

  • 2: garantiza que todos los ficheros y archivos dentro de la carpeta de Moodle tengan los mismos permisos
  • 7: permisos de lectura, escritura y ejecución para el propietario.
  • 7: permisos de lectura, escritura y ejecución para el grupo.
  • 0: sin permisos para otros usuarios.
--lang=es

Establece en español el idioma de la instalación de Moodle.

--wwwroot=https://moodle.alvarovillar.lucusprueba.es

Define la URL de la instalación de Moodle. Debe de coincidir con el dominio o subdominio que utilices para realizar la instalación.

--dataroot=/home/lucushost/moodledata

Es la ruta de la carpeta “moodledata” que es donde se almacenará todo el contenido que subamos al Moodle.

--dbtype=mariadb

Define el tipo de base de datos que utilizará Moodle. En este caso es mariadb, pero si la base de datos fuera MySQL, deberías de establecer mysqli.

--dbhost=localhost

Especifica el servidor de la base de datos. En este caso, al almacenarse la base de datos en el propio hosting, el servidor debe de ser “localhost”.

--dbname=lucushost_nombrebbdd

Nombre de la base de datos que utilizará la instalación.

--dbuser=lucushost_usuariobbdd

Nombre del usuario de la base de datos.

--dbpass=contraseñabbdd

Contraseña del usuario de la base de datos.

--fullname="Mi Plataforma Moodle"

El nombre completo del sitio de Moodle que se mostrará en la cabecera de la web.

--shortname="Moodle"

El nombre corto de la instalación de Moodle. Se utiliza como identificador en algunas configuraciones internas de la instalación.

--adminuser=usuariomoodle

El nombre de usuario de administración de Moodle (con el que accederemos a la plataforma)

--adminpass=contraseñamoodle

La contraseña de acceso a Moodle.

--adminemail=correodemoodle@dominio.com

El correo electrónico del administrador de Moodle. Debe de ser una la que tengamos acceso, ya que se utiliza para restablecer la contraseña y también para enviar notificaciones de Moodle.

--non-interactive --agree-license

Con este parámetro indicamos que la instalación se realice automatizada y sin requerir interacción manual.

--agree-license

Acepta los términos de la licencia de Moodle para que se pueda realizar la instalación.

En cuanto la instalación se haya completado, verás este mensaje:

Instalación de Moodle por línea de comandos completada

Actualizar Moodle

Si necesitas actualizar Moodle a una versión superior, puedes hacerlo mediante este comando:

php admin/cli/upgrade.php

Si ya tienes Moodle trabajando con la última versión, se mostrará un mensaje como este:

Comando que indica que no necesitas actualizar Moodle

Activar el modo mantenimiento

Siempre que realices modificaciones o actualizaciones en tu Moodle, puede ser interesante activar el modo mantenimiento para evitar que los usuarios accedan al sitio mientras realizas cambios.

A través de terminal, puedes activar el modo mantenimiento con el siguiente comando:

php admin/cli/maintenance.php --enable

Comando para activar el modo mantenimiento de Moodle

Para desactivarlo usa el siguiente comando:

php admin/cli/maintenance.php --disable

Comando para desactivar el modo mantenimiento de Moodle

Cambiar la contraseña de un usuario

También hay un comando que te permite modificar rápidamente la contraseña de acceso de un usuario. Esto es especialmente útil si no tienes acceso al backend de tu instalación.

Basta con ejecutar:

php admin/cli/reset_password.php --username=usuariomoodle --password=nuevacontraseña

Comando de Moodle para cambiar la contraseña de un usuario

Borrar la caché

La caché de Moodle almacena ficheros temporales que ayudan a mejorar el rendimiento de la web. En cambio, si realizas cambios importantes en tu web, como actualizaciones de módulo o cambios en las configuraciones internas, es importante eliminar la caché para asegurarse que el sitio funcione correctamente.

Para ello simplemente debes de ejecutar el siguiente comando:

php admin/cli/purge_caches.php

Comando de Moodle para borrar la caché

Comandos avanzados de Moodle

Acabamos de ver comandos Moodle que pueden ayudarte a realizar tareas básicas, como la instalación o actualización de tu aplicación. Ahora vamos a damos un paso más.

Hay una serie de comandos de Moodle que te permiten realizar y programar tareas avanzadas, sin tener que hacerlo desde la interfaz; ahorrando así mucho tiempo en la gestión de tu web.

¿Vemos de cuáles se trara?

Hacer un backup de un curso

Es algo en lo que siempre hacemos hincapié. Da igual el tipo de web que tengas, asegúrate siempre de tener una copia de seguridad. Nunca sabes cuando algo puede ir mal y necesites tirar de un backup para dejarlo todo funcionando en el menor tiempo posible.

Ya sabes que si tienes tu Hosting Moodle con nosotros, dispones de la herramienta Premium Backup en tu área de clientes. Con ella tendrás dos copias de seguridad al día de toda tu cuenta y te permite realizar cualquier restauración a golpe de clic.

Pero si necesitas un backup de un curso en concreto, algo bastante habitual si trabajas con este CMS, puedes hacerlo tú mismo a través de la línea de comandos de Moodle. Tan solo tienes que ejecutar:

php admin/cli/backup.php --courseid=ID_del_curso --destination=/ruta/del/backup

Comando de Moodle para hacer una copia de seguridad de un curso

Recuerda sustituir ID_del_curso por el identificador del curso sobre el que quieres hacer el backup.

Eliminar un curso

¿Y si necesito eliminar un curso? ¿También puedo hacerlo a través de la línea de comandos de Moodle?

Pues claro que sí. Simplemente tienes que ejecutar el siguiente comando:

php admin/cli/delete_course.php --courseid=ID_DEL_CURSO

Una vez que lo ejecutes, te pedirá confirmación. Para indicar confirmar que lo quieres borrar, debes escribir en la terminal: y

Comando de Moosle para eliminar un curso

Convertir tablas de InnoDB a Barracuda

¿Tienes en Moodle un aviso que te recomienda convertir las tablas InnoDB a Barracuda?

El principal motivo es que las tablas Antelope no admiten más de 10 columnas de texto, por lo que si utilizas plugins o complementos en tu aplicación que requieran más columnas de texto, es posible que surjan errores o fallos que afecten al funcionamiento de tu sitio web.

Además, Barracuda ofrece mejoras a nivel de rendimiento y optimización, así que más que una recomendación es una obligación 🙂

Aunque hay varias formas de hacerlo, por ejemplo mediante un script o manualmente en phpMyAdmin, la forma más sencilla es a través de la línea de comandos de Moodle. Para realizar esta tarea tan solo debes ejecutar el siguiente comando:

php admin/cli/mysql_compressed_rows.php -f

Las aplicaciones que trabajen con una versión reciente de Moodle no necesitan hacer este cambio. De hecho, si ejecutas este comando, verás un mensaje de este tipo:

Comando de Moodle para convertir tablas InnoDB a Barracuda

Revisar la estructura de la base de datos

Algunos problemas de Moodle pueden estar causados por errores en la estructura de la base de datos. Por ejemplo, tablas incompletas o configuraciones incorrectas.

Pero, ¿cómo sé si mi base de datos tiene algún error? Tienes este comando que automáticamente revisa la estructura y te informa si detecta algún error en la base de datos:

php admin/cli/check_database_schema.php

Comando de Moodle para revisar la estructura de la base de datos

¡Ojo! Si detecta algún error no lo soluciona, solamente te informa.

Administrar tareas programadas de Moodle

Las tareas programadas de Moodle son procesos que se ejecutan de forma automática para garantizar el funcionamiento de la web. Entre ellas se incluyen el envío de correos, tareas de mantenimiento, vaciado de caché, generación de informes…

Si quieres saber cuáles son las tareas programadas de tu Moodle, puedes ejecutar este comando para obtener un listado:

php admin/cli/scheduled_task.php --list

Comando de Moodle para listar las tareas programadas

Como puedes ver, al ejecutar el comando obtienes un listado con el nombre de la tarea, frecuencia de ejecución, última y próxima realización:

Si tienes tareas pendientes y quieres que se ejecuten ya, aplica el siguiente comando:

php admin/cli/cron.php

Para que Moodle funcione correctamente, es muy recomendable automatizar la ejecución de este comando. De no ser así, algunas tareas podrían no ejecutarse.

La recomendación es configurar el comando php admin/cli/cron.php para que se ejecute cada minuto. Puedes establecer esta configuración desde el panel de control cPanel, accediendo a la sección «Trabajos de cron».

La configuración que debes establecer es la siguiente:

Crear un cron en cPanel

Hecho esto, pulsa en «Añadir nuevo trabajo de cron» y guarda los datos.

De esta forma, cada minuto se ejecutará php admin/cli/cron.php, es decir, se ejecutarán todas las tareas programadas de Moodle.

Si quieres entender mejor como funciona esta opción de cPanel, aquí te dejo una guía sobre tareas cron en la que se explica paso a paso cómo crearlas y configurarlas correctamente en tu plan de hosting.

Domina la terminal de Moodle y ahorra tiempo

Si es la primera vez que ves algo acerca de la terminal de Moodle, puede parecer complicado. Esto mismo le pasa a muchos usuarios cuando están empezando con WP-CLI de WordPress.

Eso sí, en cuanto te familiarizas un poco con los comandos más básicos y realices alguna tarea más avanzada, descubrirás todo el potencial de la terminal. Verás que trabajar por línea de comandos te da mucho más control sobre tu web, pero también te permite ahorrar tiempo y automatizar tareas, algo importantísimo sobre todo si tienes una instalación grande.

Con el tiempo ya me dirás si prefieres la terminal o el backend 😛

¡Puntúa este artículo!

Total votos: 0. Promedio: 0

María Acibeiro

Dicen que si trabajas en lo que te gusta, no tendrás que trabajar nunca más. Así que, por aquí nos veremos mucho más de lo que te imaginas 😜

No hay comentarios

Escribe un comentario