Cómo instalar la plataforma de aprendizaje Moodle con Nginx en CentOS 8


Moodle es el sistema de gestión de aprendizaje más popular del mundo para crear sitios sólidos de aprendizaje en línea. Cuenta con una variedad de actividades y herramientas educativas entre las que puede elegir, admite la gestión de evaluaciones y se envía con certificados personalizados. También permite la comunicación con sus estudiantes en tiempo real con una poderosa herramienta de videoconferencia. Además, está preparado para dispositivos móviles, por lo que sus estudiantes pueden aprender desde sus dispositivos móviles.

En esta página

1. Empiece por crear un subdominio que los usuarios utilizarán para acceder al sitio de aprendizaje en línea de Moodle. Por ejemplo, si su nombre de dominio es testprojects.me , puede crear un subdominio llamado learning.testprojects.me .

Abra la configuración de DNS avanzada de su nombre de dominio y agregue un registro A como se muestra en la siguiente imagen.

2. Antes de instalar Moodle, asegúrese de tener las extensiones PHP requeridas en su servidor, puede ejecutar el siguiente comando para instalarlas:

# dnf install php-common php-iconv php-curl php-mbstring php-xmlrpc php-soap php-zip php-gd php-xml php-intl php-json libpcre3 libpcre3-dev graphviz aspell ghostscript clamav

3. A continuación, cree una base de datos para la aplicación Moodle de la siguiente manera.

# mysql -u root -p

Luego cree la base de datos, el usuario de la base de datos y cree una contraseña segura para el uso.

MariaDB [(none)]> CREATE DATABASE moodledb;
MariaDB [(none)]> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,CREATE TEMPORARY TABLES,DROP,INDEX,ALTER ON moodledb.* TO 'moodleadmin'@'localhost' IDENTIFIED BY '[email protected]';
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> exit

4. Ahora descargue la última versión de Moodle (3.9 en el momento de escribir este artículo) desde el sitio web oficial del proyecto moodle, extraiga el archivo y muévalo a su webroot (/var/www/html/) directorio, luego configure los permisos y la propiedad apropiados para permitir que el servidor web acceda al directorio de Moodle, como se indica a continuación.

# wget -c https://download.moodle.org/download.php/direct/stable39/moodle-latest-39.tgz
# tar -xzvf  moodle-latest-39.tgz
# mv moodle /var/www/html/
# chmod 775 -R /var/www/html/moodle
# chown nginx:nginx -R /var/www/html/moodle

5. A continuación, cree el directorio moodledata, que es la ubicación de los archivos cargados o creados por la interfaz de Moodle, luego asigne los permisos y la propiedad adecuados para permitir que el servidor web tenga acceso de lectura y escritura:

# mkdir -p /var/www/html/moodledata
# chmod 770 -R /var/www/html/moodledata
# chown :nginx -R /var/www/html/moodledata

6. A continuación, vaya al directorio de instalación de Moodle y cree un archivo config.php a partir del archivo config.dist.php de muestra proporcionado, luego ábralo para editarlo y configurar algunos configuraciones clave para su plataforma Moodle, como los parámetros de conexión de la base de datos y la ubicación del sitio y dónde puede encontrar el directorio moodledata:

# cd /var/www/html/moodle/
# cp config-dist.php config.php
# vim config.php

Establezca el tipo de base de datos correcto, el host de la base de datos correcto, el nombre de la base de datos y el usuario de la base de datos y la contraseña del usuario.

$CFG->dbtype    = 'mariadb';      // 'pgsql', 'mariadb', 'mysqli', 'sqlsrv' or 'oci'
$CFG->dblibrary = 'native';     // 'native' only at the moment
$CFG->dbhost    = 'localhost';  // eg 'localhost' or 'db.isp.com' or IP
$CFG->dbname    = 'moodledb';     // database name, eg moodle
$CFG->dbuser    = 'moodleadmin';   // your database username
$CFG->dbpass    = '[email protected]zzwd0L2';   // your database password
$CFG->prefix    = 'mdl_';       // prefix to use for all table names

7. También configure la URL utilizada para acceder a su sitio de Moodle, esto especifica la ubicación de la wwwroot donde se encuentran sus archivos web de Moodle, y también la raíz de datos (el directorio moodledata):

$CFG->wwwroot   = 'http://learning.testprojects.me';
$CFG->dataroot  = '/var/www/html/moodledata';

8. En esta sección, necesita configurar NGINX para servir su aplicación Moodle. Necesita crear un bloque de servidor para él en la configuración de NGINX como se muestra.

# vim /etc/nginx/conf.d/moodle.conf

