Cómo instalar Moodle LMS en un servidor Debian 12

Moodle es una solución abierta para el Sistema de Gestión del Aprendizaje (SGA). Es una plataforma para fines educativos, desde crear cursos online, gestionar escuelas online, gestionar contenidos y ofrecer aprendizaje colaborativo. Moodle está escrito principalmente en PHP con MySQL/MariaDB como base de datos y puede ejecutarse en cualquier sistema operativo. Puedes elegir entre Apache o Nginx para tu instalación de Moodle.

En esta guía, aprenderás a instalar el Sistema de Gestión del Aprendizaje Moodle en un servidor Debian 12. Ejecutarás Moodle con la pila LAMP (Linux, Apache, MariaDB y PHP), asegurarás tu servidor Debian con UFW (Uncomplicated Firewall), y luego asegurarás Moodle con HTTP a través de Certbot y Letsencrypt.

Requisitos previos

Asegúrate de que tienes lo siguiente antes de empezar:

  • Un servidor Debian 12
  • Un usuario no root con privilegios de administrador
  • Un nombre de dominio apuntando a la dirección IP del servidor

Instalación de dependencias

El LMS de Moodle está escrito en PHP y MySQL, por lo que debes instalar esos paquetes en tu sistema. En este ejemplo, ejecutarás Moodle con la pila LAMP (Linux, Apache, MariaDB y PHP). Así que, de momento, instalarás LAMP en tu servidor Debian.

Antes de instalar ningún paquete, ejecuta el siguiente comando para actualizar el índice de paquetes de Debian.

sudo apt update

actualizar repo

Ahora instala las dependencias de la pila LAMP (Linux, Apache, MariaDB y PHP) con el siguiente comando. Introduce «Y» para proceder a la instalación.

sudo apt install apache2 mariadb-server php-cli php-intl php-xmlrpc php-soap php-mysql php-zip php-gd php-tidy php-mbstring php-curl php-xml php-pear php-bcmath libapache2-mod-php

instalar lámpara

Una vez finalizada la instalación, comprueba el servicio «apache2» para asegurarte de que se está ejecutando.

sudo systemctl is-enabled apache2
sudo systemctl status apache2

A continuación puedes ver que el servidor web Apache se está ejecutando y está habilitado.

comprobar apache2

Ahora comprueba el servicio «mariadb» ejecutando el siguiente comando.

sudo systemctl is-enabled mariadb
sudo systemctl status mariadb

En el siguiente resultado puedes ver que el servidor MariaDB se está ejecutando.

comprobar mariadb

Por último, comprueba la versión de PHP y la lista de módulos habilitados mediante el siguiente comando.

php -v
php -m

Verás que PHP 8.2 está instalado con algunos módulos por defecto como ‘curl’, ‘exif’ y ‘date’ habilitados.

comprobar php

Instalar UFW (Cortafuegos sin complicaciones)

Después de haber instalado LAMP Stack, vamos a instalar UFW (Uncomplicated Firewall) para asegurar el servidor. A continuación, abre los puertos para los protocolos SSH, HTTP y HTTPS. Por último, iniciemos y habilitemos UFW.

Para instalar UFW, ejecuta el siguiente comando ‘apt’.

sudo apt install ufw

instalar ufw

Una vez instalado UFW, ejecuta el siguiente comando ‘ufw’ para abrir puertos para OpenSSH, HTTP (80) y HTTPS (443). Verás una salida como ‘Reglas actualizadas’.

sudo ufw allow OpenSSH
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

Ahora ejecuta el siguiente comando para iniciar y habilitar UFW en tu máquina Debian. Cuando se te solicite, introduce «y» para confirmar y continuar. Verás el mensaje «El cortafuegos está activo y activado al iniciar el sistema».

sudo ufw enable

activar ufw

Por último, comprueba el estado de UFW con el siguiente comando. Verás que UFW está ‘activo’ con OpenSSH, y que los puertos ’80’ y ‘443’ están‘PERMITIDOS’.

sudo ufw status

comprobar estado

Configurar el servidor MariaDB

Antes de instalar Moodle, tienes que cambiar el motor de almacenamiento por defecto a ‘innodb’ y configurar ‘Barracuda’ como formato por defecto. Después, también necesitas asegurar el servidor MariaDB y configurar la contraseña ‘root’ utilizando la utilidad ‘mariadb-secure-installation’.

Abre la configuración por defecto del servidor MariaDB ‘/etc/mysql/mariadb.conf.d/50-server.cnf’ con el editor ‘nano’.

sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf

Introduce la configuración que aparece a continuación para activar el formato ‘Barracuda’ y establecer el motor de almacenamiento por defecto en ‘InnoDB’.

innodb_file_format = Barracuda 
default_storage_engine = innodb
innodb_large_prefix = 1
innodb_file_per_table = 1

Guarda el archivo y sal del editor.

