Cómo instalar Moodle en Debian 9 Stretch

En esta entrada vamos a ver cómo instalar Moodle en Debian 9 Stretch paso a paso, para poder poner en marcha este sistema de eLearning en tu intranet, tu servidor o tu VPS Debian. Haremos hincapié en configurar bien todos los pre-requisitos sobre nuestro sistema Debian 9 para que la instalación de Moodle transcurra con total suavidad.

Antes de instalar Moodle en Debian 9 Stretch

Para poder completar esta guía de instalación de Moodle en Debian 9 debemos cumplir una serie de requisitos mínimos:

  • Un sistema Debian 9 actualizado.
  • Una pila LAMP o similar, es decir, servidor web con PHP y sistema de bases de datos.
  • Acceso por terminal como root o usuario con privilegios de sudo.
  • Conexión a Internet.

En este tutorial usamos Apache como servidor web y MariaDB como sistema de bases de datos, pero podrías usar Nginx, MySQL, etc. La instalación de Moodle se puede realizar como la página web principal del servidor, como parte de esta página web o como un servidor virtual independiente. Por brevedad y simplicidad de este tutorial, instalaremos Moodle como parte de la página web por defecto del sistema. También es importante configurar el servidor web con acceso seguro HTTPS, aunque por el mismo motivo hemos realizado el ejemplo del tutorial sobre HTTP.

Con todo esto aclarado, abrimos una consola de comandos y nos ponemos manos a la obra.

También necesitaremos algunos paquetes procedentes de los repositorios de Debian 9, por lo que los actualizamos:

~$ sudo apt update

E instalamos las herramientas necesarias:

~$ sudo apt install -y ca-certificates wget

Cómo descargar Moodle para Debian 9 Stretch

Vamos a descargar Moodle para Debian 9 Stretch directamente desde la web oficial del proyecto, ya que no forma parte del software que se ofrece en los repositorios de Debian 9.

como descargar moodle para debian 9 stretch

Accediendo a la sección de descargas encontraremos el enlace a la versión más reciente de Moodle, donde se nos ofrecen dos posibilidades:

descargar moodle para debian 9 stretch

Si existe una descarga cuyo número de versión termine con un signo +, es la que debemos elegir, ya que es la versión más actualizada (suelen ser lanzamientos semanales), con las últimas correcciones incorporadas.

Las descargas que no incorporan el signo + al final del número de versión son los lanzamientos originales de cada versión o revisión.

Moodle se nos ofrece en paquetes en formato TGZ y en formato ZIP. Puedes descargar el que quieras, aunque para Debian 9 lo aconsejable es elegir el formato TGZ.

Al elegir cualquiera de los paquetes no se descarga directamente, sino que accedemos a una página que inicia la descarga de forma automática. Si estás visitando la página de descargas directamente sobre el sistema Debian en que vas a instalar Moodle puedes aceptar la descarga y continuar.

En mi caso administro la máquina Debian remotamente desde terminal, por lo que cancelo la descarga automática de Moodle y copio en enlace etiquetado como «click here to download manually«.

Con el enlace copiado, lo pegaré como argumento del comando wget para realizar la descarga desde el terminal:

~$ wget https://download.moodle.org/download.php/direct/stable400/moodle-latest-400.tgz

Antes de iniciar la instalación de Moodle, nos centraremos en los preparativos del sistema, que no son pocos y nos pueden generar muchos quebraderos de cabeza si nos saltamos alguno.

Preparativos para instalar Moodle en Debian 9

Directorios de la aplicación y de datos

Para su funcionamiento Moodle necesita dos directorios:

  • El directorio de la aplicación web, accesible vía navegador y que debe ser escribible por el servidor web.
  • El directorio de datos de la aplicación web, NO accesible a través de navegador pero sí escribible por el servidor web.

Aunque puedes encajar Moodle dentro de tu estructura de servicios web como creas conveniente, en esta guía lo vamos a incluir como parte de la página web por defecto de Debian 9. Para ello crearemos la ruta /var/www/html/moodle/ que será el directorio de la aplicación, y también crearemos la ruta /var/www/moodledata/ como directorio de datos de la aplicación.

