Guía Detallada de Instalación de Moodle 5.0 en Ubuntu 24.04

Guia elaborada por Robin Lugo Boero


Esta guía te llevará a través del proceso de instalación de un servidor Moodle en Ubuntu 24.04, utilizando Nginx como servidor web, MariaDB 10.11 como sistema de gestión de base de datos y PHP 8.3.

Requisitos Previos:

Paso 1: Actualización del Sistema, instalación de herramientas de administración y Adición del Repositorio y llaves de MariaDB

Es fundamental asegurarse de que tu sistema esté actualizado antes de comenzar la instalación. También agregaremos el repositorio oficial de MariaDB para obtener la versión 10.11.

  1. Abre una terminal en tu servidor Ubuntu.
  2. Actualiza la lista de paquetes e instala las actualizaciones existentes:
    sudo apt update && sudo apt upgrade -y
  3. Instala otras herramientas utiles para la administración del sistema:
    sudo apt install neofetch htop net-tools -y
  4. Instala las herramientas necesarias para agregar repositorios HTTPS y el keyring de MariaDB:
    sudo apt-get install apt-transport-https curl
    sudo mkdir -p /etc/apt/keyrings
    sudo curl -o /etc/apt/keyrings/mariadb-keyring.pgp 'https://mariadb.org/mariadb_release_signing_key.pgp'

    Confirma la adición de la clave para continuar.

  5. Actualiza la lista de paquetes nuevamente para incluir los paquetes del nuevo repositorio de MariaDB:
    sudo apt update

Paso 2: Instalación de Nginx, MariaDB Server y PHP

Ahora instalaremos los componentes principales de nuestro stack: el servidor web Nginx, el servidor de base de datos MariaDB 10.11 y PHP 8.3 con las extensiones necesarias para Moodle.

sudo apt install unzip nginx mariadb-server php php-cli php-fpm php-mysql \
php-intl php-xml php-xmlrpc php-curl php-gd php-mbstring php-zip \
php-soap php-bcmath php-opcache php-redis -y

Paso 3: Eliminación de Software Conflictivo y Limpieza del Sistema

Para evitar conflictos, si tenías Apache instalado, es recomendable desinstalarlo. Luego, realizaremos una limpieza para eliminar paquetes innecesarios.

  1. Desinstala Apache2 (se instalo automáticamente con php):
    sudo apt remove apache2 -y
  2. Ejecuta apt autoremove para eliminar dependencias que ya no son necesarias:
    sudo apt autoremove -y

    Esto ayuda a liberar espacio en disco y mantener el sistema limpio de paquetes inncesarios.

  3. Aunque reiniciaremos Nginx después de configurarlo, si hubo algún cambio significativo o conflicto previo, puedes reiniciar el servicio de Nginx ahora:
    sudo systemctl restart nginx
  4. El servicio Nginx se ejecutara correctamente. Compruebalo con systemctl status nginx.

Paso 4: Configuración Inicial de MariaDB

Configuraremos el acceso a la base de datos y crearemos la base de datos y el usuario que utilizará Moodle.

  1. Inicia sesión en la consola de MariaDB como usuario root de sistema:
    sudo mysql
  2. Dentro de la consola de MariaDB, cambia la contraseña del usuario root de la base de datos. Reemplaza SecurePasswordForRoot con una contraseña fuerte y segura.
    FLUSH PRIVILEGES;
    ALTER USER 'root'@'localhost' IDENTIFIED BY 'SecurePasswordForRoot';
    FLUSH PRIVILEGES;
    EXIT;
  3. Vuelve a iniciar sesión en la consola de MariaDB, esta vez utilizando la contraseña que acabas de establecer para el usuario root de la base de datos:
    mysql -u root -p

    Se te pedirá que ingreses la contraseña.

  4. Crea la base de datos para Moodle y un usuario específico para que Moodle acceda a ella. Reemplaza db_moodle con el nombre que desees para la base de datos y moodleuser con el nombre de usuario que prefieras. Reemplaza SecurePasswordForMoodleUser123 con una contraseña fuerte y segura para este usuario.
    CREATE DATABASE db_moodle CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
    CREATE USER 'moodleuser'@'localhost' IDENTIFIED BY 'SecurePasswordForMoodleUser123';
    GRANT ALL PRIVILEGES ON db_moodle.* TO 'moodleuser'@'localhost';
    FLUSH PRIVILEGES;
    EXIT;

Paso 5: Descarga y Preparación de los Archivos de Moodle