Ahora ejecuta el comando ‘systemctl’ que aparece a continuación para reiniciar el servidor MariaDB y aplicar tus cambios.

sudo systemctl restart mariadb

Después, ejecuta el comando ‘mariadb-secure-installation’ que aparece a continuación para asegurar la instalación de tu servidor MariaDB.

sudo mariadb-secure-installation

Con esto, se te preguntará por la configuración del servidor MariaDB:

  • Pulsa ENTER cuando se te pregunte por la contraseña de root (la configurarás más adelante)
  • Introduce ‘n’ cuando se te pregunte si quieres cambiar a la autenticación ‘unix_socket
  • Introduce ‘Y’ para configurar la contraseña raíz de MariaDB, luego escribe tu nueva contraseña y repite
  • Introduce «Y» para eliminar el usuario anónimo de MariaDB
  • Introduce «Y» de nuevo para desactivar el inicio de sesión remoto para el usuario root
  • Introduce «Y» para eliminar la base de datos por defecto «test» y sus privilegios
  • Introduce «Y» para recargar los privilegios de la tabla y aplicar tus cambios

Una vez terminado, ve al siguiente paso para crear una nueva base de datos y un nuevo usuario.

Crear una base de datos y un usuario para Moodle

Con el servidor MariaDB configurado, vamos ahora a crear una nueva base de datos y un nuevo usuario que serán utilizados por Moodle. Utilizarás el cliente ‘mariadb’ para acceder a MariaDB y crear una nueva base de datos y un nuevo usuario.

Accede al servidor MariaDB con el siguiente comando ‘mariadb’. Introduce tu contraseña de root de MariaDB cuando se te solicite.

sudo mariadb -u root -p

Ejecuta las siguientes consultas para crear una nueva base de datos y un nuevo usuario ‘moodle’ con la contraseña ‘MoodlePassw0rd’. Asegúrate de cambiar las siguientes credenciales de la base de datos con tu información.

CREATE DATABASE moodle DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
GRANT ALL ON moodle.* TO 'moodle'@'localhost' IDENTIFIED BY "MoodlePassw0rd";
FLUSH PRIVILEGES;

crear base de datos y usuario

Ahora ejecuta la siguiente consulta para comprobar el usuario ‘moodle’. Asegúrate de que el usuario ‘moodle’ puede acceder a la base de datos ‘moodle’.

SHOW GRANTS FOR moodle@localhost;

Por último, escribe ‘QUIT’ para salir del servidor MariaDB.

mostrar privilegios de la base de datos

Configurar PHP

Ahora que ya has configurado el servidor MariaDB y creado un nuevo usuario de base de datos, vamos a configurar el archivo ‘php.ini’ y a cambiar algunas configuraciones predeterminadas que necesita Moodle.

Abre el archivo ‘php.ini’ con el editor ‘nano’.

sudo nano /etc/php/8.2/apache2/php.ini

Cambia la configuración por defecto de PHP con lo siguiente. Puedes cambiar ‘memory_limit’ en función de la memoria de tu servidor.

memory_limit = 256M
upload_max_filesize = 60M
max_execution_time = 300
date.timezone = Europe/Amsterdam
max_input_vars = 5000

Cuando hayas terminado, guarda el archivo y sal del editor.

Por último, ejecuta el siguiente comando ‘systemctl’ para reiniciar el servidor web ‘apache2’ y aplicar tu nueva configuración PHP.

sudo systemctl restart apache2

Descargar el código fuente de Moodle

Después de configurar PHP, estás listo para descargar el código fuente de Moodle y, a continuación, configurar el directorio de instalación y el directorio ‘data’ para Moodle. En este ejemplo, configurarás el directorio de instalación de Moodle en ‘/var/www/moodle’ y el directorio de ‘datos’ en ‘/var/www/moodledata’.

Ve al directorio ‘/var/www’ y descarga el código fuente de Moodle con el siguiente comando ‘wget’.

cd /var/www
sudo wget https://download.moodle.org/download.php/direct/stable405/moodle-latest-405.tgz

Una vez descargado, ejecuta el comando «tar» para extraer el código fuente de Moodle y cambia el nombre del directorio extraído a «moodle». Con esto, tu instalación de Moodle estará ubicada en el directorio ‘/var/www/moodle’.

tar -xf moodle-latest-405.tgz

A continuación, crea un nuevo directorio ‘/var/www/moodledata’ que se utilizará como directorio de datos para tu instalación de Moodle.

mkdir -p /var/www/moodledata

Por último, ejecuta el siguiente comando para cambiar la propiedad de los directorios ‘/var/www/moodle’ y ‘/var/www/moodledata’ al usuario ‘www-data’. Y luego, asegúrate de que el usuario ‘www-data’ puede leer, escribir y ejecutar archivos dentro de esos directorios.

