Chamilo LMS y Apache2 Reverse Proxy

Visitas: 90  
Tiempo total: 2 días con 14:35:28 hrs  

En esta publicación explico cómo migrar una instancia Chamilo de un servidor a otro, con esta migración también cambiará el nombre de dominio y la carpeta utilizada, así mismo, se implementará Apache Reverse Proxy.

Instalación

Chamilo funcionará en el siguiente servidor local virtualizado: 192.168.1.28

Como debes de saber, tanto la base de datos como el archivo de configuración de Chamilo deben de tener configurada la nueva dirección publica del sitio, esta dirección es:

https://ejemplo.com/chamilo

Archivo de configuración Chamilo:

$_configuration[‘root_web’] = ‘https://ejemplo.com/chamilo/’;
$_configuration[‘root_sys’] = ‘/var/www/mi_servidor/’;

Archivo de configuración del servidor root:

ProxyPass /chamilo http://192.168.1.28:80
ProxyPassReverse /chamilo http://192.168.1.28:80

La base de datos:

Recordemos, la nueva dirección es “https://ejemplo.com/chamilo”, y la anterior era “https://example.com/lms_chamilo”, así que en la base de datos debemos reemplazar las coincidencias de example.com/lms_chamilo con ejemplo.com/chamilo, después reemplazar las coincidencias de example.com con ejemplo.com.

Problema

Ok, si has hecho esto te encontrarás con el siguiente problema (y aquí leerás la única solución que encontrarás en la web):

Todo el sitio aparentemente funciona bien, los archivos css, js y las imágenes se muestran sin ningún problema, los enlaces internos URL funcionan correctamente. El problema se encuentra en los formularios web, en ellos, el parámetro “action” apunta a la carpeta raíz del sitio.

Ejemplos:

<form method=”post” action=”/main/xxx/yyy/zzz.php” />
<form method=”post” action=”/index.php” />

Si la carpeta de instalación de Chamilo es https://ejemplo.com/chamilo, al enviar el formulario, la URL destino será (por ejemplo) https://ejemplo.com/index.php en vez de https://ejemplo.com/chamilo/index.php.

Resumen del problema: al utilizar Chamilo con Apache reverse proxy, las direcciones de envío de los formularios web es absoluta. Las direcciones apuntan a la carpeta raíz, y si tenemos Chamilo instalado en una carpeta, esto es un problema.

Solución

Descartando errores de la migración: el primer paso que realicé, fue deshabilitar Reverse Proxy, el servidor local y probar los mismos archivos en la misma carpeta (https://ejemplo.com/chamilo). Esto funcionó sin problemas, Chamilo funcionó correctamente en una carpeta del servidor web sin utilizar Apache Reverse Proxy.

Dado que Chamilo virtualmente estaba instalada en la carpeta root del servidor virtual http://192.168.1.28, para solucionar el problema simplemente movemos de la instalación de Chamilo a la subcarpeta http://192.168.1.28/chamilo. De esta manera, Chamilo funcionará con Reverse Proxy sin problemas.

El archivo de configuración deberá de quedarnos de la siguiente manera:

$_configuration[‘root_web’] = ‘https://ejemplo.com/chamilo/’;
$_configuration[‘root_sys’] = ‘/var/www/mi_servidor/chamilo/’;

Y lo más importante, el archivo de configuración del servidor debe de ser (no olvidemos la diagonal al final de http://192.168.1.28:80/chamilo/):

ProxyPass /chamilo http://192.168.1.28:80/chamilo/
ProxyPassReverse /chamilo http://192.168.1.28:80/chamilo/

Directorios virtuales con Reverse Proxy de Apache2 con Ubuntu Server

Para aprender a utilizar Reverse Proxy, por favor lee el siguiente artículo:

https://www.elconspirador.com/2018/08/23/directorios-virtuales-con-reverse-proxy-de-apache2-con-ubuntu-server/


Para recibir boletines de información, por favor escribe tu correo electrónico:

Por favor ingrese un correo electrónico valido.
Registrado correctamente!