Cómo instalar Moodle en Ubuntu Server 22.04

Introducción

Moodle es un sistema de gestión de aprendizaje (LMS) en línea gratuito y de código abierto que permite a los educadores crear un sitio web completamente funcional para cursos educativos, completo con una experiencia de aula en línea. Esta guía explica cómo puede instalar Moodle en un servidor Ubuntu 22.04.

requisitos previos

  • implementar un Ubuntu 22.04 servidor.
  • Cree un usuario no root con sudo privilegios
  • Actualice el servidor.
  • Un nombre de dominio completo que apunte a su servidor, como moodle.googlesyndication.com .

Los ejemplos de código y los archivos de configuración de esta guía utilizan moodle.googlesyndication.com y googlesyndication.com con fines demostrativos. Debe cambiar todas las instancias a su nombre de dominio.

1. Configurar el cortafuegos

Moodle necesita puertos HTTP y HTTPS para funcionar.

Ábralos usando el cortafuegos sin complicaciones (UFW).

                      
                        $ sudo ufw allow http
$ sudo ufw allow https

                      
                    

Compruebe el estado del cortafuegos.

                      
                        $ sudo ufw status

                      
                    

2. Instalar Nginx

Ubuntu 22.04 viene con una versión anterior de Nginx. Este artículo prefiere usar el repositorio oficial de Nginx para instalar la última versión.

Instale las dependencias requeridas para la instalación de Nginx.

                      
                        $ sudo apt install curl gnupg2 ca-certificates lsb-release ubuntu-keyring -y

                      
                    

Importe la clave de firma de Nginx.

                      
                        $ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
| sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null

                      
                    

Agregue el repositorio para la versión estable de Nginx.

                      
                        $ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg arch=amd64] \
https://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \
| sudo tee /etc/apt/sources.list.d/nginx.list

                      
                    

Actualice la lista de repositorios del sistema.

                      
                        $ sudo apt update

                      
                    

Instale el servidor Nginx.

                      
                        $ sudo apt install nginx

                      
                    

Verifique la instalación.

                      
                        $ nginx -v

                      
                    

3. Instalar y configurar PHP

La última versión de Moodle (v4.0.2) requiere PHP 8.0. Agregue el repositorio PHP de Ondrej para agregar soporte para PHP 8.0.

                      
                        $ sudo add-apt-repository ppa:ondrej/php -y

                      
                    

Instale PHP y las extensiones requeridas.

                      
                        $ sudo apt install graphviz aspell ghostscript clamav php8.0-fpm php8.0-cli php8.0-pspell php8.0-curl php8.0-gd php8.0-intl php8.0-mysql php8.0-xml php8.0-xmlrpc php8.0-ldap php8.0-zip php8.0-soap php8.0-mbstring

                      
                    

Abre el archivo /etc/php/8.0/fpm/pool.d/www.conf .

                      
                        $ sudo nano /etc/php/8.0/fpm/pool.d/www.conf

                      
                    

Encuentra el user=apache y group=apache líneas en el archivo y cámbielas de la siguiente manera.

                      
                        ...
; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
;       will be used.
user = nginx
group = nginx
...

                      
                    

Además, encuentre las líneas listen.owner=www-data y listen.group=www-data en el archivo y cámbielos a nginx .

                      
                        ...
listen.owner = nginx
listen.group = nginx
...

                      
                    

Guarde el archivo presionando CTRL+X, luego Y.

Reinicie el servicio PHP-FPM.

                      
                        $ sudo systemctl restart php8.0-fpm

                      
                    

4. Instalar y configurar MySQL

Instale el servidor MySQL.

                      
                        $ sudo apt install mysql-server

                      
                    

El siguiente paso es necesario para las versiones de MySQL 8.0.28 y superiores. Enter el shell MySQL.

                      
                        $ sudo mysql

                      
                    

Ejecute el siguiente comando para establecer la contraseña de su usuario raíz. Asegúrese de que tenga una combinación de números, mayúsculas, minúsculas y caracteres especiales.

                      
                        mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'yourrootpassword';

                      
                    

Exit la cáscara.

                      
                        mysql> exit

                      
                    

Ejecute el script de instalación segura.

                      
                        $ sudo mysql_secure_installation

                      
                    

Responda las preguntas de la siguiente manera para asegurar MySQL.

                      
                        Would you like to setup VALIDATE PASSWORD component?