sudo chown -R www-data:www-data /var/www/moodle /var/www/moodledata
sudo chmod u+rwx /var/www/moodle /var/www/moodledata

configurar directorio moodle

Configurar el host virtual Apache

Ahora que has descargado Moodle, el siguiente paso es crear un nuevo archivo de host virtual Apache para Moodle. Para ello, asegúrate de que tienes un nombre de dominio resuelto/apuntado a la dirección IP del servidor.

Crea una nueva configuración de host virtual ‘/etc/apache2/sites-available/moodle.conf’ con el editor ‘nano’.

sudo nano /etc/apache2/sites-available/moodle.conf

Introduce la configuración que aparece a continuación para configurar un archivo de host virtual para Moodle. Asegúrate de cambiar el parámetro ‘NombreServidor’ por tu nombre de dominio.

<VirtualHost *:80>
DocumentRoot /var/www/moodle/
ServerName moodle.howtoforge.local
ServerAdmin [email protected]

<Directory /var/www/moodle/>
Options +FollowSymlinks
AllowOverride All
Require all granted
</Directory>

ErrorLog /var/log/apache2/moodle_error.log
CustomLog /var/log/apache2/moodle_access.log combined
</VirtualHost>

Guarda el archivo y sal del editor cuando hayas terminado.

Ahora ejecuta el comando ‘a2enmod’ que aparece a continuación para activar el módulo ‘rewrite’, y luego ejecuta el comando ‘a2ensite’ que aparece a continuación para activar el host virtual ‘moodle.conf’.

sudo a2enmod rewrite
sudo a2ensite moodle.conf

A continuación, ejecuta el comando «apachectl» para verificar la configuración de Apache. Si la configuración de Apache es correcta, verás un mensaje como «La sintaxis es correcta».

sudo apachectl configtest

configurar apache

Por último, ejecuta el comando «systemctl» para reiniciar el servidor web Apache y aplicar los cambios.

sudo systemctl restart apache2

Asegurar Moodle con HTTPS

Llegados a este punto, tu instalación de Moodle está lista. Antes de continuar, asegurarás Moodle con HTTPS mediante Certbot y Letsencrypt. Haz esto cuando estés instalando Moodle en un servidor público. Si estás en el desarrollo local, puedes omitirlo o implementar HTTPS a través de certificados autofirmados.

Instala el plugin ‘certbot’ y ‘python3-certbot-apache’ con el siguiente comando ‘apt’. Introduce ‘Y’ para confirmar la instalación.

sudo apt install certbot python3-certbot-apache

Una vez completada la instalación, ejecuta el siguiente comando ‘certbot’ para generar certificados SSL para Moodle. Asegúrate de cambiar el siguiente nombre de dominio y dirección de correo electrónico por tu dominio.

sudo certbot --apache --agree-tos --no-eff-email -m [email protected] -d moodle.howtoforge.local

Cuando termine, tus certificados SSL estarán disponibles en el directorio ‘/etc/letsencrypt/live/domain.com’ y tu instalación de Moodle estará funcionando bajo HTTPS.

Instalación de Moodle

Abre tu navegador web y visita el nombre de dominio de tu instalación de Moodle, como https://moodle.howtoforge.local/, y verás el asistente de instalación de Moodle.

Selecciona tu idioma por defecto para Moodle y haz clic en«Siguiente«.

seleccionar idioma

Introduce tu nombre de dominio y el directorio de datos de Moodle en‘/var/www/moodledata‘.

seleccionar dominio y directorio de datos

Selecciona‘MariaDB‘ como base de datos por defecto para Moodle.

controlador de base de datos mariadb

Introduce los detalles de tu base de datos MariaDB como dbname, dbuser y password.

configuración mariadb

Haz clic en«Continuar«.

copyright

Dentro de la sección ‘Comprobaciones del servidor’, asegúrate de que tu servidor Debian cumple con los requisitos de Moodle. El estado de cada elemento debe ser‘OK’.

comprobaciones del sistema

Ahora verás la instalación de Moodle como la siguiente:

instalación de moodle

Una vez finalizada la instalación, introduce tus datos de administrador (nombre de usuario, correo electrónico y contraseña).

usuario administrador

Ahora introduce la información de tu sitio Moodle.

información del sitio moodle

Por último, verás el siguiente panel de administración de Moodle.

salpicadero

Conclusión

¡Enhorabuena! Has completado la instalación del Sistema de Gestión del Aprendizaje (LMS) Moodle en el servidor Debian 12. Ya tienes Moodle funcionando con la pila LAMP (Linux, Apache, MariaDB y PHP) y protegido con UFW (cortafuegos sin complicaciones) y HTTPS a través de Certbot y Letsencrypt. A partir de aquí, puedes aplicar un nuevo tema para Moodle, instalar nuevos complementos para ampliar la funcionalidad, o puedes aprender la Guía del usuario de Moodle para gestionar tu instalación de Moodle.

También te podría gustar...