Cómo instalar Moodle con Nginx y Let’s Encrypt SSL en Ubuntu 20.04
Moodle es un sistema de gestión del aprendizaje gratuito y de código abierto escrito en PHP. Ofrece a los tutores e instructores una forma de crear cursos para sus alumnos o estudiantes. Moodle proporciona un sistema integrado robusto y seguro y viene con un panel de control personalizado que ayuda a los usuarios a acceder a los cursos actuales, pasados o futuros, así como a revisar el trabajo pendiente. Lo utilizan muchas escuelas, universidades y organizaciones de todo el mundo y proporciona una mejor experiencia de aprendizaje. Ofrece un rico conjunto de funciones, como wiki, calificación, envío de tareas, cuestionarios en línea, tableros de discusión y mucho más.
En este tutorial, te mostraremos cómo instalar Moodle con el servidor web Nginx y Let’s Encrypt SSL en Ubuntu 20.04.
Requisitos previos
- Un servidor con Ubuntu 20.04.
- Un nombre de dominio válido apuntado con la IP de tu servidor.
- Una contraseña de root configurada el servidor.
Cómo empezar
Antes de empezar, tendrás que actualizar los paquetes de tu sistema a la última versión. Puedes actualizarlos mediante el siguiente comando:
apt-get update -y
Una vez que tu servidor esté actualizado, puedes pasar al siguiente paso.
Instalar LEMP
En primer lugar, tendrás que instalar en tu sistema las librerías de Apache, MariaDB, PHP y otras librerías de PHP. Puedes instalarlos todos con el siguiente comando:
apt-get install nginx mariadb-server php-fpm php-common php-mysql php-gmp php-curl php-intl php-mbstring php-soap php-xmlrpc php-gd php-xml php-cli php-zip unzip git curl -y
Una vez instalados todos los paquetes, edita el archivo php.ini y cambia algunos ajustes:
nano /etc/php/7.4/fpm/php.ini
Cambia las siguientes líneas:
memory_limit = 256M cgi.fix_pathinfo = 0 upload_max_filesize = 100M max_execution_time = 360 date.timezone = America/Chicago
Guarda y cierra el archivo y luego reinicia el servicio PHP-FPM para aplicar los cambios:
systemctl restart php7.4-fpm
Una vez que hayas terminado, puedes pasar al siguiente paso.
Crear una base de datos
Moodle utiliza MySQL o MariaDB como base de datos, por lo que tendrás que crear una base de datos y un usuario para Moodle.
Primero, conéctate al shell de MySQL con el siguiente comando:
mysql
Una vez conectado, crea una base de datos y un usuario con el siguiente comando:
CREATE DATABASE moodledb;
CREATE USER 'moodle'@'localhost' IDENTIFIED BY 'password';
A continuación, concede todos los privilegios a la base de datos de Moodle con el siguiente comando:
GRANT ALL ON moodledb.* TO 'moodle'@'localhost' WITH GRANT OPTION;
A continuación, vacía los privilegios y sal de MySQL con el siguiente comando
FLUSH PRIVILEGES;
EXIT;
A continuación, edita el archivo de configuración por defecto de MariaDB y define el formato innodb_file_format:
nano /etc/mysql/mariadb.conf.d/50-server.cnf
Añade las siguientes líneas dentro de la sección [mysqld]:
[mysqld] innodb_file_format = Barracuda innodb_file_per_table = 1 innodb_large_prefix = ON
Guarda el archivo y luego reinicia el servicio MariaDB para aplicar los cambios:
systemctl restart mariadb
Instalar Moodle
Primero, cambia el directorio al directorio raíz de Apache y descarga la última versión de Moodle con el siguiente comando:
cd /var/www/html
git clone -b MOODLE_38_STABLE git://git.moodle.org/moodle.git moodle
Una vez completada la descarga, edita el config.php de Moodle y define el tipo de base de datos:
nano /var/www/html/moodle/config.php
Busca la siguiente línea:
$CFG->dbtype = 'mysqli';
Y, sustitúyela por la siguiente línea:
$CFG->dbtype = 'mariadb';
Guarda y cierra el archivo y luego crea un directorio de datos de Moodle estableciendo la propiedad y el permiso adecuados con el siguiente comando:
mkdir -p /var/www/html/moodledata
chown -R www-data:www-data /var/www/html/moodle
chmod -R 755 /var/www/html/*
chown www-data:www-data /var/www/html/moodledata
Una vez que hayas terminado, puedes pasar al siguiente paso.
Configurar Nginx para Moodle
A continuación, tendrás que crear un archivo de configuración del host virtual Nginx para alojar Moodle:
nano /etc/nginx/conf.d/moodle.conf
Añade las siguientes líneas:
server { listen 80; root /var/www/html/moodle; index index.php index.html index.htm; server_name moodle.example.com; client_max_body_size 100M; autoindex off; location / { try_files $uri $uri/ =404; } location /dataroot/ { internal; alias /var/www/html/moodledata/; } location ~ [^/].php(/|$) { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php7.4-fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
Guarda y cierra el archivo y luego verifica que Nginx no tenga ningún error de sintaxis con el siguiente comando:
nginx -t
Deberías obtener la siguiente salida:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Por último, reinicia el servicio Nginx para aplicar los cambios:
systemctl restart nginx
En este punto, Nginx está configurado para alojar Moodle. Ahora puedes pasar al siguiente paso.
Acceder a la interfaz web de Moodle
Ahora, abre tu navegador web y accede a la interfaz web de Moodle utilizando la URL http://moodle.example.com. Deberías ver la página de instalación de Moodle:
Selecciona tu idioma y haz clic en Siguiente. Deberías ver la siguiente página:
Proporciona tu dirección web de Moodle, la ruta del directorio, la ruta del directorio de datos y haz clic en Siguiente. Deberías ver la siguiente página:
Selecciona tu tipo de controlador de base de datos y haz clic en Siguiente. Deberías ver la siguiente página:
Proporciona el host de tu base de datos, el nombre de la base de datos, el nombre de usuario, la contraseña y haz clic en Siguiente. Deberías ver la siguiente página:
Haz clic en el botón Continuar para confirmar todas las condiciones. Deberías ver la siguiente página:
Asegúrate de que todas las extensiones de PHP necesarias están instaladas y haz clic en Continuar. Deberías ver la siguiente página:
Haz clic en Continuar. Deberías ver la siguiente página:
Proporciona tu nombre de usuario, contraseña, correo electrónico, país, zona horaria y haz clic en Actualizar perfil. Deberías ver la siguiente página:
Proporciona tu configuración de la página principal y haz clic en el botón Guardar cambios para guardar los cambios.
Asegurar Moodle con Let’s Encrypt SSL
A continuación, tendrás que instalar la herramienta Certbot para descargar Let’s Encrypt SSL y configurar Nginx para que utilice este SSL.
Primero, instala Certbot con el siguiente comando:
apt-get install python3-certbot-nginx -y
Una vez instalado, ejecuta el siguiente comando para descargar todo el SSL y configurar Nginx para que lo utilice:
certbot --nginx -d moodle.example.com
Se te pedirá que proporciones una dirección de correo electrónico válida y que aceptes las condiciones del servicio, como se muestra a continuación:
Saving debug log to /var/log/letsencrypt/letsencrypt.log Plugins selected: Authenticator nginx, Installer nginx Enter email address (used for urgent renewal and security notices) (Enter 'c' to cancel): [email protected] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Please read the Terms of Service at https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must agree in order to register with the ACME server at https://acme-v02.api.letsencrypt.org/directory - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (A)gree/(C)ancel: A - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Would you be willing to share your email address with the Electronic Frontier Foundation, a founding partner of the Let's Encrypt project and the non-profit organization that develops Certbot? We'd like to send you email about our work encrypting the web, EFF news, campaigns, and ways to support digital freedom. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (Y)es/(N)o: Y Obtaining a new certificate Performing the following challenges: http-01 challenge for moodle.example.com Waiting for verification... Cleaning up challenges Deploying Certificate to VirtualHost /etc/nginx/conf.d/moodle.conf
A continuación, elige si quieres redirigir el tráfico HTTP a HTTPS, como se muestra a continuación:
Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1: No redirect - Make no further changes to the webserver configuration. 2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for new sites, or if you're confident your site works on HTTPS. You can undo this change by editing your web server's configuration. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2
Escribe 2 y pulsa Intro para continuar. Deberías ver el siguiente resultado:
Redirecting all traffic on port 80 to ssl in /etc/nginx/conf.d/moodle.conf - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Congratulations! You have successfully enabled https://moodle.example.com You should test your configuration at: https://www.ssllabs.com/ssltest/analyze.html?d=moodle.example.com - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/moodle.example.com/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/moodle.example.com/privkey.pem Your cert will expire on 2021-05-23. To obtain a new or tweaked version of this certificate in the future, simply run certbot again with the "certonly" option. To non-interactively renew *all* of your certificates, run "certbot renew" - Your account credentials have been saved in your Certbot configuration directory at /etc/letsencrypt. You should make a secure backup of this folder now. This configuration directory will also contain certificates and private keys obtained by Certbot so making regular backups of this folder is ideal. - If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-le - We were unable to subscribe you the EFF mailing list because your e-mail address appears to be invalid. You can try again later by visiting https://act.eff.org.
Ahora puedes acceder al sitio web de Moodle utilizando la URL http://moodle.example.com
Conclusión
Enhorabuena! has instalado con éxito Moodle con Nginx y Let’s Encrypt SSL en Ubuntu 20.04. Ahora puedes crear tu propio Sistema de Gestión del Aprendizaje con Moodle fácilmente.