Si algunos de nuestros foros, manuales, ALDOS, paquetería o proyectos te han resultado de ayuda, apreciaremos mucho nos apoyes con un donativo.

Instalación estricta de Moodle.

Autor: Joel Barrios Dueñas
Correo electrónico: darkshram en gmail punto com
Sitio de Red: http://www.alcancelibre.org/
Jabber ID: darkshram@jabber.org

Creative Commons Reconocimiento-NoComercial-CompartirIgual 2.1

© 1999-2016 Joel Barrios Dueñas. Usted es libre de copiar, distribuir y comunicar públicamente la obra y hacer obras derivadas bajo las condiciones siguientes: a) Debe reconocer y citar al autor original. b) No puede utilizar esta obra para fines comerciales (incluyendo su publicación, a través de cualquier medio, por entidades con fines de lucro). c) Si altera o transforma esta obra o genera una obra derivada, sólo puede distribuir la obra generada bajo una licencia idéntica a ésta. Al reutilizar o distribuir la obra, tiene que dejar bien claro los términos de la licencia de esta obra. Alguna de estas condiciones puede no aplicarse si se obtiene el permiso del titular de los derechos de autor. Los derechos derivados de usos legítimos u otras limitaciones no se ven afectados por lo anterior. Licencia completa en castellano. La información contenida en este documento y los derivados de éste se proporcionan tal cual son y los autores no asumirán responsabilidad alguna si el usuario o lector, hace mal uso de éstos.

Antes de comenzar.

Este documento considera que se utilizará de manera estricta el estándar de jerarquía de sistema de archivos y que se utilizará /srv/www en lugar de /var/www como directorio raíz para las carpetas de Moodle.

Considere que la carpeta de datos de Moodle puede llegar a crecer muchísimo y requerir docenas de GB de espacio de almacenamiento. Se recomienda que /srv/www tenga asignada una partición o volumen lógico de al menos 100 GB.

Se recomienda un servidor con al menos 4 GB RAM. Cada página abierta en Moodle representará un consumo de entre 38 a 42 MB de RAM. Sólo 100 usuarios conectados simultáneamente —cada uno accediendo a una sola página a la vez— representarán un consumo de alrededor de 4 GB de RAM.

Equipamiento lógico necesario.

Versiones de Moodle.

Si utiliza CentOS 6 o Red Hat™ Enterprise Linux 6 —sin AL-Server o AL-Server-Plus— es importante señalar que la versión de PHP que se incluye sólo permite instalar hasta Moodle 2.3, la cual llegó a sin fin de ciclo de vida en enero de 2014. Con el almacén YUM AL-Server es posible instalar PHP 5.4 y la versión 2.6 de Moodle en paquete RPM, sin embargo esta versión llegó al fin de su ciclo de vida en mayo de 2015. Para poder utilizar Moodle 2.8 y versiones posteriores es necesario utilizar los almacenes YUM AL-Server y AL-Server-Plus que incluyen el requisito de MariaDB 5.5.

Moodle 2.8 en adelante requiere cómo mínimo PHP 5.4.4 y MariaDB™/MySQL™ 5.5.31 o bien PostgreSQL 9.1, por lo que CentOS 7 o Red Hat™ Enterprise Linux 7 cubren perfectamente los requisitos sin almacenes YUM adicionales.

Instalación.

Descargue la configuración del almacén YUM AL-Server:

wget -N http://www.alcancelibre.org/al/server/AL-Server.repo \
    -P /etc/yum.repos.d/

Si utiliza CentOS 6 o Red Hat™ Enterprise Linux 6 descargue además el almacén YUM AL-Server-Plus:

wget -N http://www.alcancelibre.org/al/server/AL-Server-Plus.repo \
    -P /etc/yum.repos.d/

Instale, configure y optimice MariaDB™ de acuerdo a como se describe en el documento titulado «Configuración básica de MySQL™ y MariaDB™».

Instale los paquetes php, php-gd, php-intl, php-mbstring, php-mysql, php-soap, php-xml y php-xmlrpc:

yum -y install php php-gd php-intl \
php-mbstring php-mysql php-soap \
php-xml php-xmlrpc php-opcache

Ejecute lo siguiente para aplicar los cambios:

service httpd restart

Procedimientos:

Genere el directorio donde se alojará Moodle y su carpeta de datos:

mkdir -p /srv/www/lms/{moodle,moodledata}

Asegure que el tipo de contexto de SELinux para el directorio /srv/www/lms/moodlesea httpd_sys_content_t:

chcon -R -t httpd_sys_content_t /srv/www/lms/moodle

Asegure que el tipo de contexto de SELinux para el directorio /srv/www/lms/moodledata sea httpd_sys_rw_content_t:

chcon -R -t httpd_sys_rw_content_t /srv/www/lms/moodledata

