como instalar moodle en centos 7

Cómo instalar Moodle en CentOS 7

En esta entrada vamos a ver cómo instalar Moodle en CentOS 7 paso a paso, con lo que podremos trabajar con la plataforma de eLearning más usada en entornos de intranet, pero también muy utilizada a través de Internet. Con esta guía prepararás todos los requisitos básicos de tu servidor o VPS CentOS para que la instalación transcurra sin problemas, dejando el servicio listo para empezar a crear tus propios cursos y recursos online.

Antes de instalar Moodle en CentOS 7

Para poder seguir esta guía de instalación de Moodle en CentOS 7 necesitaremos cumplir una serie de requisitos:

  • Un sistema CentOS 7 actualizado.
  • Una pila LAMP o LEMP, es decir, servidor web con PHP y motor de bases de datos MySQL o MariaDB.
  • Los paquetes policycoreutils-python y wget.
  • Acceso por terminal como root o usuario con permisos de sudo.
  • Conexión a Internet.

En esta guía el servidor web es Apache y el sistema de bases de datos es MariaDB, pero podrías usar perfectamente Nginx, MySQL, etc.

Si cumples todos estos requisitos entonces es hora de abrir una terminal y ponernos manos a la obra.

Cómo descargar Moodle para CentOS 7

Vamos a descargar Moodle para CentOS 7, concretamente la última versión disponible en su sitio web oficial:

como instalar moodle en centos 7

