DESPLEGAMENT D’APLICACIONS NODE.JS EN SERVIDORS WEB

Un dels aspectes que fan més difícil l’adaptació d’un desenvolupador PHP cap a desenvolupador NodeJS és el desplegament i publicació de l’aplicació NodeJS, en aquest cas el problema ve donat perquè l’aplicació node representa un servei i un port específic, molt lluny de l’estructura domini/directori = aplicació que tenim en PHP

Prerequisits

  • sudo
  • node.js i npm
  • Nom de domini
  • IP pública

Preparació de l’aplicació

Instal·lació de curl, i node.js i el paquet build-essential

 Existeixen alternatives a l’hora de iniciar automàticament la nostra aplicació

A través de rc.local (recomanable)

Si volem que algun programa s’iniciï després d’arrencar, només cal afegir-lo al fitxer /etc/rc.local:

#! /bin/bash
node /ruta_a_la_nostra_app/server.js &

Debian Stretch:

Es pot crear un servei tal i com indica el següent article:

https://linuxconfig.org/how-to-automatically-execute-shell-script-at-startup-boot-on-systemd-linux

Ajustaments de DNS i hosts

Habilitació de noms de domini

Habilitar mòduls proxy i proxy_http  de Apache, permeten redirigir tràfic del port d’aplicació al port 80 de httpd

sudo a2enmod proxy
sudo a2enmod proxy_http

Crear site definint característiques del site com a Proxy i ProxyReverse, modificar port del proxypass i proxyreverse segons aplicació.

<VirtualHost *:80>
<Proxy *>
Order deny,allow
     Allow from all
   </Proxy>
 ServerAdmin webmaster@exemple.dev
ServerName exemple.dev
ProxyPreserveHost On
ProxyRequests Off
ProxyPass / http://127.0.0.1:8888/
ProxyPassReverse / http://127.0.0.1:8888/
</VirtualHost>

I sobre NGINX?


tenint en compte el potencial que té aquest servidor, que recordem incorpora ja els mòduls de proxy i proxy reverse, és una opció a tenir en compte:
A continuació s’indica la porció de configuració destinada a fer de proxy invers, de manera que escolta pel port 80 peró redirigeix cap al port 3000, fent que aparentment mostri la mateixa URL. 

server{
listen 80;
root —–;
server_name ——;
location / {
                proxy_pass http://IP_de_servei:3000;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header Host $http_host;
        }
}