Guía rápida: NodeJS con NGINX en Ubuntu 14.04 LTS como servicios
Hace mucho que no escribo un post y justo ayer tuve que levantar un VPS como servicio para sacar screen-shots de sitios web así que dejó una pequeña guía para tenerlo funcionando en un sistema operativo Ubuntu 14.04 LTS, y de paso actualizo el viejo post.
Asumo que tenemos acceso por SSH al server como root, o al menos con privilegios para sudo.
Instalamos NodeJS
Desde el ubuntu package manager:
Al instalar desde los paquetes de Ubuntu, nodejs
no nos va a quedar como node
, sino como nodejs
, así que creamos un link simbólico (symlink) para poder usar node
.
Actualizamos NPM a la última versión:
Es muy loco como se actualiza npm, si lo vemos en detalle usamos npm para instalar npm en sí mismo y en forma global, lo que termina resultando en la actualización a la última versión
Instalamos NGINX
Y lo configuramos para que funcione como servicio de Ubuntu (lo mas probable es que ya esté configurado al instalar, pero por si las dudas).
Esto nos asegura que al reiniciar el servidor NGINX vuelva a levantar solo.
Probamos que ya esté en funcionamiento abriendo el navegador y pateando la url http://[IP_pública_del_servidor] deberíamos ver un mensaje de bienvenida a nginx.
Configuramos NGINX para que sirva a nodejs
NGINX nos pone a disposición 2 directorios importantes para manejar los servidores:
- /etc/nginx/sites-enabled/
- /etc/nginx/sites-available/
En sites-available vamos a tener las configuraciones de los servidores y en sites-enabled links simbólicos a esas configuraciones, de esta manera podemos manejar que servidores son accesibles manteniendo su configuración.
Así que utilicemos el default que viene (donde apunta a la bienvenida que vimos al instalar) para crear un server:
Ahora abrimos la nueva configuración de servidor y la modificamos a un servidor nodejs:
Vamos a ver algo como lo siguiente:
Lo modificamos para que cumpla con nuestro dominio cambiando default_server y agregando el proxy a un futuro proceso node que vamos a ver mas adelante:
Ahora tenemos un servidor que escucha en el puerto 80 de nginx y sólo cuando se ingresa por el dominio fernetjs.com o www.fernetjs.com va a utilizar el servidor web de node que tengamos corriendo en el puerto 3000.
Por último creamos el link simbólico a el nuevo server en sites-enabled y le avisamos a nginx que recargue las configuraciones:
Levantamos los procesos nodejs como servicios
Nos queda tener algo que mantenga a los servidores web de nodejs corriendo y en modo de servicios de sistema operativo, así que instalamos forever y forever-service
Suponiendo que tenemos un proyecto express de nodejs instalado en /usr/local/fernetjs:
Creamos el servicio y lo corremos en el puerto 3000:
Para manejar los servicios de nodejs:
- Start – “sudo start fernetjs”
- Stop – “sudo stop fernetjs”
- Status – “sudo status fernetjs”
- Restart – “sudo restart fernetjs”
Si queremos ver los logs o listar lo que tenemos en forever podemos seguir utilizando:
A partir de ahora si reiniciamos el servidor no necesitamos levantar los servidores nodejs, correr forever de nuevo, etc 😉