martes, 8 de diciembre de 2015

Ubuntu 14.04 + PHP + Apache2 + WebSockets

Saludos ..

Despues de trasnochar un rato, y de acordarme que no habia vuelto a documentar nada en este blog el cual ah sido parte fundamental en mi vida; me dio por probar la tecnologia de websockets usando PHP como lenguaje principal y apache como servidor web, y como siempre dejar huella de dicha implementacion la cual le puede ser util a alguien en algun lado del mundo.


Wikipedia:    "Explica mejor que yo !!"

WebSocket es una tecnología que proporciona un canal de comunicación bidireccional y full-duplex sobre un único socket TCP. Está diseñada para ser implementada en navegadores y servidores web, pero puede utilizarse por cualquier aplicación cliente/servidor. La API de WebSocket está siendo normalizada por el W3C, mientras que el protocolo WebSocket ya fue normalizado por la IETF como el RFC 6455. Debido a que las conexiones TCP comunes sobre puertos diferentes al 80 son habitualmente bloqueadas por los administradores de redes, el uso de esta tecnología proporcionaría una solución a este tipo de limitaciones proveyendo una funcionalidad similar a la apertura de varias conexiones en distintos puertos, pero multiplexando diferentes servicios WebSocket sobre un único puerto TCP (a costa de una pequeña sobrecarga del protocolo).


Pasos para sufuncionamiento:

1. Tener un ubuntu funcional en mi caso instale un Ubuntu 14.04.

2. Instalar los siguiente paquetes: 

apache2
php5
php5-mcrypt
curl
php5-curl

Comando para instalar todos esos paquetes, desde una terminal como usuario root:
apt-get install apache2 php5 php5-mcrypt curl php5-curl

3.  Instalar el composer el cual es necesario para el funcionamiento del websocket: 

Desde una temrinarl como usuario root ejecutar lo siguiente:

# curl -sS https://getcomposer.org/installer | php
# mv composer.phar /usr/local/bin/composer

4.  Descargar el software de WebSocket, en mi caso  use Wrench:

https://github.com/varspool/Wrench   => Lo pueden descargar de alli.

NOTA : Descomprimirlo.

5. Configurar el apache para que escuche en el puerto 80 o 443 depende de tu necesidad.

Copiar de la carpeta Wrench/examples el directorio llamado coffeescript y colocarlo en el DocumentRoot del apache; normalmente en ubuntu es  /var/www/html/


6. Configurar el websocket para que funcione:

Entrar a la carpeta Wrench/examples alli encontraras un archivo llamado server.php dentro de el buscas una URL como la siguiente: ws://localhost:8000, si alterar mas cosas; debes cambiar esa URl por la IP local de tu maquina, en mi caso 192.168.1.100 .

Luego en el /var/www/html/coffeescript/index.html  buscar la misma URL y hacer lo mismo cambiarla a ws://192.168.1.100:8000, si alterar mas nada.

Guardas los archivos y quedamos listos para poner a funcionar el servicio.


7. Inicializar servicios:

7.1. Encender el apacher de manera asegurada.

# service apache2 stop
# service apache2 start

7.2. Inicializar el websocket server:

# php /root/Wrench/examples/server.php

NOTA:  Este comando deja inicializada la terminal.

8. Probar el funcionamiento:

Abren un navegador como Firefox o Chrome y entran a la URL del servidor:

http://192.168.1.100/coffeescript/

NOTA: Debe aparecer en la parte superior derecha, un boton que dice "Online".


Gracias, espero le sirva de algo a alguien .. buen dia !