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
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
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.
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.
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.
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
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
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
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;
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.
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 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
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«.
Introduce tu nombre de dominio y el directorio de datos de Moodle en‘/var/www/moodledata‘.
Selecciona‘MariaDB‘ como base de datos por defecto para Moodle.
Introduce los detalles de tu base de datos MariaDB como dbname, dbuser y password.
Haz clic en«Continuar«.
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’.
Ahora verás la instalación de Moodle como la siguiente:
Una vez finalizada la instalación, introduce tus datos de administrador (nombre de usuario, correo electrónico y contraseña).
Ahora introduce la información de tu sitio Moodle.
Por último, verás el siguiente panel de administración de Moodle.
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.