Ejecute semanage con fcontext como argumento, la opción -a, la opción -t con httpd_sys_content_t como argumento y /srv/www/lms/moodle como último argumento para establecer el contexto predeterminado para este último directorio:

semanage fcontext -a -t httpd_sys_content_t /srv/www/lms/moodle

Ejecute semanage con fcontext como argumento, la opción -a, la opción -t con httpd_sys_rw_content_t como argumento y /srv/www/lms/moodledata como último argumento para establecer el contexto predeterminado para este último directorio:

semanage fcontext -a -t httpd_sys_rw_content_t /srv/www/lms/moodledata

Agregue un usuario que se encargue de administrar el contenido de /srv/www/lms por FTPES o SFTP. Se requiere haber configurado previamente VSFTP con chroot y SSL/TLS o bien OpenSSH con chroot a través de SFTP.

useradd -s /sbin/nologin -G sftpusers -d /srv/www/lms moodleadmin

Asigne una contraseña a este usuario:

passwd moodleadmin

Descargue una versión estable y soportada de Moodle:

wget -N \
    http://download.moodle.org/download.php/direct/stable30/moodle-latest-30.tgz \
    -P /srv/www/lms/

Descomprima el archivo descargado:

tar zxvf /srv/www/lms/moodle-latest-30.tgz \
-C /srv/www/lms/

Cambie el propietario de /srv/www/lms/moodle al usuario y grupo moodleadmin:

chown -R moodleadmin:moodleadmin /srv/www/lms/moodle

Añada listas de control de acceso sobre el directorio /srv/www/lms/moodle que otorguen permisos de lectura, escritura y acceso al usuario apache y lectura y acceso para el grupo apache. Ésto será requerido sólo para realizar la instalación de Moodle o la instalación o actualización de componentes.

setfacl -R -m u:apache:rwX,g:apache:rX /srv/www/lms/moodle

Cambie el propietario de /srv/www/lms/moodledata al usuario y grupo apache:

chown -R apache:apache /srv/www/lms/moodledata

El contenido de este último directorio sólo debe y puede ser administrado desde la interfaz de Moodle. Este directorio y sus contenidos jamás deben estar disponibles a través de Apache.

Conecte al intérprete de MySQL:

mysql -u root -p

Genere una base de datos para Moodle:

create database moodle;
grant all on moodle.* to moodleadmin@localhost identified by 'contraseña';
exit;

Genere un nuevo archivo de configuración para Moodle en Apache o bien utilice un archivo de configuración existe:

vim /etc/httpd/conf.d/virtuales.conf

Añada el siguiente contenido:

<VirtualHost 192.168.70.15:80>
	DocumentRoot /srv/www/lms/moodle
	ServerName lms.midominio.net
	ErrorLog logs/lms-error_log
	CustomLog logs/lms-access_log combined
	<Directory "/srv/www/lms/moodle">
		AllowOverride all
		php_value upload_max_filesize 128M
		php_value post_max_size 128M
		php_value memory_limit 128M
		php_value max_execution_time 3600
		php_flag display_errors Off
		<IfModule mod_authz_core.c>
		    # Apache 2.4
		    Require local
		    Require all granted
		</IfModule>
		<IfModule !mod_authz_core.c>
		    # Apache 2.2
		    Order Deny,Allow
		    Deny from all
		    Allow from 127.0.0.1
		    Allow from ::1
		    Allow from all
		</IfModule>
	</Directory>
</VirtualHost>

Personalice los valores de las directivas de PHP de acuerdo a sus necesidades. Los valores en el ejemplo son los mínimos recomendados de acuerdo a experiencia personal del autor de este documento.

Aplique los cambios ejecutando lo siguiente:

service httpd reload

Conecte al servidor DNS si previamente configuró éste para que permita utilizar nsupdate para modificar las zonas.

nsupdate -k /etc/rndc.key

Ejecute lo siguiente para añadir el registro que resuelva el nombre del anfitrión:

server 127.0.0.1
update add lms.midominio.net. 86400 A 192.168.70.15
send
quit

Conecte con cualquier navegador moderno hacia http://lms.midominio.net/ y complete la instalación. Si lo prefiere, puede realizar la instalación desde el intérprete de mandatos ejecutando lo siguiente:

cd /srv/www/lms/moodle
sudo -u apache php admin/cli/install.php

La salida y los datos que deberá responder son similares a los siguientes donde ... representa la lista del menú de idiomas y la lista de los procesos realizados durante la instalación que son muy extensos para ser mostrados en este documento:

Moodle 3.0.4 (Build: 20160509) command line installation program
-------------------------------------------------------------------------------
== Available language packs ==
Afrikaans (af)
...
English (en)
English - Pirate (en_ar)
English for kids (en_kids)
English - United States (en_us)
Esperanto (eo)
Español - Internacional (es)
Español - México (es_mx)
Español Venezuela (es_ve)
...
isiZulu (zu)
type value, press Enter to use default value (en)
: es_mx
-------------------------------------------------------------------------------
== Permiso directorios de datos ==
valor del tipo, pulse Enter para utilizar el valor por defecto (2777)
: 2750
-------------------------------------------------------------------------------
== Dirección Web ==
valor del tipo
: http://lms.midominio.net
-------------------------------------------------------------------------------
== Directorio de Datos ==
valor del tipo, pulse Enter para utilizar el valor por defecto
(/srv/www/lms/moodledata)
: 
-------------------------------------------------------------------------------
== Seleccione el controlador de la base de datos ==
 mysqli 
 mariadb 
 pgsql 
valor del tipo, pulse Enter para utilizar el valor por defecto (mysqli)
: mariadb
-------------------------------------------------------------------------------
== host de la Base de Datos ==
valor del tipo, pulse Enter para utilizar el valor por defecto (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_)
: lmsal_
-------------------------------------------------------------------------------
== Puerto de BasedeDatos ==
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)
: moodleadmin
-------------------------------------------------------------------------------
== Contraseña de la base de datos ==
valor del tipo
: contraseña
-------------------------------------------------------------------------------
== Nombre completo del sitio ==
valor del tipo
: Mi Organización
-------------------------------------------------------------------------------
== Nombre corto para el sitio (una palabra) ==
valor del tipo
: miorganizacion
-------------------------------------------------------------------------------
== Nombre_de_usuario de la cuenta del administrador ==
valor del tipo, pulse Enter para utilizar el valor por defecto (admin)
: minombre
-------------------------------------------------------------------------------
== Nueva contraseña de usuario admin ==
valor del tipo
: micontraseña
-------------------------------------------------------------------------------
== Copyright ==
Moodle  - Modular Object-Oriented Dynamic Learning Environment
Copyright (C) 1999 en adelante, Martin Dougiamas (http://moodle.com)

Este programa es software libre: usted puede redistribuirlo y /o modificarlo
bajo los términos de la Licencia Pública General GNU (GNU General Public
License) publicada por la Fundación para el Software Libre, ya sea la versión
3 de dicha Licencia, o (a su elección) cualquier versión posterior.

Este programa se distribuye con la esperanza de que sea útil, pero SIN NINGUNA
GARANTÍA; incluso sin la garantía implícita de COMERCIALIZACIÓN o IDONEIDAD
PARA UN PROPÓSITO PARTICULAR.

Vea la página de información de Licencia de Moodle para más detalles:
http://docs.moodle.org/en/License

¿Ha leído y comprendido los términos y condiciones?
escriba s (sí) o n (no)
: s
-------------------------------------------------------------------------------
== Configurando la base de datos ==
-->Sistema
++ Éxito ++
-->availability_completion
++ Éxito ++
...
-->logstore_legacy
++ Éxito ++
-->logstore_standard
++ Éxito ++
La instalación se completo exitosamente.

La instalación desde el intérprete de mandatos es más rápida y conveniente para los administradores de sistemas.

Si realizó la instalación desde el navegador edite el archivo de configuración de Moodle tras concluir todo el procedimiento de instalación:

vi /srv/www/lms/moodle/config.php

Localice lo siguiente:

$CFG->directorypermissions = 02777;

Cambie por:

$CFG->directorypermissions = 02750;

Al terminar elimine las listas de control de acceso del directorio /srv/www/lms/moodle.

setfacl -R -b /srv/www/lms/moodle

Cambie los permisos del archivo /srv/www/lms/moodle/config.php a sólo lectura y escritura para usuario y sólo lectura para grupo:

chmod 440 /srv/www/lms/moodle/config.php

Cambie el propietario del archivo /srv/www/lms/moodle/config.php al usuario moodleadmin y grupo apache:

chown moodleadmin:apache /srv/www/lms/moodle/config.php

Añada de nuevo las listas de control de acceso el usuario y grupo apache del directorio /srv/www/lms/moodle sólo si requiere instalar o actualizar algún componente de Moodle.

setfacl -R -m u:apache:rwX,g:apache:rX /srv/www/lms/moodle

Deje intactos los permisos del directorio /srv/www/lms/moodledata y sus contenidos. Éstos deben mantener permanentemente permisos de lectura, escritura y acceso para el usuario y grupo apache.

Moodle requiere ejecutar con frecuencia un conjunto de operaciones de mantenimiento y procesar la cola de envío de correo electrónico de los foros y las tareas. Genere el archivo /etc/cron.d/00moodle-cron:

vi /etc/cron.d/00moodle-cron

Añada el siguiente contenido:

*/15 * * * * apache php -f /srv/www/lms/moodle/admin/cli/cron.php > /dev/null

Lo anterior hará que cada 15 minutos se ejecute como el usuario apache php -f /srv/www/lms/moodle/admin/cli/cron.php, enviando la salida exitosa al dispositivo nulo.

Reinicie el servido crond para aplicar los cambios.

service crond restart

Valide el funcionamiento de Moodle accediendo con un navegador hacia http://lms.midominio.net.

Proceso de actualización de Moodle.

Para actualizar Moodle a una versión más reciente se debe seguir el siguiente procedimiento, mismo que implica reemplazar por completo el directorio de moodle utilizando una copia de el archivo config.php y copiando o actualizando los complementos o módulos que se hayan añadido.

Se recomienda hacer primero un respaldo de la base de datos.

mysqldump --opt -umoodleadmin -pcontraseña moodle > respaldo-moodle.sql

Acceda al directorio de Moodle:

cd /srv/www/lms/moodle

Es importante impedir que haya actividad en la base de datos mientras se realiza la actualización. Ejecute lo siguiente para poner Moodle en modo de mantenimiento.

sudo -u apache /usr/bin/php admin/cli/maintenance.php --enable

La salida será similar a la siguiente:

Resetting core_component cache after core upgrade to version 2015111604
== Modo de mantenimiento (http://lms) ==
Su sitio actualmente está en modo de mantenimiento CLI (interfaz por línea de comandos), no se permite el acceso vía web.

Salga del directorio:

cd ..

Es importante destacar que jamás se debe sobre-escribir el directorio de Moodle, particularmente si se ve a actualizar a una versión mayor. Cambie el nombre del directorio actual.

mv moodle moodle-old

Descargue una versión más reciente de Moodle:

wget -N \
    http://download.moodle.org/download.php/direct/stable31/moodle-latest-31.tgz \
    -P /srv/www/lms/

Descomprima el archivo descargado:

tar zxvf /srv/www/lms/moodle-latest-31.tgz \
-C /srv/www/lms/

Asegure que el tipo de contexto de SELinux para el nuevo directorio /srv/www/lms/moodlesea httpd_sys_content_t:

chcon -R -t httpd_sys_content_t /srv/www/lms/moodle

Cambie el propietario del nuevo directorio /srv/www/lms/moodle al usuario y grupo moodleadmin:

chown -R moodleadmin:moodleadmin /srv/www/lms/moodle

Copie el archivo de configuración del viejo Moodle al directorio del nuevo Moodle:

cp -a /srv/www/lms/moodle-old/config.php \
    /srv/www/lms/moodle 

Acceda nuevamente al directorio de Moodle:

cd /srv/www/lms/moodle

Ejecute lo siguiente para realizar el procesos de actualización de la base de datos:

sudo -u apache /usr/bin/php admin/cli/upgrade.php

La salida será similar a la siguiente:

== Actualizando la base de datos: de la version 2.9.6 (Build: 20160509) (2015051106) a 3.0.4 (Build: 20160509) (2015111604)... ==

Sus archivos Moodle han sido modificados, y Usted está a punto de
actualizar automáticamente su servidor a esta versión:

3.0.4 (BUILD: 20160509) (2015111604)

Una vez que haga esto, no podrá volver atrás. Por favor, note que este
proceso puede tomar bastante tiempo.

¿Está seguro de que quiere actualizar este servidor a esta versión?
escriba s (sí) o n (no)

Pulse la tecla s para responder que Sí.

La extensa salida será similar a la siguiente:

-->Utilería para importar idioma: es_mx
++ El paquete de idioma 'es_mx' se ha instalado exitosamente ++
-->Sistema
++ Éxito ++
-->availability_completion
++ Éxito ++
-->availability_date
++ Éxito ++
-->availability_grade
++ Éxito ++
...
++ Éxito ++
-->logstore_database
++ Éxito ++
-->logstore_legacy
++ Éxito ++
-->logstore_standard
++ Éxito ++
Command line upgrade completed successfully.

Permita que termine el procedimiento de actualización.

Desactive el modo de mantenimiento.

sudo -u apache /usr/bin/php admin/cli/maintenance.php --disable

La salida será similar a la siguiente:

== Modo de mantenimiento (http://centos6-i686.alcancelibre.org.mx/moodle) ==
El modo de mantenimiento está desactivado y el sitio vuelve a funcionar con normalidad

Valide el funcionamiento de Moodle accediendo con un navegador hacia http://lms.midominio.net.

Si algunos de nuestros foros, manuales, ALDOS, paquetería o proyectos te han resultado de ayuda, apreciaremos mucho nos apoyes con un donativo.

Última Edición: 22/07/2016, 21:20|Hits: 7,076 Ver la versión para imprimir