Press y|Y for Yes, any other key for No: (Enter Y)

Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: (Enter 2)
Change the password for root ? ((Press y|Y for Yes, any other key for No) : (Enter N)
Remove anonymous users? (Press y|Y for Yes, any other key for No) : (Enter Y)
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : (Enter Y)
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : Y (Enter Y)
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : (Enter Y)

                      
                    

Inicie sesión en el shell de MySQL.

                      
                        $ sudo mysql -u root -p

                      
                    

Crear una base de datos para Moodle.

                      
                        mysql > CREATE DATABASE moodledb DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

                      
                    

Cree un usuario de SQL para acceder a la base de datos. Reemplazar yourpassword con una contraseña segura de su elección.

                      
                        mysql > CREATE USER 'moodleuser'@'localhost' IDENTIFIED BY 'yourpassword';

                      
                    

Otorgar moodleuser acceso a la base de datos.

                      
                        mysql > GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,CREATE TEMPORARY TABLES,DROP,INDEX,ALTER ON moodledb.* TO [email protected];

                      
                    

Vuelva a cargar la tabla de privilegios.

                      
                        mysql > FLUSH PRIVILEGES;

                      
                    

Exit la cáscara.

                      
                        mysql > exit

                      
                    

5. Instalar Moodle

Cree el directorio público para Moodle.

                      
                        $ sudo mkdir /var/www/html/moodle -p

                      
                    

Otorgue al usuario registrado acceso al directorio.

                      
                        $ sudo chown -R $USER:$USER /var/www/html/moodle

                      
                    

Cambie al directorio público.

                      
                        $ cd /var/www/html/moodle

                      
                    

Clone el repositorio de Moodle GitHub.

                      
                        $ git clone https://github.com/moodle/moodle.git .

                      
                    

Consulta la lista de sucursales disponibles.

                      
                        $ git branch -a

                      
                    

Por ahora, MOODLE_400_STABLE es la última versión disponible. Crear una sucursal local llamada MOODLE_400_STABLE y configúrelo para rastrear la sucursal remota.

                      
                        $ git branch --track MOODLE_400_STABLE origin/MOODLE_400_STABLE

                      
                    

Cambie a la sucursal local recién creada.

                      
                        $ git checkout MOODLE_400_STABLE

                      
                    

Cree un directorio de datos para Moodle.

                      
                        $ sudo mkdir /var/moodledata

                      
                    

Otorgue los permisos adecuados al directorio de datos de Moodle.

                      
                        $ sudo chown -R nginx /var/moodledata
$ sudo chmod -R 775 /var/moodledata

                      
                    

Dar permisos de escritura en el directorio de Moodle.

                      
                        $ sudo chmod -R 755 /var/www/html/moodle

                      
                    

6. Configurar Moodle

Cambie al directorio de Moodle.

                      
                        $ cd /var/www/html/moodle

                      
                    

Utilice el archivo de configuración de muestra para crear un archivo de configuración de Moodle.

                      
                        $ cp config-dist.php config.php

                      
                    

Abre el config.php archivo para editar.

                      
                        $ nano config.php

                      
                    

Busque la sección de la base de datos, luego configure la base de datos para almacenar los datos de Moodle, como se muestra a continuación.

                      
                        $CFG->dbtype="mysqli";    // 'pgsql', 'mariadb', 'mysqli', 'auroramysql', '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="moodleuser";   // your database username
$CFG->dbpass="yourpassword";   // your database password
$CFG->prefix    = 'mdl_';       // prefix to use for all table names

                      
                    

Además, configure la ubicación de la URL web de Moodle y el directorio de datos.

                      
                        ...
$CFG->wwwroot="https://moodle.googlesyndication.com";
...
$CFG->dataroot="/var/moodledata";

                      
                    

Guarde el archivo presionando CTRL+X, luego Y.

7. Instalar SSL

Necesita la herramienta Certbot que usa la API Let’s Encrypt para instalar certificados SSL. La última versión de Certbot está disponible a través de la tienda Snap.

Ejecute los siguientes comandos para asegurarse de que tiene la última versión de snapd .

                      
                        $ sudo snap install core
$ sudo snap refresh core

                      
                    

Instale Certbot.

                      
                        $ sudo snap install --classic certbot

                      
                    

Cree un enlace simbólico para Certbot a la /usr/bin directorio.

                      
                        $ sudo ln -s /snap/bin/certbot /usr/bin/certbot

                      
                    

Emite el Certificado SSL.

                      
                        $ sudo certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d moodle.googlesyndication.com

                      
                    

Generar un grupo Diffie-Hellman certificado.

                      
                        $ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096

                      
                    

Abre el archivo /etc/letsencrypt/renewal/moodle.googlesyndication.com.conf para editar

                      
                        $ sudo nano /etc/letsencrypt/renewal/moodle.googlesyndication.com.conf

                      
                    

Pegue el siguiente código en la parte inferior.

                      
                        pre_hook = systemctl stop nginx
post_hook = systemctl start nginx

                      
                    

Guarde el archivo presionando Control + X y entrando Y Cuando se le solicite.

La opción independiente de Certbot usa su servidor web para crear el certificado que no funciona con Nginx. los pre_gancho y post_gancho los comandos se ejecutan antes y después de la renovación para apagar y reiniciar automáticamente el servidor Nginx sin intervención manual.

Realice una ejecución en seco del proceso de renovación de SSL para asegurarse de que funciona.

                      
                        $ sudo certbot renew --dry-run

                      
                    

8. Configurar Nginx

Abre el archivo nginx.conf para editar

                      
                        $ sudo nano /etc/nginx/nginx.conf

                      
                    

Encuentra la línea include /etc/nginx/conf.d/*.conf; y pega el siguiente código debajo.

                      
                        server_names_hash_bucket_size  64;

                      
                    

Guarde el archivo presionando CTRL+X, luego Y.

Cree el archivo de configuración de Moodle para Nginx y ábralo para editarlo.

                      
                        $ sudo nano /etc/nginx/conf.d/moodle.conf

                      
                    

Pegue el siguiente código en él.

                      
                        # Redirect HTTP to HTTPS
server {
    listen 80;  listen [::]:80;
    server_name moodle.googlesyndication.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;

    server_name moodle.googlesyndication.com;
    root   /var/www/html/moodle;
    index  index.php;

    ssl_certificate     /etc/letsencrypt/live/moodle.googlesyndication.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/moodle.googlesyndication.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/moodle.googlesyndication.com/chain.pem;
    ssl_session_timeout 1d;
    ssl_session_cache shared:MozSSL:10m;
    ssl_session_tickets off;
    ssl_stapling on;
    ssl_stapling_verify on;
    ssl_dhparam /etc/ssl/certs/dhparam.pem;

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;

    access_log /var/log/nginx/moodle.access.log main;
    error_log  /var/log/nginx/moodle.error.log;

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

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

    # Hide all dot files but allow "Well-Known URIs" as per RFC 5785
    location ~ /\.(?!well-known).* {
        return 404;
    }

    # This should be after the php fpm rule and very close to the last nginx ruleset.
    # Don't allow direct access to various internal files. See MDL-69333
    location ~ (/vendor/|/node_modules/|composer\.json|/readme|/README|readme\.txt|/upgrade\.txt|db/install\.xml|/fixtures/|/behat/|phpunit\.xml|\.lock|environment\.xml) {
        deny all;
        return 404;
    }
}

                      
                    

Guarde el archivo presionando CTRL+X, luego Y.

Verifique la sintaxis de configuración de Nginx.

                      
                        $ sudo nginx -t

                      
                    

Reinicie el servicio Nginx.

                      
                        $ sudo systemctl restart nginx

                      
                    

9. Instalación completa de Moodle

Abre la URL https://moodle.googlesyndication.com en su navegador para abrir la pantalla de bienvenida.

presione el Continuar botón para proceder. La página siguiente comprueba los requisitos del sistema. Si todo está bien, pasa a la siguiente pantalla.

La siguiente página configura la base de datos y los archivos requeridos por Moodle. Continúe creando su cuenta de administrador y complete otros detalles en la siguiente pantalla.

El paso final es configurar la página principal de Moodle. Guarde sus cambios para pasar al panel de control de Moodle. Puede comenzar a usar la aplicación para crear su plataforma de aprendizaje.

Conclusión

Esto completa la instalación de Moodle. Para obtener más información, consulte el Documentación de Moodle .

Título del artículo Nombre (opcional) Correo electrónico (opcional) Descripción

Enviar sugerencia

Related Posts