Descargaremos la última versión estable de Moodle (5.0+) y la colocaremos en el directorio donde Nginx servirá los archivos. También crearemos el directorio de datos de Moodle.

  1. Descarga el archivo ZIP de la última versión estable de Moodle:
    wget -O moodle.zip https://packaging.moodle.org/stable500/moodle-latest-500.zip

    Asegurate que el link de descarga sea el correcto.

  2. Crea un directorio para tus sitios web (si no existe) y descomprime el archivo de Moodle en él:
    sudo mkdir /var/sites
    sudo unzip -d /var/sites/ moodle.zip
  3. Renombra el directorio descomprimido a un nombre más amigable, por ejemplo, el nombre de tu sitio:
    sudo mv /var/sites/moodle /var/sites/site.moodle.local
  4. Asigna los permisos adecuados al directorio de Moodle para que el servidor web (www-data) pueda leer y escribir en él:
    sudo chown -R www-data:www-data /var/sites/site.moodle.local
    sudo chmod -R 755 /var/sites/site.moodle.local
  5. Crea el directorio de datos de Moodle fuera del directorio accesible por el navegador web. Este directorio almacenará los archivos subidos por los usuarios y otros datos de Moodle.
    sudo mkdir /var/sites/data
    sudo mkdir /var/sites/data/moodledata
  6. Asigna los permisos adecuados al directorio de datos de Moodle:
    sudo chown -R www-data:www-data /var/sites/data/moodledata
    sudo chmod -R 755 /var/sites/data/moodledata

Paso 6: Configuración de Nginx para Servir Moodle

Crearemos un archivo de configuración de sitio virtual en Nginx para indicarle cómo servir los archivos de Moodle.

  1. Crea un nuevo archivo de configuración para tu sitio Moodle en el directorio sites-available:
    sudo nano /etc/nginx/sites-available/site.moodle.local
  2. Pega la siguiente configuración en el archivo. Esta configuración le dice a Nginx que escuche en el puerto 81, sirva los archivos desde el directorio de Moodle y procese los archivos .php usando PHP-FPM.
    server {
        listen 81;
        server_name site.moodle.local;
        root /var/sites/site.moodle.local;
        index index.php index.html index.htm;
        access_log /var/log/nginx/moodle.access.log;
        error_log /var/log/nginx/moodle.error.log;
    
        location / {
            try_files $uri $uri/ =404;
        }
    
        location ~ [^/]\.php(/|$) {
            fastcgi_split_path_info ^(.+?\.php)(/.*)$;
            fastcgi_pass unix:/run/php/php8.3-fpm.sock;
            fastcgi_index index.php;
            include fastcgi_params;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            fastcgi_param PATH_INFO $fastcgi_path_info;
        }
    
        location ~* /(?:\.ht|db|bin|\.git) {
            deny all;
        }
    }
  3. Guarda (Ctrl + O) y cierra el archivo (Ctrl + X).
  4. Crea un enlace simbólico desde el archivo de configuración en sites-available al directorio sites-enabled para activar el sitio:
    sudo ln -s /etc/nginx/sites-available/site.moodle.local /etc/nginx/sites-enabled/
  5. Verifica la sintaxis de la configuración de Nginx para asegurarte de que no haya errores:
    sudo nginx -t
  6. Si la prueba es exitosa, recarga Nginx para aplicar los cambios:
    sudo systemctl reload nginx

Paso 7: Configuración de PHP-FPM

Ajustaremos algunos parámetros en la configuración de PHP-FPM para optimizar el rendimiento y permitir subidas de archivos más grandes en Moodle.

  1. Edita el archivo de configuración principal de PHP 8.3 FPM:
    sudo nano /etc/php/8.3/fpm/php.ini
  2. Busca las siguientes directivas y asegúrate de que tengan los valores especificados (descomenta las líneas si es necesario eliminando el ; al principio):
    memory_limit = 256M
    upload_max_filesize = 100M
    post_max_size = 100M
    max_execution_time = 300
    max_input_vars = 5000

    Modifica esto valores según tus necesidades, siempre respetando el mínimo requerido por la aplicación.
    Busca las variables del archivo con Ctrl + w.

  3. Guarda (Ctrl + O) y cierra el archivo (Ctrl + X).
  4. Reinicia el servicio de PHP-FPM para que los cambios surtan efecto:
    sudo systemctl restart php8.3-fpm

Paso 8: Acceso al Instalador Web de Moodle

Con todos los componentes instalados y configurados, ahora puedes acceder al instalador web de Moodle para completar la instalación a través de tu navegador.

  1. Abre un navegador web en una computadora que pueda acceder a tu servidor.
  2. Ingresa la dirección IP de tu servidor seguida del puerto 81. Si estás realizando la instalación en tu máquina local, puedes usar localhost:81.
    http://your_server_ip:81
  3. Sigue las instrucciones en pantalla en el instalador web de Moodle. Se te pedirá que especifiques la base de datos que creaste, el usuario y la contraseña, así como la ruta al directorio de datos de Moodle (/var/sites/data/moodledata).

¡Felicidades! Has completado los pasos para configurar un servidor Moodle básico. Ahora puedes continuar con la configuración de Moodle a través de la interfaz web.