sábado, 21 de septiembre de 2013

Guía definitiva para instalar Moodle y BigBlueButton en el mismo servidor.

El problema...

Cuando queremos hacer funcionar Moodle (o cualquier otro CMS o servidor web) y BigBlueButton en la misma máquina o compartiendo IP pública detrás del mismo router nos surge el problema de que por defecto nuestro servidor web (Apache o cualquier otro) y Nginx (necesario para el funcionamiento de BBB) querrán utilizar el puerto 80.


Posible solución:

Una posible solución sería cambiar de puerto de Nginx a otro diferente del 80. En teoría esto es posible, pero en la práctica BigBlueButton dejará de funcionar y dará mil problemas.


La solución:

Lo que vamos a hacer es cambiar el puerto de nuestro servidor web que aloja el CMS. Después creamos un nuevo host virtual en Nginx con el nombre que queramos para nuestro CMS. Este host virtual lo único que hará será redirigir las peticiones HTTP al nuevo puerto de nuestro servidor web.

Si BBB y nuestro CMS están en la misma máquina

En este caso necesitamos cambiar el puerto de escucha de nuestro servidor web. En el caso de Lampp con Apache simplemente editamos el archivo "httpd.conf" y buscamos la linea donde aparezca "Listen 80" y sustituimos 80 por nuestro nuevo puerto. Por ejemplo 9000: "Listen 9000". Para que la configuración tenga efecto reiniciamos Apache.

Ahora creamos un nuevo host virtual en nginx. Para ello creamos un nuevo archivo en el directorio: /etc/ngingx/sites-available/. Por ejemplo, para moodle:

sudo gedit /etc/ngingx/sites-available/moodle 

Dentro de este archivo escribimos:

server {
        listen 80;
        server_name www.moodle.test;     #Este es el nombre de dominio para nuestro CMS

        location / {
                proxy_pass http://127.0.0.1:9000;   #Aquí indicamos el nuevo puerto 9000
                proxy_set_header Host $host;
        }
}

Este archivo consigue que Nginx redirija las peticiones que van a "www.moodle.test" a nuestro nuevo puerto de Apache. En el caso de moodle la línea " proxy_set_header Host $host" es necesaria ya que una instalación de Moodle queda asociada a un nombre de dominio.

Ahora creamos un enlace simbólico desde el directorio "sites-enabled" al archivo que acabamos de crear para habilitar nuestro host virtual:

sudo ln -s /etc/nginx/sites-available/moodle /etc/nginx/sites-enabled/moodle

Finalmente reiniciamos Nginx:

sudo /etc/init.d/nginx restart

Si BBB y nuestro CMS están en la misma red local pero en distinta máquina

En este caso no necesitamos cambiar el puerto de escucha del servidor web. Simplemente redirigimos las peticiones para nuestro CMS a la IP local de la máquina que este alojando el servidor web:

server {
        listen 80;
        server_name www.moodle.test;     #Este es el nombre de dominio para nuestro CMS

        location / {
                proxy_pass http://192.168.1.44;   #Aquí indicamos la IP local del servidor web
                proxy_set_header Host $host;
        }
}

Como en el caso anterior, creamos el enlace simbólico:

sudo ln -s /etc/nginx/sites-available/moodle /etc/nginx/sites-enabled/moodle

Y reiniciamos Nginx:

sudo /etc/init.d/nginx restart




Si tienes cualquier duda o problema, hazlo saber en los comentarios :)

1 comentario:

Unknown dijo...

Hola,
Me gustaria saber si primero instalo el moodle y luego el BBB o al reves?