GNU/Linux >> Tutoriales Linux >  >> Ubuntu

Cómo instalar Moodle con Nginx y Lets Encrypt SSL en Ubuntu 20.04

Moodle es un sistema de gestión de aprendizaje gratuito y de código abierto escrito en PHP. Proporciona una forma para que los tutores e instructores creen cursos para sus estudiantes o alumnos. Moodle proporciona un sistema integrado robusto y seguro y viene con un tablero personalizado que ayuda a los usuarios a acceder a 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. Proporciona un amplio conjunto de funciones que incluyen wiki, calificación, envío de tareas, cuestionarios en línea, foros de discusión y más.

En este tutorial, le mostraremos cómo instalar Moodle con el servidor web Nginx y Let's Encrypt SSL en Ubuntu 20.04.

Requisitos

  • Un servidor con Ubuntu 20.04.
  • Un nombre de dominio válido apuntado con la IP de su servidor.
  • Se configura una contraseña de root en el servidor.

Cómo empezar

Antes de comenzar, deberá actualizar los paquetes de su sistema a la última versión. Puede actualizarlos usando el siguiente comando:

apt-get update -y

Una vez que su servidor esté actualizado, puede continuar con el siguiente paso.

Instalar LEMP

Primero, deberá instalar Apache, MariaDB, PHP y otras bibliotecas de PHP en su sistema. Puede instalarlos todos usando 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 que todos los paquetes estén instalados, edite el archivo php.ini y cambie algunas configuraciones:

nano /etc/php/7.4/fpm/php.ini

Cambie las siguientes líneas:

memory_limit = 256M
cgi.fix_pathinfo = 0
upload_max_filesize = 100M
max_execution_time = 360
date.timezone = America/Chicago

Guarde y cierre el archivo y luego reinicie el servicio PHP-FPM para aplicar los cambios:

systemctl restart php7.4-fpm

Una vez que haya terminado, puede continuar con el siguiente paso.

Crear una base de datos

Moodle utiliza MySQL o MariaDB como base de datos, por lo que deberá crear una base de datos y un usuario para Moodle.

Primero, conéctese al shell de MySQL con el siguiente comando:

mysql

Una vez que inicie sesión, cree una base de datos y un usuario con el siguiente comando:

CREATE DATABASE moodledb;
CREATE USER 'moodle'@'localhost' IDENTIFIED BY 'password';

A continuación, otorgue 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, elimine los privilegios y salga de MySQL con el siguiente comando:

FLUSH PRIVILEGES;
EXIT;

A continuación, edite el archivo de configuración predeterminado de MariaDB y defina el innodb_file_format:

nano /etc/mysql/mariadb.conf.d/50-server.cnf

Agregue las siguientes líneas dentro de la sección [mysqld]:

[mysqld]
innodb_file_format = Barracuda
innodb_file_per_table = 1
innodb_large_prefix = ON

Guarde el archivo y luego reinicie el servicio MariaDB para aplicar los cambios:

systemctl restart mariadb

Instalar Moodle

Primero, cambie el directorio al directorio raíz de Apache y descargue 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, edite Moodle config.php y defina el tipo de base de datos:

nano /var/www/html/moodle/config.php

Busque la siguiente línea:

$CFG->dbtype    = 'mysqli';

Y lo reemplazó con la siguiente línea:

$CFG->dbtype    = 'mariadb';

Guarde y cierre el archivo, luego cree un directorio de datos de Moodle, establezca 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 haya terminado, puede continuar con el siguiente paso.

Configurar Nginx para Moodle

A continuación, deberá crear un archivo de configuración de host virtual de Nginx para alojar Moodle:

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

Agregue 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;
    }
}

Guarde y cierre el archivo, luego verifique el Nginx para cualquier error de sintaxis con el siguiente comando:

nginx -t

Deberías obtener el siguiente resultado:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Finalmente, reinicie el servicio Nginx para aplicar los cambios:

systemctl restart nginx

En este punto, Nginx está configurado para alojar Moodle. Ahora puede continuar con el siguiente paso.

Acceder a la interfaz web de Moodle

Ahora, abra su navegador web y acceda a la interfaz web de Moodle usando la URL http://moodle.example.com . Debería ver la página de instalación de Moodle:

Seleccione su idioma y haga clic en Siguiente . Debería ver la siguiente página:

Proporcione su dirección web de Moodle, la ruta del directorio, la ruta del directorio de datos y haga clic en Siguiente . Debería ver la siguiente página:

Seleccione el tipo de controlador de su base de datos y haga clic en Siguiente . Debería ver la siguiente página:

Proporcione el host de su base de datos, el nombre de la base de datos, el nombre de usuario, la contraseña y haga clic en Siguiente . Debería ver la siguiente página:

Haga clic en Continuar para confirmar todas las condiciones. Debería ver la siguiente página:

Asegúrese de que todas las extensiones de PHP requeridas estén instaladas y luego haga clic en Continuar . Debería ver la siguiente página:

Haga clic en Continuar . Debería ver la siguiente página:

Proporcione su nombre de usuario, contraseña, correo electrónico, país, zona horaria y haga clic en Actualizar perfil. Debería ver la siguiente página:

Proporcione la configuración de su página principal y haga clic en Guardar cambios botón para guardar los cambios.

Asegurar Moodle con Let's Encrypt SSL

A continuación, deberá instalar la herramienta Certbot para descargar Let's Encrypt SSL y configurar Nginx para usar este SSL.

Primero, instale Certbot con el siguiente comando:

apt-get install python3-certbot-nginx -y

Una vez instalado, ejecute el siguiente comando para descargar todo SSL y configurar Nginx para usarlo:

certbot --nginx -d moodle.example.com

Se le pedirá que proporcione una dirección de correo electrónico válida y acepte el término de 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, elija si desea o no 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

Escriba 2 y presione Entrar para continuar. Debería 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 puede acceder al sitio web de Moodle usando la URL http://moodle.example.com

Conclusión

¡Felicidades! Ha instalado correctamente Moodle con Nginx y Let's Encrypt SSL en Ubuntu 20.04. Ahora puede crear fácilmente su propio sistema de gestión de aprendizaje con Moodle.


Ubuntu
  1. Cómo instalar Nextcloud con Nginx y Lets Encrypt SSL en Ubuntu 20.04 LTS

  2. Cómo instalar Magento 2 con Nginx y Lets Encrypt SSL en Ubuntu 20.04 LTS

  3. Cómo instalar Drupal 8 con Nginx, PHP-FPM y SSL en Ubuntu 15.10

  4. Cómo instalar OpenCart 2 con Nginx y SSL en Ubuntu 15.10

  5. Instale Automad CMS con Nginx y Lets Encrypt SSL en Ubuntu 18.04

Cómo instalar Concrete5 CMS con Apache y Lets Encrypt SSL gratis en Ubuntu 20.04

Cómo instalar ProjectSend con Apache y Lets Encrypt SSL en Ubuntu 20.04

Cómo instalar MediaWiki con Nginx y Lets Encrypt SSL en Ubuntu 20.04

Cómo instalar Gitea con Nginx y Lets Encrypt SSL gratis en Ubuntu 20.04

Cómo instalar Nginx con Let's Encrypt TLS/SSL en Ubuntu 20.04

Cómo instalar Let's Encrypt SSL con Nginx en Ubuntu 16.04 LTS