Cómo instalar Moodle en Fedora 36/35/34

En esta ocasión vamos a ver cómo instalar Moodle en Fedora 36/35/34 paso a paso, de modo que puedas desplegar la plataforma de eLearning más famosa del mundo sobre tu servidor o VPS Fedora.

Antes de instalar Moodle en Fedora 36/35/34

Para poder seguir los pasos de esta guía de instalación de Moodle en Fedora 36/35/34 será necesario satisfacer una serie de requisitos básicos:

  • Una máquina Fedora 36, 35 ó 34 convenientemente actualizada.
  • Un entorno o pila tipo LAMP (servicio web con PHP hasta 8.0 y bases de datos).
  • Acceso a consola con un usuario con permisos de sudo o el mismo root.
  • Conexión a Internet.

En el caso de no tener aún el entorno mínimo necesario, sería recomendable echar un vistazo a nuestra guía de instalación de la pila LAMP en Fedora o incluso de la guía de instalación de PostgreSQL Server en Fedora.

También hay que tener en cuenta que es muy importante trabajar sobre HTTPS, aunque por motivos didácticos en esta guía trabajamos sobre HTTP. Además, de las posibles configuraciones para integrar Moodle en el servicio web de Fedora 36/35/34, elegimos hacerlo como parte del sitio web por defecto, pero es fácil configurar Moodle como el sitio principal o como un servidor virtual. Todos estos aspectos son sencillos de modificar, para lo que puede ser de utilidad consultar nuestra guía de instalación de Apache en Fedora.

Por último, necesitamos algunas herramientas del sistema que obtendremos desde los repositorios de Fedora 36/35/34, para lo que actualizamos la información de los paquetes que contienen:

~$ sudo yum update

E instalamos las herramientas mencionadas:

~$ sudo yum install -y cronie tar wget

Cómo descargar Moodle para Fedora 36/35/34

Vamos a descargar Moodle para Fedora 36/35/34 desde la sección de descargas del sitio oficial, donde encontramos la última versión estable:

como descargar moodle para fedora 36, 35 y 34

La última versión estable suele ofrecer el lanzamiento original de dicha versión y usualmente una revisión más reciente con los últimos parches y actualizaciones aplicados. Esta revisión se caracteriza por acabar su número de versión en ‘+’ y se actualiza semanalmente hasta el lanzamiento de la nueva versión. Si está disponible, será esta revisión la que descarguemos.

Se nos ofrecen paquetes en formtato .tar.gz y .zip en páginas de descarga automática. En este tutorial elegiremos el paquete .tar.gz que descargaremos desde consola con el comando wget:

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

Cómo instalar Moodle en Fedora 36/35/34

El proceso de instalar Moodle en Fedora 36/35/34 es un poco más complejo que descargar e instalar un paquete, ya que se necesita configurar ciertos aspectos del sistema. Estos pasos los desarrollamos al detalle a continuación.

Archivos de Moodle

Descomprimimos el paquete de Moodle que acabamos de descargar en su ubicación definitiva, con arreglo a la forma de integrar la aplicación en el servicio web:

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

Moodle necesita además un directorio de datos:

~$ sudo mkdir /var/www/moodledata

Como Moodle necesita escribir en ambos directorios, cambiaremos la propiedad de los mismos y de su contenido al usuario con el que corre el servicio web en Fedora 36/35/34:

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

SELinux

En el caso de estar activado SELinux en Fedora 36/35/34 no basta con ajustar los permisos ordinarios, sino que habrá que crear contextos especiales de lectura/escritura para el servicio web.

En el caso del directorio de instalación de Moodle:

~$ sudo semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/html/moodle(/.*)?"

Y para el directorio de datos:

~$ sudo semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/moodledata(/.*)?"

Este último comando es posible que lance un aviso, pero no es importante.

Una vez definidos los contextos, los aplicamos:

~$ sudo restorecon -R /var/www/html/moodle/

Y:

~$ sudo restorecon /var/www/moodledata/

Finalmente, damos permisos al servicio web para que las aplicaciones puedan conectar a Internet:

~$ sudo setsebool -P httpd_can_network_connect on

Servicio web

Creamos una configuración personalizada para Apache:

~$ sudo nano /etc/httpd/conf.d/moodle.conf

En algunos momentos del proceso de instalación, debido a la naturaleza de las tareas realizadas, podrían llegar a alargarse los tiempos de respuesta entre el servicio web y el servicio PHP, máxime si la máquina Fedora 36/35/34 no es muy potente en cuanto a procesador y E/S. Por eso es interesante configurar los tiempos máximos de respuesta por encima de los valores por defecto (este ajuste no afecta al rendimiento de Moodle).

<IfModule proxy_fcgi_module>
        Timeout 180
        ProxyTimeout 180
</IfModule>

Los tiempos de espera están especificados en segundos.

Guardamos los cambios y recargamos la configuración del servicio web:

~$ sudo systemctl reload httpd

Base de datos

