En esta ocasión vamos a ver cómo instalar Moodle en Fedora 40, 39 o 38 paso a paso, de modo que puedas desplegar la plataforma de eLearning más famosa del mundo sobre tu servidor o VPS Fedora.
Contenido
Antes de instalar Moodle en Fedora 40/39/38
Para poder seguir los pasos de esta guía de instalación de Moodle en Fedora será necesario satisfacer una serie de requisitos básicos:
- Una máquina Fedora 40, 39 ó 38 convenientemente actualizada.
- Un entorno o pila tipo LAMP (servicio web con PHP 8.1 ó superior y bases de datos MySQL 8.0, MariaDB 10.6 ó PostgreSQL 13).
- 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 40, 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, 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 policycoreutils-python-utils tar wget
Cómo descargar Moodle para Fedora
Vamos a descargar Moodle para Fedora desde la sección de descargas del sitio oficial, donde encontramos la última versión estable:
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/stable404/moodle-latest-404.tgz
Cómo instalar Moodle en Fedora
El proceso de instalar Moodle en Fedora 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-404.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:
~$ sudo chown -R apache: /var/www/html/moodle/ /var/www/moodledata/
SELinux
En el caso de estar activado SELinux en Fedora 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 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 600 ProxyTimeout 600 </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, 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:
~$ sudo mysql
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 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}
Si trabajas con PostgreSQL hay que instalar la extensión adecuada:
~$ sudo yum install -y php-pgsql
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 8.3 en Fedora 40:
~$ sudo yum install -y php83-php-{gd,intl,mbstring,opcache,pecl-zip,soap,sodium,xmlrpc}
Y si usas PostgreSQL, lo mismo para su extensión:
~$ sudo yum install -y php83-pgsql
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 alternativo:
~$ 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 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 40 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:
En la primera página del instalador seleccionamos el idioma.
A continuación confirmamos las rutas:
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:
Elegiremos el que corresponda con el servicio de bases de datos que hemos preparado previamente para Moodle.
Seguidamente configuramos la conexión al servicio:
Especificamos base de datos, usuario y contraseña tal como los creamos en pasos anteriores.
Se nos mostrará el acuerdo de licencia de Moodle:
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:
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:
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:
¡Ya está todo listo para empezar a trabajar en tu nuevo sitio Moodle sacándole todo el partido desde tu máquina Fedora!
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 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? 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 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!
Actualizado a la versión 4.0.4+ sobre Fedora 40.
Actualizado a la versión 4.0.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
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.
Actualizado a la versión 4.0+.
Actualizado a la versión 3.11.6+.
«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…
Á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.
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!!!
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.
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.
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.
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
Parece que te está faltando la extensión php_json, lo cual es raro, porque al preparar la pila LAMP suele incluirse en el proceso.
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«.
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?
Hola. He intentado con PHP 7.3 y 7.4. MariaDB 10.
Al parecer es SELinux. Trataré de bloquearlo.
No creo que SELinux sea la causa.