Lo más sencillo es descomprimir el paquete de Moodle que acabamos de descargar directamente en la estructura de la página web por defecto de Apache en Debian:

~$ sudo tar xf moodle-latest-400.tgz -C /var/www/html/

Ahora creamos la carpeta de datos de la aplicación:

~$ sudo mkdir /var/www/moodledata

Como indiqué antes, el servidor web debe poder escribir en el directorio de la aplicación (para poder guardar el archivo de configuración config.php) y también en el directorio de datos. Una forma sencilla de dar estos permisos de escritura es cambiar el propietario y grupo de estas carpetas al usuario y grupo del servidor web (www-data en el caso de Apache):

~$ sudo chown -R www-data: /var/www/html/moodle/ /var/www/moodledata/

Y con esto tenemos todo listo en lo referente a los archivos y carpetas de la aplicación.

Preparativos de PHP

Moodle en Debian 9 Stretch necesita tener instalados un buen número de módulos de PHP que pueden no estar presentes en la instalación mínima de una pila LAMP. Estamos hablando de módulos como php-curl, php-gd, php-intl, php-mbstring, php-soap, php-xml, php-xmlrpc y php-zip. Vamos a proceder a su instalación.

En primer lugar actualizamos la información de los repositorios de Debian:

~$ sudo apt update

Ya podemos instalar todos los módulos necesarios, indicando el número de versión de PHP que utilizamos en nuestro sistema en el nombre de cada paquete; por ejemplo, para PHP 7.4:

~$ sudo apt -y install php7.4-{curl,gd,intl,mbstring,soap,xml,xmlrpc,zip}

Si usas una versión diferente, sustituye el prefijo php7.4- por lo que corresponda en el comando anterior.

También será necesaria la extensión para conectar al servicio de bases de datos con el que trabajará Moodle (aplicándose lo dicho sobre la nomenclatura de los paquetes), para MariaDB/MySQL:

~$ sudo apt install -y php7.4-mysql

Y para PostgreSQL:

~$ sudo apt install -y php7.4-pgsql

Pero además haremos algún ajuste necesario en la configuración del archivo php.ini:

~$ sudo nano /etc/php/7.4/apache2/php.ini

Si trabajas con otra versión, cambia la ruta de forma adecuada en el comando anterior.

Buscamos la directiva max_input vars:

...
; How many GET/POST/COOKIE input variables may be accepted
;max_input_vars = 1000
...

Activamos esta directiva suprimiendo el carácter ; a principio de línea y le damos el siguiente valor:

...
max_input_vars = 5000
...

Guardados lo cambios, los aplicamos recargando la configuración del servicio web:

~$ sudo systemctl reload apache2

Preparativos del sistema de bases de datos

Moodle puede trabajar sobre varios de los motores de datos más usados en Debian 9 Stretch. En esta guía veremos las alternativas más usadas:

MariaDB/MySQL

Moodle exige que el sistema de bases de datos tenga cierta configuación.

En el caso de MariaDB se requiere:

  • El uso del sistema de archivos Barracuda para las tablas.
  • Activar la opción innodb_large_prefix.

Si usas MariaDB 10.4, 10.5 o superior procedente de los repositorios oficiales no será necesario realizar ningún ajuste.

Pero si usas MariaDB 10.1 desde los repositorios de Debian 9 Stretch habrá que editar el archivo de configuración del servidor de bases de datos, en este caso sería /etc/mysql/mariadb.conf.d/50-server.cnf, /etc/mysql/my.cnf o el que corresponda para otras versiones de MariaDB o MySQL que usemos en Debian 9:

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

Buscamos la sección server y añadimos un par de líneas:

...
[server]
...
innodb_file_format = Barracuda
innodb_large_prefix = on
...

Si no existe la sección server, podemos crearla o insertar las líneas anteriores en la sección mysqld.

Guardados los cambios, hay que reiniciar el servicio de bases de datos:

~$ sudo systemctl restart mariadb
Creación de la base de datos y del usuario

Necesitamos crear una base de datos específica para Moodle y un usuario que la administre. Estos datos los proporcionaremos posteriormente al instalador. Para preparar la base de datos, en esta guía sobre MariaDB/MySQL, abrimos el cliente mysql en un terminal con nuestro usuario administrador (se puede hacer de forma similar con phpMyAdmin si lo tienes instalado):

~$ mysql -u root -p

Y creamos la base de datos:

> create database moodle charset utf8mb4 collate utf8mb4_unicode_ci;

A continuación creamos el usuario que Moodle usará para trabajar con la nueva base de datos. Si usas MariaDB o MySQL 5.x usa esta sentencia:

> create user moodle@localhost identified by 'XXXXXXXX';

En cambio, si usas MySQL 8 asegúrate de especificar el plugin de autenticación mysql_native_password para el nuevo usuario:

> create user moodle@localhost identified with mysql_native_password by 'XXXXXXXX';

Y concedemos los permisos necesarios a este usuario sobre la base de datos:

> grant all privileges on moodle.* to moodle@localhost;

Ya podemos cerrar el cliente mysql:

> exit

Anota el nombre de la base de datos, el usuario y la contraseña para usarlos más adelante.

PostgreSQL

En el caso de usar este servicio, crearemos un rol con contraseña:

~$ sudo -u postgres createuser -P moodle

Y crearemos la base de datos correspondiente de su propiedad:

~$ sudo -u postgres createdb moodle -O moodle

Podemos continuar.

Cómo instalar Moodle en Debian 9

Si has llegado hasta aquí lo más difícil ya está hecho. Por fin empieza la instalación de Moodle propiamente dicha a través del instalador web. Abriremos un navegador y accederemos ya sea de forma local o remota a la página web de nuestro sitio Moodle mediante dirección IP, dominio, etc.

En este tutorial Moodle se instala como un subdirectorio de la web por defecto de Debian 9, por lo que a la dirección IP o dominio de la máquina tendremos que añadir el sufijo /moodle. En mi caso, accedo a través del dominio debian9.local.lan, por lo que será http://debian9.local.lan/moodle la URL adecuada:

como instalar moodle en debian 9 stretch

La página inicial del instalador web permite elegir el idioma de la instalación. Seleccionamos el idioma que nos interese y continuamos.

La siguiente página nos mostrará la URL base para acceder a Moodle, la ruta de la aplicación web en el sistema y la ruta del directorio de datos.

instalar moodle en debian 9 stretch

A no ser que hayas decidido crear el directorio de datos de Moodle en una ubicación distinta, no debemos modificar nada, simplemente continuar.

En la siguiente página de la instalación se nos pregunta qué controlador de bases de datos utilizar:

instalacion de moodle en debian 9 stretch

En el desplegable seleccionaremos el controlador adecuado para el servicio de bases de datos que preparamos anteriormente.

El siguiente paso es proporcionar los datos de conexión a la base de datos:

instalador de moodle en debian 9 stretch

Ya sea MariaDB/MySQL, PostgreSQL, etc. proporcionamos el nombre de la base de datos, el usuario y su contraseña. El resto de campos se pueden dejar por defecto o en blanco, ya que el servicio de bases de datos suele encontrarse en el mismo sistema Debian 9 que el servidor web, funcionando bajo los parámetros por defecto.

Una vez configurado el acceso a la base de datos, podemos continuar para llegar a la página de aceptación de términos del servicio:

instalando moodle en debian 9 stretch

Debemos leer las condiciones de servicio y entenderlas para poder continuar.

Hecho esto la siguiente página comprobará todos los requisitos para la instalación de Moodle en Debian 9:

configurar debian 9 stretch para moodle

Si has seguido escrupulosamente todos los pasos previos, aplicando las particularidades propias de tu sistema, deberías acceder a una larga lista de requisitos verificados. En este ejemplo falla el protocolo HTTPS porque el servidor que estoy configurando no tiene instalado el certificado SSL. Si estás preparando un entorno de producción deberías instalar un certificado y trabajar bajo HTTPS. En cualquier caso, podemos continuar y comenzará la verdadera instalación:

La siguiente página que aparece va registrando la instalación de todos y cada uno de los componentes de Moodle, informando del resultado de la operación. Al final de esta larga lista aparecerá el botón de continuar.

Pasaremos a cumplimentar la información del administrador del sitio:

Actualizado el perfil del administrador, pasamos a actualizar la información de la página principal y algún dato más:

moodle para debian 9 stretch

Guardados los cambios de esta configuración se nos redirecciona a la página de nuestra área personal en el nuevo sitio Moodle:

moodle en debian 9 stretch

A partir de ahora ya estamos listos para la gestión de usuarios y cursos, pero eso ya es materia fuera del alcance de esta guía.

Post-instalación

Cron

La plataforma necesita realizar tareas de mantenimiento en segundo plano mediante una tare programada del servicio Cron, para lo que crearemos el correspondiente archivo de configuración:

~$ sudo nano /etc/cron.d/moodle

Con la siguiente línea como contenido:

*/1 * * * * www-data /usr/bin/php /var/www/html/moodle/admin/cli/cron.php

Esta tarea se lanza cada minuto, que es el intervalo que Moodle considera adecuado, aunque dependiendo de la carga del sistema es posible que lo puedas modificar.

Conclusión

Ahora que ya sabes cómo instalar Moodle en Debian 9 Stretch tienes a tu disposición una de las plataformas más potentes de eLearning. Recuerda que es importante montar la plataforma sobre un servidor web con seguridad SSL, prácticamente obligatorio si es accesible a través de Internet.

En caso de que tengas cualquier duda, pregunta, notificación de errores, sugerencia, etc. déjame un comentario.

Ah, y si te ha servido esta guía de instalación de Moodle en Debian 9 y quieres agradecérnoslo, puedes hacerlo dejando 1 $ de propina desde PayPal:

¡Gracias!

5/5 - (2 votos)

8 comentarios en «Cómo instalar Moodle en Debian 9 Stretch»

  1. Saludos, amigo.

    Qué podría hacer con este error:

    Fatal error: Maximum execution time of 30 seconds exceeded in /var/www/html/moodle/lib/filestorage/zip_archive.php on line 254

    Gracias.

    Responder
    • ¡Hola, David! Parece que alguna tarea está consumiendo más tiempo del máximo establecido por defecto en PHP, ¿qué es exactamente lo que haces para que salga este error? Edita el archivo php.ini en /etc/php/7.x/apache2/ y tal vez también el que se encuentra en /etc/php/7.x/cli/ y localiza esta directiva:

      max_execution_time = 30

      El valor está expresado en segundos, así que puedes incrementarlo por ejemplo al doble, o a la cantidad que necesites. Recarga la configuración de Apache para aplicar el cambio.

      Esto no hará que la tarea termine antes, sólo aumenta el tiempo de espera, así que quizás deberías investigar qué recursos necesita la máquina para acelerar más ese tipo de tareas.

      Responder
  2. Muchas gracias por todo, sin tener conocimientos todavía de Moodle y con una Debian 9 algo abandonada he sido capaz de instalarlo.

    Las instrucciones propias de «Moodle» me habían despistado bastante.

    Responder
  3. Genial!
    En Debian 10, en el 50-server-cnf he debido hacer:
    innodb_large_prefix = on

    innodb_large_prefix, sin más me daba error.

    Y también instalar php-mysql (se debía suponer, pero ando algo pez)

    Gracias!

    Responder
    • Claro, en Debian 9 no es necesario añadir el «on», aunque funcionaría igual. Por otro lado, siendo requisito una pila LAMP se entiende que la extensión php-mysql ya debería estar presente en el sistema.

      Responder

Deja un comentario

Este sitio esta protegido por reCAPTCHA y laPolítica de privacidady losTérminos del servicio de Googlese aplican.

El periodo de verificación de reCAPTCHA ha caducado. Por favor, recarga la página.