Moodle trabaja sobre la base de datos que tengamos en servicio sobre Fedora 36/35/34, admitiéndose varios motores de bases de datos. En este tutorial veremos los dos más usados.

MariaDB/MySQL

Conectamos con el cliente de consola mysql y el usuario administrador con que trabajemos habitualmente:

~$ mysql -u root -p

Creamos la base de datos:

> create database moodle charset utf8mb4 collate utf8mb4_unicode_ci;

Creamos el usuario que la manejará:

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

Concedemos suficientes privilegios sobre la base al usuario:

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

Y cerramos la conexión:

> exit

PostgreSQL

Para este servicio los preparativos son más rápidos, ya que creamos un rol con contraseña:

~$ sudo -iu postgres createuser -P moodle

Y creamos y asociamos la base:

~$ sudo -iu postgres createdb moodle -O moodle

PHP

Moodle necesita la presencia en Fedora 36/35/34 de ciertas extensiones que podemos obtener desde los repositorios de la distribución, instalándolas con yum:

~$ sudo yum install -y php-{curl,gd,intl,json,mbstring,opcache,pecl-zip,soap,sodium,xmlrpc}

En caso de usar una versión de PHP diferente a la que viene por defecto en el sistema Fedora, será necesario indicarlo en el nombre de los paquetes. Por ejemplo, para la versión 7.4 en Fedora 36:

~$ sudo yum install -y php74-php-{gd,intl,mbstring,opcache,pecl-zip,soap,sodium,xmlrpc}

Por último, es necesario realizar un ajuste en el archivo php.ini, si se trata de la versión nativa de la distribución:

~$ sudo nano /etc/php.ini

Pero si se trata de una versión del repositorio altenativo:

~$ sudo nano /etc/opt/remi/phpXX/php.ini

Buscamos la directiva max_input_vars:

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

La activamos borrando el carácter ; inicial y cambiamos su valor por el mínimo recomendado de 5000:

...
max_input_vars = 5000
...

Guardados los cambios, los aplicamos recargando la configuración del servicio PHP-FPM teniendo en cuenta el origen y versión de PHP, es decir:

~$ sudo systemctl reload php-fpm

O:

~$ sudo systemctl reload phpXX-php-fpm

Instalador web

Es el momento de ejecutar el instalador web de Moodle en Fedora 36/35/34 desde un navegador, utilizando como URL la que sea la adecuada para lanzar la aplicación, según cómo la hayamos integrado en el servicio web.

Por ejemplo, el servidor Fedora 36 con el que hemos realizado este tutorial es accesible en el subdominio fedora.local.lan, y hemos instalado Moodle en la ruta /moodle del sitio web por defecto, por lo que podemos acceder empleando http://fedora.local.lan/moodle como URL:

como instalar moodle en fedora 36, 35 y 34

En la primera página del instalador seleccionamos el idioma.

A continuación confirmamos las rutas:

instalar moodle en fedora 36, 35 y 34

Realmente sólo es posible modificar el directorio de datos, que en este artículo hemos creado en la ruta por defecto, pero si se hubiese creado en otro lugar sería necesario especificarlo.

Seleccionamos el motor de bases de datos:

instalacion de moodle en fedora 36, 35 y 34

Elegiremos el que corresponda con el servicio de bases de datos que hemos preparado previamente para Moodle.

Seguidamente configuramos la conexión al servicio:

instalando moodle en fedora 36, 35 y 34

Especificamos base de datos, usuario y contraseña tal como los creamos en pasos anteriores.

Se nos mostrará el acuerdo de licencia de Moodle:

instalador de moodle en fedora 36, 35 y 34

Tendremos que confirmar haber leído y comprendido los términos y condiciones para poder continuar.

En el siguiente paso se muestra la lista de requisitos del sistema para la instalación de Moodle:

configurar fedora 36, 35 y 34 para instalar moodle

Si has seguido los pasos anteriores deberían cumplirse todos estos requisitos, por lo que podremos continuar.

En este momento comienza el proceso de instalación, que llevará unos minutos, durante los cuales una lista irá mostrando las tareas realizadas y su resultado:

Continuaremos configurando el perfil del usuario administrador del sitio Moodle:

También debemos introducir información básica identificativa del sitio:

moodle para fedora 36, 35 y 34

La dirección de correo electrónico para el contacto de soporte, aunque no se indique nada, es obligatoria para poder continuar con la instalación.

Este ha sido el último paso del instalador, de modo que al guardar estos datos se mostrará la página principal del área personal del usuario administrador:

moodle en fedora 36, 35 y 34

¡Ya está todo listo para empezar a trabajar en tu nuevo sitio Moodle sacándole todo el partido desde tu máquina Fedora 36/35/34!

Servicio Cron

Para que Moodle pueda realizar sus procesos de mantenimiento en segundo plano, crearemos una tarea programada del servicio Cron. El primer paso será asegurarnos de que el servicio se encuentre en ejecución y habilitado para iniciar con el sistema:

~$ sudo systemctl enable --now crond

Creamos el archivo de configuración para la tarea programada:

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

La configuración será una línea similar a la siguiente:

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

Guardado el archivo, la tarea se lanzará periódicamente.

Conclusión

Ahora que sabes cómo instalar Moodle en Fedora 36/35/34 ya puedes disponer de este estupendo sistema de eLearning tanto en red local como a través de Internet, utilizando tu servidor o VPS Fedora.

Si durante el tutorial te ha surgido alguna pregunta o duda, tienes sugerencias de mejora de este artículo, crees que necesita actualizarse o quieres notificar posibles errores, lo más indicado es dejar un comentario, que atenderemos lo antes posible. Por cierto, filtramos el SPAM.

¡Apoya comoinstalar.me!

¿Ya tienes lista tu plataforma de eLearning gracias a nuestra guía de instalación de Moodle en Fedora 36/35/34? Si es así y te apetece expresar tu agradecimiento colaborando con el mantenimiento de este sitio y la redacción de nuevos artículos sobre materias como Fedora 36/35/34 y Moodle, puedes hacerlo dejando una pequeña propina de 1 $ en PayPal:

O, si te sientes especialmente agradecido, invitándome a un café:

¡Gracias!

Valora esta entrada

5/5 - (4 votos)

17 comentarios en «Cómo instalar Moodle en Fedora 36/35/34»

  1. Cordial saludo.

    Me aparece este error, ¿qué puede ser¡?
    Deprecated: Return type of moodle_recordset::rewind() should either be compatible with Iterator::rewind(): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/html/moodle/lib/dml/moodle_recordset.php on line 61

    Fatal error: Type of xml_format_exception::$line must be int (as in class Exception) in /var/www/html/moodle/lib/xmlize.php on line 0

    Responder
    • Hola, Carlos. En los requerimientos del tutorial se especifica que PHP es compatible hasta la versión 8.0. Seguramente trabajes con Fedora 36, que incluye la versión 8.1, no compatible en este momento, así que deberías instalar una versión anterior de este lenguaje.

      Responder
  2. «La configuración de PHP max_input_vars debe ser al menos 5000«… Siguiendo las instrucciones paso a paso, para Fedora 33. Nunca he podido instalar Moodle a la primera con Uds. Es extraño…

    Responder
    • Álvaro, lo que es extraño es que te saltes un paso que aparece claramente en el tutorial. Esa configuración se detalla y, por supuesto, el tutorial funciona a la primera.

      Responder
  3. Queda pendiente «Cómo instalar QUEMU con interfaz gráfica» y «Cómo instalar cualquier sistema operativo con la interfaz gráfica de QEMU«… ¡¡¡Muchas gracias!!!

    Responder
  4. Lo intenté nuevamente. Esta vez no utilicé VirtualBox ni VMWare, sino Qemu. Funcionó a la perfección (bloqueando SELinux previamente). Gracias por sus asesorías. Bendiciones.

    Responder
    • Estupendo. Sin embargo no creo que se trate de un problema de usar un tipo de máquina virtual u otra, sino de que realizas la instalación en otro sistema distinto, mucho más «limpio». De hecho SELinux no tiene nada que ver, ya que en el tutorial se realiza la instalación con SELinux activo. Lo que importa es que ya lo tienes funcionando.

      Responder
  5. Me rindo. Rara vez me doy por vencido…

    Config table does not contain version, can not continue, sorry.

    More information about this error

    It is usually not possible to recover from errors triggered during installation, you may need to create a new database or use a different database prefix if you want to retry the installation.

    Responder
  6. Al momento de iniciar la instalación de Moodle mediante IP: Instalador web:

    Fatal error: Uncaught Error: Call to undefined function json_decode() in /var/www/html/moodle/lib/classes/component.php:535 Stack trace: #0 /var/www/html/moodle/lib/classes/component.php(436): core_component::fetch_component_source() #1 /var/www/html/moodle/lib/classes/component.php(395): core_component::fetch_subsystems() #2 /var/www/html/moodle/lib/classes/component.php(230): core_component::fill_all_caches() #3 /var/www/html/moodle/lib/classes/component.php(126): core_component::init() #4 [internal function]: core_component::classloader() #5 /var/www/html/moodle/install.php(228): spl_autoload_call() #6 {main} thrown in /var/www/html/moodle/lib/classes/component.php on line 535

    Responder
      • Solucionado lo de php-json, además de php-opcache, php-mbstring, php-xml y php-zip.
        Ahora el problema es que después de iniciar la instalación via web da como resultado:

        «Lo sentimos, config table no contiene versión, no se puede continuar.

        Más información sobre este error

        Generalmente no es posible recuperarse de los errores encontrados durante la instalación; es posible que tenga que crear una nueva base de datos o usar un prefijo de base de datos diferente si desea volver a intentar hacer la instalación«.

        Responder
        • Acabo de actualizar el tutorial a la versión 3.10+, lo he probado y funciona todo correctamente. Si es una nueva instalación que te está dando problemas te sugiero empezar de cero (borrando los directorios creados y la base de datos). ¿Qué versión de PHP y MariaDB/MySQL estás usando?

          Responder

Deja un comentario