Instalación paso a paso de Node.js en tu servidor sea compartido o VPS en Dreamhost. Pasa tu proyecto Node.js y sus dependencias a producción con esta breve guía (basada en parte en la documentación de Dreamhost). Algo a tener en cuenta: Dreamhost funciona con Passenger un servidor de aplicaciones que maneja las solicitudes http, gestiona procesos y recursos, permite diagnostico y seguimiento de problemas, etc. Passenger es que se encargará de correr tu aplicacion Node.js, aunque segun su documentacion también puedes correr Python y Ruby (al menos en Dreamhost).

Requerimiento:

  • Cuenta en DreamHost
  • Crear un subdominio, que permita Passenger para ejecutar aplicaciones Node.js
  • Habilitar el acceso SSH a tu usuario
  • Alguna aplicación para acceder vía terminal, Putty por ejemplo

Por defecto DreamHost tiene instalado Node.js v8.10.0 pero el gestor de paquete npm no lo está. Por lo que recomiendan instalar de manera manual Node.js a un versión más actual y sus demás dependencias. Y a eso vamos!

Paso a seguir:

1. Instalaremos en gestionador de versiones de Node.js NVM (Node Version Manager), para ello inicia sesión en tu servidor via SSH.

2. Visita la siguiente página para determinar que versión de NVM instalar: https://github.com/nvm-sh/nvm#install-script

3. Asegúrate de estar en el directorio de tu usuario.

[server]$ cd ~

4. Corre el siguiente comando para descargar NVM. Cambia la versión si es necesario.

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | bash

Lo que hara este comando es:

  • Crear un directorio oculto bajo tu usuario llamado /.nvm
  • Agregará lo siguiente a tu archivo .bashrc
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion

Si no puedes verlo a través de la terminar, puedes verlo por el FileManager de tu cuenta en DreamHost.

5. OPCIONAL: Si instalas NVM como usuario en una máquina Shared o Dedicada, asegurate que el script no esté bloqueado corriendo lo siguiente como tu usuario:

[server]$ setfattr -n user.pax.flags -v "mr" $NVM_DIR/nvm.sh

6. Ahora hay que editar el archivo .bash_profile existente, para ello ir al FileManager de tu cuenta y bajo el directorio de tu usuario estará. Edita agregando al final la siguiente línea:

source ~/.bashrc

7. Corre el siguiente comando para permitir que tu shell use esta nueva versión de NVM:

[server]$ . ~/.bash_profile

8. Para probar si ahora puedes usar NVM, corre lo siguiente que debería responder con la versión que has instalado:

[server]$ nvm --version
0.38.0

Con ello ya tienes instalado NVM (Node Version Manager) y podremos ahora instalar Node.js

Instalar Node.js

Ahora que se ha instalado nvm, puedes usarlo para instalar Node.js

1. Revisa qué versiones de Node.js están disponibles:

[server]$ nvm ls-remote

2. Instala la versión que desees:

[server]$ nvm install v14.17.0

3. Si instalas NVM como usuario en una máquina Shared o Dedicado, puede haber que no permitirá ejecutar el comando node o npm ,un error como este:

#
# Fatal error in , line 0
# Check failed: reservation_.SetPermissions(protect_start, protect_size, permission).
#
#
#
#FailureMessage Object: 0x3dfe93bb400

 Corre el siguiente comando después de la instalación (se recomienda hacer cada vez que por algún motivo descargues diferentes versiones) para corregirlo:

[server]$ setfattr -n user.pax.flags -v "mr" $(find $NVM_DIR -type f -iname "node" -o -iname "npm" -o -iname "npx")

3. Establece tu versión actual de node a tu nueva versión:

[server]$ nvm use v14.17.0
Now using node v14.17.0 (npm v)

4. Comprueba qué versión de Node.js se está ejecutando ingresando lo siguiente:

[server]$ node -v
v14.17.0

5. Ten en cuenta que si cierras sesión y vuelves a iniciarla Shell usara la version predeterminada, para cambiar ello corre el siguiente comando:

[server]$ nvm alias default v14.17.0
default -> v14.17.0

Con todos estos pasos tendrás instalado tanto Node.js como NPM (Node Package Manager) para descargar paquetes y módulos.

Para probar, según la documentación de Dreamhost y Passenger, el archivo inicial de tu aplicación debe llamarse app.js. Veremos un ejemplo en otra ocasión. Si te pareció útil la guía, compártelo!