Diferència entre revisions de la pàgina «Instal·lació d'un servidor de sòcols web a un Debian amb Apache»

De things.cat
Salta a: navegació, cerca
(Es crea la pàgina amb «= Prerequisits = Heu de tenir com a mínim la versió 2.4 d'Apache (amb la 2.2 no us anirà). sudo apachectl -V | grep version = Instal·lació dels mòduls d'ext...».)
 
m
 
(Hi ha 7 revisions intermèdies del mateix usuari que no es mostren)
Línia 1: Línia 1:
 
= Prerequisits =
 
= Prerequisits =
  
Heu de tenir com a mínim la versió 2.4 d'Apache (amb la 2.2 no us anirà).
+
Heu de tenir, com a mínim, la versió 2.4 d'Apache (amb la 2.2 no us anirà). Per a saber quina és la vostra versió:
  
 
   sudo apachectl -V | grep version
 
   sudo apachectl -V | grep version
Línia 10: Línia 10:
 
  sudo a2enmod proxy_wstunnel
 
  sudo a2enmod proxy_wstunnel
  
 +
= Instal·lació d'un servidor de sòcols web =
 +
El funcionament d'aquest apartat ha estat verificat amb ''Node.js'' versió 10.4.2 i ''npm'' 6.4.1. Per saber-ne les versions que hi teniu instal·lades:
 +
node --version
 +
npm --version
  
  sudo nano /etc/apache2/sites-available/nano 000-default.conf
+
Si no teniu instal·lats el ''Node.js'' i l'''npm'', us recomanem fer la [https://nodered.org/docs/getting-started/local instal·lació del NodeRED], per a no entrar en conflictes de versions quan ens faci falta.
 +
 
 +
Baixeu-vos aquest exemple de servidor de sòcols web fet en ''Node.js''. Aquest exemple fa servir el port 8800 (canviable fàcilment modificant-ho al codi):
 +
wget https://www.binefa.cat/training/codes/node/wsServer.js.txt
 +
mv wsServer.js.txt wsServer.js
 +
 
 +
Per a tenir el servei a un segon pla, i que segueixi funcionant quan ens desconnectem del terminal remot, podeu fer servir ''screen'':
 +
screen
 +
 
 +
En cas de no tenir ''screen'' instal·lat:
 +
sudo apt install screen
 +
 
 +
Per a executar el servidor de sòcols web:
 +
node wsServer.js
 +
 
 +
En el cas de que us digui que no teniu ''express'' instal·lat:
 +
npm install express
 +
npm install express-ws
 +
 
 +
Deixem el servidor funcionant a ''screen''. Per a sortir del terminal ''screen'', i tornar al vostre terminal normal, premeu les tecles Ctrl A D
 +
 
 +
= Configuració de l'Apache =
 +
Aquesta configuració està pensada per a servidors sense certificats de seguretat. 
 +
  sudo nano /etc/apache2/sites-available/000-default.conf
 +
 
 +
A la línia prèvia a l'etiqueta '''</VirtualHost>''', escriviu-hi (personalitzeu el vostre nom de servidor i el número de port):
 +
  ServerName '''elVostre.Servidor.cat'''
 +
  RewriteEngine On
 +
  RewriteRule ^/website1(.*)$ http://localhost:'''8800'''$1 [P,L]
 +
  RewriteCond %{REQUEST_URI}  ^/ws_website1 [NC]
 +
  RewriteCond %{QUERY_STRING} transport=websocket [NC]
 +
  RewriteRule ^(.*)$ ws://localhost:'''8800'''$1 [P,L]
 +
  RewriteCond %{REQUEST_URI}  ^/ws_website1 [NC]
 +
  RewriteRule ^(.*)$ http://localhost:'''8800'''$1 [P,L]
 +
 
 +
Aquest contingut ha d'estar entre les etiquetes '''<VirtualHost *:80>''' i '''</VirtualHost>'''
 +
 
 +
Escriviu de nou la configuració de l'Apache i reinicieu el servei:
 
  sudo a2enmod rewrite && sudo systemctl restart apache2
 
  sudo a2enmod rewrite && sudo systemctl restart apache2
  
 +
Verifiqueu si Apache segueix funcionant:
 
  systemctl status apache2.service
 
  systemctl status apache2.service
 +
 +
= Bibliografia =
 +
[https://stackoverflow.com/questions/27526281/websockets-and-apache-proxy-how-to-configure-mod-proxy-wstunnel WebSockets and Apache proxy : how to configure mod_proxy_wstunnel?]

Revisió de 14:29, 7 feb 2020

Prerequisits

Heu de tenir, com a mínim, la versió 2.4 d'Apache (amb la 2.2 no us anirà). Per a saber quina és la vostra versió:

 sudo apachectl -V | grep version

Instal·lació dels mòduls d'extensió a Apache

sudo a2enmod proxy
sudo a2enmod proxy_http
sudo a2enmod proxy_wstunnel

Instal·lació d'un servidor de sòcols web

El funcionament d'aquest apartat ha estat verificat amb Node.js versió 10.4.2 i npm 6.4.1. Per saber-ne les versions que hi teniu instal·lades:

node --version
npm --version

Si no teniu instal·lats el Node.js i l'npm, us recomanem fer la instal·lació del NodeRED, per a no entrar en conflictes de versions quan ens faci falta.

Baixeu-vos aquest exemple de servidor de sòcols web fet en Node.js. Aquest exemple fa servir el port 8800 (canviable fàcilment modificant-ho al codi):

wget https://www.binefa.cat/training/codes/node/wsServer.js.txt
mv wsServer.js.txt wsServer.js

Per a tenir el servei a un segon pla, i que segueixi funcionant quan ens desconnectem del terminal remot, podeu fer servir screen:

screen

En cas de no tenir screen instal·lat:

sudo apt install screen

Per a executar el servidor de sòcols web:

node wsServer.js

En el cas de que us digui que no teniu express instal·lat:

npm install express
npm install express-ws

Deixem el servidor funcionant a screen. Per a sortir del terminal screen, i tornar al vostre terminal normal, premeu les tecles Ctrl A D

Configuració de l'Apache

Aquesta configuració està pensada per a servidors sense certificats de seguretat.

sudo nano /etc/apache2/sites-available/000-default.conf

A la línia prèvia a l'etiqueta </VirtualHost>, escriviu-hi (personalitzeu el vostre nom de servidor i el número de port):

 ServerName elVostre.Servidor.cat
 RewriteEngine On
 RewriteRule ^/website1(.*)$ http://localhost:8800$1 [P,L]
 RewriteCond %{REQUEST_URI}  ^/ws_website1 [NC]
 RewriteCond %{QUERY_STRING} transport=websocket [NC]
 RewriteRule ^(.*)$ ws://localhost:8800$1 [P,L]
 RewriteCond %{REQUEST_URI}  ^/ws_website1 [NC]
 RewriteRule ^(.*)$ http://localhost:8800$1 [P,L]

Aquest contingut ha d'estar entre les etiquetes <VirtualHost *:80> i </VirtualHost>

Escriviu de nou la configuració de l'Apache i reinicieu el servei:

sudo a2enmod rewrite && sudo systemctl restart apache2

Verifiqueu si Apache segueix funcionant:

systemctl status apache2.service

Bibliografia

WebSockets and Apache proxy : how to configure mod_proxy_wstunnel?