Copie y pegue la siguiente configuración en el archivo de configuración del bloque del servidor. Reemplace el nombre del servidor con el nombre de su subdominio creado anteriormente, y fastcgi_pass debe apuntar a php-fpm (tenga en cuenta que en CentOS 8, PHP-FPM acepta solicitudes FastCGI usando la dirección definida en /etc/nginx/conf.d/php- configuración de fpm.conf).

server{
   listen 80;
    server_name learning.testprojects.me;
    root        /var/www/html/moodle;
    index       index.php;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ ^(.+\.php)(.*)$ {
        fastcgi_split_path_info ^(.+\.php)(.*)$;
        fastcgi_index           index.php;
        fastcgi_pass            php-fpm;
        include                 /etc/nginx/mime.types;
        include                 fastcgi_params;
        fastcgi_param           PATH_INFO       $fastcgi_path_info;
        fastcgi_param           SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}

Guarde el archivo y ciérrelo.

9. Luego, verifique que la configuración de NGINX sea correcta, si está bien, reinicie los servicios nginx y php-fpm para aplicar los cambios recientes:

# nginx -t
# systemctl restart nginx
# systemctl restart php-fpm

10. Si tiene SELinux habilitado en su sistema, ejecute los siguientes comandos para establecer el contexto correcto para acceder a los archivos web de Moodle en el servidor:

# setsebool -P httpd_can_network_connect on
# chcon -R --type httpd_sys_rw_content_t /var/www/html

11. Además, asegúrese de que los servicios HTTP y HTTPS estén abiertos en el firewall para permitir el tráfico al servidor web NGINX:

# firewall-cmd --permanent --zone=public --add-service=http 
# firewall-cmd --permanent --zone=public --add-service=https
# firewall-cmd --reload

12. Para acceder al instalador web de Moodle, abra su navegador web y navegue usando el subdominio que creó anteriormente:

http://learning.testprojects.me

Una vez que se cargue la página de bienvenida, lea los términos y condiciones y haga clic en Continuar.

13. A continuación, el instalador web comprobará si su sistema cumple con los requisitos para ejecutar un sitio Moodle de la versión especificada. Puede desplazarse hacia abajo para ver más información.

14. El instalador se quejará de que HTTPS no está habilitado, ignore ese error por ahora (en la siguiente sección, mostraremos cómo habilitar HTTPS en Moodle) y haga clic en Continuar para iniciar la instalación real de los archivos web.

15. Ahora el instalador iniciará la instalación real de los archivos de Moodle como se muestra en la siguiente captura de pantalla. Una vez que esté completo, haga clic en Continuar.

16. En el siguiente paso, debe actualizar la cuenta de administrador de su sitio Moodle actualizando el nombre de usuario, contraseña, nombre y apellido, y dirección de correo electrónico. Luego, desplácese hacia abajo en la página y haga clic en Actualizar perfil.

17. Luego actualice la configuración de la página principal del sitio Moodle. Luego, desplácese hacia abajo y haga clic en Actualizar para comenzar a usar su sitio Moodle.

18. A continuación, debe registrar su sitio siguiendo las instrucciones en pantalla. Puede ir al tablero haciendo clic en el tablero.

HTTPS agrega la primera capa de seguridad a su sitio para permitir comunicaciones seguras entre sus usuarios y la aplicación Moodle (especialmente el servidor web NGINX que recibe solicitudes y entrega respuestas).

Puede comprar un certificado SSL/TLS de una CA comercial o usar Let’s Encrypt, que es gratuito y reconocido por todos los navegadores web modernos. Para esta guía, usaremos Let's Encrypt.

19. La implementación del certificado Let’s Encrypt se administra automáticamente mediante la herramienta certbot. Puede instalar certbot y otros paquetes necesarios con el siguiente comando:

# dnf install certbot python3-certbot-nginx

20. Luego, ejecute el siguiente comando para obtener un certificado Let's Encrypt y haga que Certbot edite su configuración NGINX automáticamente para servirla (también configurará HTTP para que se redirija automáticamente a HTTPS).

# certbot --nginx

21. Luego, ejecute el siguiente comando para habilitar la renovación automática del certificado Let's Encrypt SSL/TLS:

# echo "0 0,12 * * * root python3 -c 'import random; import time; time.sleep(random.random() * 3600)' && certbot renew -q" | sudo tee -a /etc/crontab > /dev/null

22. A continuación, actualice su configuración de Moodle para comenzar a usar HTTPS.

# vim /var/www/html/moodle/config.php

cambie la URL wwwroot de HTTP a HTTPS:

$CFG->wwwroot   = 'https://learning.testprojects.me';

23. Por último, pero no menos importante, confirme que su sitio Moodle ahora se ejecuta en HTTPS.

¡Eso es todo por ahora! Para obtener más información y opciones de configuración para ejecutar su nueva plataforma de aprendizaje, vaya al sitio web de Moodle y lea la documentación oficial.