Instalación de Moodle en nuestro servidor con SSL

Moodle es una herramienta de gestión de aprendizaje (LMS), o más concretamente de Learning Content Management (LCMS), de distribución libre, escrita en PHP​. Está concebida para ayudar a los educadores a crear comunidades de aprendizaje en línea2, Moodle es usada en blended learning, educación a distancia, clase invertida y diversos proyectos de e-learning en escuelas, universidades, oficinas y otros sectores3​. La versión más reciente es la 3.5.

Preparación

Antes de empezar con la instalación de Moodle vamos a dejar claro en una lista cual es el ecosistema de nuestro servidor para que todo funcione correctamente:

Servidor LAMP completo: Apache + MySQL -o MariaDB- y PHP 7.0.

Configurado un Virtualhost para nuestro dominio.

Creación de base de datos con usuario.

Configurado permisos y usuarios para nuestro dominio.

Una vez tenemos todo esto, entonces si podemos empezar con la instalación de Moodle en su última versión.

Preparación de los ficheros de Moodle

Lo que haremos será descargar Moodle y luego copiarlo en la ruta correspondiente:

wget https://download.moodle.org/download.php/direct/stable35/moodle-latest-35.tgz

Y lo descomprimimos y copiamos:

tar zxf moodle-latest-35.tgz -C /var/www/html/vhosts/midominio.com/www/

Ponemos los permisos que tocan:

chmod 755 /var/www/html/vhosts/midominio.com/www/* -R chown www-data.www-data -R /var/www/html/vhosts/midominio.com/www/*

Nos creamos un usuario para la carpeta de datos de Moodle:

adduser moodle

Creamos el directorio para los datos de Moodle:

mkdir /home/moodle/datamoodle chmod 2777 /home/moodle/datamoodle

Instalaremos los módulos necesarios de PHP para Moodle:

apt install php7.0-curl php7.0-zip php7.0-intl php7.0-gd php7.0-mbstring php7.0-xmlrpc php7.0-soap

Creación de la base de datos para Moodle

Ahora crearemos la base de datos, un usuario y daremos privilegios a ese usuario para esa base de datos:

CREATE DATABASE moodle DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

Y luego creamos el usuario:

CREATE USER 'moodleuser'@'localhost' IDENTIFIED BY 'superpassword';

Y luego le damos privilegios:

GRANT ALL ON moodle.* TO 'moodleuser'@'localhost';

Luego tendremos que editar el fichero de configuración /etc/mysql/my.cnf y añadir lo siguiente:

[client] default-character-set = utf8mb4 [mysqld] innodb_file_format = Barracuda innodb_file_per_table = 1 innodb_large_prefix character-set-server = utf8mb4 collation-server = utf8mb4_unicode_ci skip-character-set-client-handshake [mysql] default-character-set = utf8mb4

Tras los cambios, reiniciamos MySQL:

systemctl restart mysql

Tras este cambio, ya podemos empezar la instalación de Moodle, que podrá ser desde CLI o bien desde el navegador.

Instalación CLI de Moodle

Podemos instalar Moodle de manera CLI y para ello ejecutaremos:

php7.0 /var/www/html/vhosts/midominio.com/www/admin/cli/install.php

Y de esta manera iniciaremos la instalación por la cosola:

.-..-. _____ | || | /____/-.---_ .---. .---. .-.| || | .---. | | _ _ |/ _ \/ _ \/ _ || |/ __ \ * | | | | | || |_| || |_| || |_| || || |___/ |_| |_| |_|\_____/\_____/\_____||_|\_____) Moodle 3.5.1+ (Build: 20180824) command line installation program ------------------------------------------------------------------------------- == Choose a language == en - English (en) ? - Available language packs type value, press Enter to use default value (en)

Nos irá preguntando sobre los datos de la instalación de Moodle e iremos respondiendo lo siguiente:

== Permiso directorios de datos == valor del tipo, pulse Enter para utilizar el valor por defecto (2777) : 2777 == Dirección Web == valor del tipo : http://midominio.com == Directorio de Datos == valor del tipo, pulse Enter para utilizar el valor por defecto (/var/www/html/vhosts/midominio.com/moodledata) : /home/moodle/datamoodle == Seleccione el controlador de la base de datos == mysqli mariadb valor del tipo, pulse Enter para utilizar el valor por defecto (mysqli) : mariadb == Servidor de la base de datos == valor del tipo, pulse Enter para utilizar el valor por defecto (localhost) : localhost == Nombre de la base de datos == valor del tipo, pulse Enter para utilizar el valor por defecto (moodle) : moodle == Prefijo de tablas == valor del tipo, pulse Enter para utilizar el valor por defecto (mdl_) : md1_ == Puerto de la base de datos == valor del tipo, pulse Enter para utilizar el valor por defecto () : == Socket Unix == valor del tipo, pulse Enter para utilizar el valor por defecto () : == Usuario de la base de datos == valor del tipo, pulse Enter para utilizar el valor por defecto (root) : moodleuser == Contraseña de la base de datos == valor del tipo : 123qweasd == Nombre completo del sitio == valor del tipo : Entrebits == Nombre corto para el sitio (una palabra) == valor del tipo : EB == Nombre de usuario de la cuenta del administrador == valor del tipo, pulse Enter para utilizar el valor por defecto (admin) : admin == Nueva contraseña de usuario admin == valor del tipo : 123qweasd# == Nuevo correo electrónico de administrador == valor del tipo, pulse Enter para utilizar el valor por defecto () : miemail@midominio.com == Clave de actualización (dejar en blanco para no establecerla) == valor del tipo : ¿Ha leído y comprendido los términos y condiciones? escriba s (para sí) o n (para no) : s

A partir de aquí, iniciará la instalación de Moodle:

== Configurando la base de datos == -->Sistema ++ Éxito ++ -->antivirus_clamav ++ Éxito ++ -->availability_completion ++ Éxito ++ -->availability_date ++ Éxito ++ -->availability_grade ++ Éxito ++ -->availability_group .... -->logstore_legacy ++ Éxito ++ -->logstore_standard ++ Éxito ++ La instalación se completo exitosamente.

Una vez haya acabado la instalación, podremos acceder a nuestro Moodle desde el navegador:

Instalación gráfica de Moodle

Si accedemos al dominio que hemos configurado para Moodle, nos debería de aparecer el instalador:

Seleccionamos el idioma de la instalación y continuamos haciendo clic en el botón de «Siguiente».

Configuramos la ruta del directorio de datos y añadimos el que hemos preparado anteriormente /home/moodle/datamoodle .

Configuramos la base de datos, primero seleccionado el tipo –que tiene que ser mariadb-, y luego configurando nombre de la base de datos, usuario y contraseña:

Ahora tendremos que ejecutar un script para transformar nuestra base de datos tal y como la necesita Moodle:

php7.0 /var/www/html/vhosts/midominio.com/www/admin/cli/mysql_collation.php --collation=utf8mb4_unicode_ci

Tras este paso y aceptar la licencia, debería de aparecer la siguiente página donde nos indica que todo está correcto:

Cuando le demos a «Continuar» iniciará la instalación de módulos necesarios para Moodle y ya habremos acabado con la instalación:

No sin antes, crear un usuario administrador:

Y configurar el nombre del sitio virtual:

Aquí tenemos nuestro Moodle!

Configurar SSL en Moodle

Para SSL usaremos Let’s Encrypt, así que instalaremos los paquetes necesarios:

apt install letsencrypt certbot python-certbot-apache

Y creamos el certificado de la siguiente forma:

certbot --authenticator webroot --installer apache

Ahora seguiremos el instalador, simplemente escogeremos el dominio y marcaremos la opción de Secure para redireccionar el trafico HTTP a HTTPS:

Please choose whether HTTPS access is required or optional. ------------------------------------------------------------------------------- 1: Easy - Allow both HTTP and HTTPS access to these sites 2: Secure - Make all requests redirect to secure HTTPS access ------------------------------------------------------------------------------- Select the appropriate number [1-2] then [enter] (press 'c' to cancel):

Una vez hemos creado el certificado, tendremos que modificar el fichero de configuración de Moodle y cambiar el valor de $CFG->wwwroot donde tendremos que añadir: