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:
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.
sudo apt update && sudo apt upgrade -y
sudo apt install neofetch htop net-tools -y
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.
sudo apt update
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
unzip: Necesario para descomprimir los archivos de Moodle.nginx: El servidor web.mariadb-server: El servidor de base de datos MariaDB.php, php-cli, php-fpm: Los paquetes base de PHP y el FastCGI Process
Manager.php-*: Son módulos necesarios para que Moodle funcione correctamente
(soporte para MySQL, internacionalización, XML, cURL, manejo de imágenes, cadenas multibyte, compresión,
SOAP, aritmética de precisión, caché de código, y Redis).Para evitar conflictos, si tenías Apache instalado, es recomendable desinstalarlo. Luego, realizaremos una limpieza para eliminar paquetes innecesarios.
sudo apt remove apache2 -y
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.
sudo systemctl restart nginx
systemctl status nginx.
Configuraremos el acceso a la base de datos y crearemos la base de datos y el usuario que utilizará Moodle.
sudo mysql
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;
mysql -u root -p
Se te pedirá que ingreses la contraseña.
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;
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.
wget -O moodle.zip https://packaging.moodle.org/stable500/moodle-latest-500.zip
Asegurate que el link de descarga sea el correcto.
sudo mkdir /var/sites
sudo unzip -d /var/sites/ moodle.zip
sudo mv /var/sites/moodle /var/sites/site.moodle.local
sudo chown -R www-data:www-data /var/sites/site.moodle.local
sudo chmod -R 755 /var/sites/site.moodle.local
sudo mkdir /var/sites/data
sudo mkdir /var/sites/data/moodledata
sudo chown -R www-data:www-data /var/sites/data/moodledata
sudo chmod -R 755 /var/sites/data/moodledata
Crearemos un archivo de configuración de sitio virtual en Nginx para indicarle cómo servir los archivos de Moodle.
sites-available:
sudo nano /etc/nginx/sites-available/site.moodle.local
.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;
}
}
sites-available al directorio
sites-enabled para activar el sitio:
sudo ln -s /etc/nginx/sites-available/site.moodle.local /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
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.
sudo nano /etc/php/8.3/fpm/php.ini
; 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.
sudo systemctl restart php8.3-fpm
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.
localhost:81.
http://your_server_ip:81
/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.