En la sección principal de la zona de descargas del stio de Moodle encontraremos los enlaces de la última versión disponible (https://download.moodle.org/releases/latest/). Siguiendo el enlace anterior llegaremos a los enlaces de los paquetes de que disponemos para descargar cada versión de Moodle:

descargas de moodle para centos 7

Dependiendo de en qué momento accedamos a esta página veremos que junto a la versión oficial estable inicial se encuentra una versión más actualizada que la original, y es la que debemos descargar, ya que contiene actualizaciones y correcciones.

Disponemos de paquetes en formato .tgz y .zip. En esta guía usaremos el paquete .tgz. Al pinchar el enlace correspondiente nos lleva a la página que inicia automáticamente la descarga, pero también ofrece un enlace por si la descarga no se iniciara.

Si tienes abierto el navegador en la máquina CentOS que estás configurando te puede interesar la descarga automática. En mi caso copiaré el enlace alternativo para usarlo en la terminal remota con la que administro la máquina CentOS 7. De hecho, descargo el paquete con el comando wget:

~$ wget https://download.moodle.org/download.php/direct/stable39/moodle-latest-39.tgz

Cómo instalar Moodle en CentOS 7

Moodle se instala físicamente sobre dos carpetas, una para los archivos de la aplicación web y otra para los datos. Esta última debe ser accesible por el servidor web en modo lectura/escritura, pero no debe estar disponible vía web.

En esta guía instalaremos Moodle como parte del sitio web por defecto de CentOS 7, bajo la ruta /var/www/html/moodle/, siendo /var/www/html/moodle/ la carpeta de archivos web y /var/www/moodledata/ la carpeta de datos.

Descomprimimos el paquete de Moodle que acabamos de descargar en su ubicación final:

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

Para que el servidor web pueda escribir en la nueva carpeta que se acaba de crear, cambiaremos la propiedad de esta al usuario y grupo al con el que se ejecuta el servidor web (apache para Apache en CentOS 7):

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

Ahora crearemos el directorio de datos de Moodle:

~$ sudo mkdir /var/www/moodledata

Igualmente cambiaremos el propietario:

~$ sudo chown apache:apache /var/www/moodledata/

Preparación de PHP

Aunque partimos de una pila LAMP, Moodle requiere una larga lista de módulos PHP presentes en el sistema, por lo que debemos asegurarnos de tenerlos instalados. Y eso es lo que vamos a hacer a continuación.

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

~$ sudo yum -y update

Ya podemos descargar e instalar todos los módulos de PHP necesarios mediante yum:

~$ sudo yum -y install php-curl php-mbstring php-opcache php-xml php-gd php-intl php-xmlrpc php-soap php-pecl-zip

Además, es importante tener instalada la extensión correspondiente al servicio de bases de datos que vayamos a usar, en el caso de MariaDB/MySQL:

~$ sudo yum -y install php-mysql

Y en el caso de PostgreSQL:

~$ sudo yum -y install php-pgsql

Para que las nuevas extensiones entren en funcionamiento, recargamos la configuración del servidor web:

~$ sudo systemctl reload httpd

Preparación de la base de datos

Moodle necesita acceder al sistema de bases de datos para manejar y almacenar los datos del servicio. Por este motivo necesitaremos tener preparados una base de datos en exclusiva para Moodle y un usuario con suficientes privilegios para administrarla. Vamos a ver los dos tipos de bases de datos más usadas en Moodle para CentOS 7.

MariaDB/MySQL

Si usas MariaDB procedente de los repositorios de CentOS 7, Moodle necesitará algunos ajustes:

  • El uso del sistema de archivos Barracuda para las tablas.
  • La opción innodb_file_per_table debe estar activada.
  • Que la opción innodb_large_prefix esté activada también.

Haremos estos cambios editando el archivo de configuración del servidor (recordamos que en esta guía usamos MariaDB, para MySQL u otras versiones de MariaDB la ruta del archivo puede ser distinta):

~$ sudo nano /etc/my.cnf.d/server.cnf

En la sección server añadiremos estas líneas:

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

Y reiniciamos el servicio:

~$ sudo systemctl restart mariadb

Solucionada la configuración general, es el momento de crear la base de datos, el usuario con su contraseña y los permisos de este sobre aquella. Conectamos con nuestro usuario administrador de MariaDB/MySQL:

~$ mysql -u root -p

Empezaremos creando la base de datos:

> create database moodle charset utf8mb4 collate utf8mb4_unicode_ci;

Para MySQL 5.x ó MariaDB, creamos el usuario así:

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

Pero para MySQL 8 nos aseguramos de que use el plugin compatible:

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

En cualquier caso, concedemos al usuario los permisos necesarios sobre la base de datos:

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

Y ya podemos cerrar el cliente:

> exit

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

PostgreSQL

Para el caso de este motor de bases de datos crearemos un nuevo rol con contraseña:

~$ sudo -iu postgres createuser -P moodle

Y crearemos su base de datos asociada:

~$ sudo -iu postgres createdb moodle -O moodle

Todo listo para continuar.

SELinux

En el caso de tener activado SELinux en CentOS 7, lo que suele ocurrir por defecto, no basta con haber ajustado los permisos ordinarios de los archivos y directorios de Moodle. Como el contexto de estos archivos y carpetas es de sólo lectura, es necesario definir nuevos contextos de lectura/escritura para que SELinux permita al servidor web escribir además de leer.

Definimos el contexto para el directorio de instalación de Moodle:

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

Aplicamos este nuevo contexto:

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

Definimos también el contexto para SELinux para la carpeta de datos de Moodle:

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

Si se produce algún aviso puedes ignorarlo tranquilamente.

Y aplicamos también este contexto:

~$ sudo restorecon /var/www/moodledata/

Finalmente, para conectar desde Moodle a algunos servicios de bases de datos (como PostgreSQL) es necesario dar permiso explícito:

~$ sudo setsebool -P httpd_can_network_connect_db on

El instalador web de Moodle en CentOS 7

Ya podemos introducir en el navegador la URL que corresponda, según hayamos decidido integrar Moodle en nuestro servicio web. En este ejemplo, el servidor CentOS 7 es accesible desde el dominio centos7.local.lan, así que la URL http://centos7.local.lan/moodle servirá:

como instalar moodle en centos 7

En esta primera pantalla elegimos el idioma de la instalación y continuamos. La siguiente pantalla nos pide confirmar las rutas de acceso e instalación de Moodle:

instalar moodle en centos 7

En principio no hay que cambiar ningún dato, a no ser que hayas creado el directorio de datos de Moodle en otra ruta. Lo mejor es dejar todo como está y continuar.

En la siguiente pantalla tenemos que seleccionar el controlador de base de datos con que trabajará Moodle:

instalacion de moodle en centos 7

Podemos ven que en el desplegable aparecen por un lado las opciones disponibles y por otro las no disponibles en nuestro sistema. En este ejemplo seleccionamos el controlador PostgreSQL, pero hay opciones para MariaDB Server, MySQL, etc.

Llega el momento de suministrar los datos de conexión al sistema de bases de datos:

instalador de moodle para centos 7

Recuperamos los datos de conexión que creamos anteriormente, y los introducimos en el formulario:  el nombre de la base de datos, el usuario que la administra y su correspondiente clave. El resto de valores los dejamos por defecto y continuamos.

Si hemos sido cuidadosos durante la concesión de permisos del servidor web, se creará automáticamente toda la configuración de Moodle y quedará almacenada.

Una nueva pantalla nos informará sobre los términos de la licencia y tendremos que confirmar que hemos leído y comprendido dichos términos:

instalando moodle en centos 7

Continuamos y llegamos a una pantalla de comprobación de requisitos. Si has instalado todo lo necesario y realizado todos los cambios de configuración, obtendrás una pantalla parecida a esta:

configurar centos 7 para moodle

En este caso, el único aviso es el relativo al protocolo HTTPS, que no estamos usando por simplicidad de la guía. En un entorno real de trabajo debes configurar el servidor web por seguridad con cifrado SSL.

Continuamos y ahora es cuando comienza la verdadera instalación. Una nueva pantalla irá informando sobre el resultado de la instalación de todos los módulos y componentes de Moodle:

Todo debería marchar sin problemas, y en la parte inferior de la página podemos encontrar el botón para continuar.

En la siguiente pantalla es el turno de configurar el usuario administrador del sistema:

Introduciremos en el formulario toda la información obligatoria y aquella adicional que consideremos oportuna y actualizaremos los cambios.

El siguiente formulario recoge información general sobre nuestro nuevo sitio Moodle:

Actualizada dicha información llegaremos al área personal y de administración de nuestro nuevo sitio Moodle en CentOS 7, con la sesión del administrador iniciada automáticamente:

Moodle en CentOS 7

Con esto ya tenemos Moodle instalado en CentOS 7 y comienza la ardua tarea de creación de cursos, gestión de usuarios, etc.

Conclusión

Ahora que ya sabes cómo instalar Moodle en CentOS 7 tienes a tu servicio una de las plataformas de eLearning más reconocidas del panorama.

Todo lo relativo a administración y uso de Moodle queda fuera del alcance de este tutorial. Esta es una materia densa y extensa para la que hay muchos recursos, independientes del sistema operativo sobre el que se aloje Moodle.

En caso de dudas, sugerencias, notificación de errores, etc. sobre esta guía, déjame un comentario.

¡Apoya este sitio!

El proceso de instalar y configurar Moodle en CentOS 7 puede llegar a ser una auténtica locura, pero si has llegado hasta aquí te habrás ahorrado unos cuantos dolores de cabeza. Si sientes unas increíbles ganas de agradecérnoslo, cualquier mínima contribución al mantenimiento de este sitio es muy bien recibida, y puedes colaborar invitándome a un café:

 

O dejando una propina de tan sólo 1 $ en PayPal:

¡Gracias!

Valora esta entrada

1 estrella2 estrellas3 estrellas4 estrellas5 estrellas (5 votos, promedio: 5,00 de 5)
Cargando…

11 comentarios en “Cómo instalar Moodle en CentOS 7”

  1. Excelente tutorial, me funcionó, gracias por la ayuda.
    Tengo una consulta, qué configuración adicional a este tutorial debo realizar realizar en el servidor Moodle que lo tengo en forma local, para que pueda ser accesible desde Internet.
    ¿O es cuestión de configurar el port forwarding en mi router?

    Responder
    • Efectivamente, necesitarías IP fija o IP variable con sistema de DNS dinámico, dominio, etc. y además lo que mencionas del router (abrir puertos y redirigir al servidor CentOS 7 con Moodle).

      Responder
    • ¿Qué servicio web usas?

      ¿Has descomprimido el archivo de Moodle en la carpeta /var/www/html/? Comprueba cuál es su contenido, para ver si existe la carpeta /var/www/html/moodle/.

      Responder
  2. Entro a la url y me muestra los archivos que están en la carpeta Moodle, ya revisé si el servicio Apache está funcionando, si ejecuta otros archivos php

    Responder
    • ¡Hola, Ernesto! Parece que algo no está bien con tu configuración de PHP para Apache. Dices que el navegador te muestra los archivos de la carpeta de Moodle, por tanto entre estos archivos debería figurar uno llamado index.php. ¿Qué ocurre si abres este archivo? Si se muestra el código PHP o el navegador lo abre para descarga, PHP no está bien configurado. Si se muestra el instalador de Moodle entonces no tienes conofigurados los archivos index.php, como archivos índice en Apache. Ya nos contarás qué sucedió.

      Responder
  3. Muchas gracias por tu respuesta, efectivamente el problema era que no tenía instalado el PHP, pero ya lo instalé, ahora el error me aparece en la configuración con la base de datos, estoy trabajando con PostgreSQL, primero aparecía que no tenía instalado php-pgsql, lo instalé y ahora el error dice que no se puede conectar con la base de datos, comprobé que existiera el usuario y que estuviera conectado a la base de datos, pero la verdad no sé cuál es el problema, este es el error que aparece:

    Error:La conexión con la base de datos falló

    Es posible que la base de datos esté sobrecargada o no funcione correctamente.

    El administrador del sitio debe comprobar que los detalles de la base de datos han sido correctamente especificados en config.php
    {$a}

    Warning: pg_connect(): Unable to connect to PostgreSQL server: FATAL: la autentificación Ident falló para el usuario «moodle» in /var/www/html/moodle/lib/dml/pgsql_native_moodle_database.php on line 188

    Muchas gracias por tu ayuda.

    Responder
  4. Listo ya lo logré arreglar, el problema estaba en el archivo /var/lib/pgsql/9.3/data/pg_hba.conf, cambié:

    # IPv4 local connections:
    host all all 127.0.0.1/32 ident
    # IPv6 local connections:
    host all all ::1/128 ident

    Por:

    # IPv4 local connections:
    host all all 127.0.0.1/32 md5
    # IPv6 local connections:
    host all all ::1/128 md5

    Y funcionó.

    Responder

Deja un comentario

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies.

ACEPTAR
Aviso de cookies