Cree una aplicación web Hapi.js usando Node.js en Ubuntu 16.04

Hapi.js es un marco Node.js rico, robusto y poderoso diseñado para crear aplicaciones web en el ecosistema Node.js. Su diseño sencillo hace que sea fácil comenzar. Hapi utiliza muchas de las últimas funciones de JavaScript ES6 en su núcleo, como las promesas de ES6. Para aquellos de ustedes que han usado Express antes, Hapi les permite probar algo nuevo y experimentar las últimas funciones de JavaScript.

En este tutorial, nuestro objetivo será configurar una página web básica de Hapi.js, alojada desde nuestro Vultr VPS, en Ubuntu 16.04 LTS. Para aquellos que tienen un dominio para su sitio, utilizaremos un proxy inverso para vincular nuestro dominio a nuestro sitio web. Finalmente, aprenderemos cómo administrarlo con un administrador de procesos. Ahora que lo hemos eliminado, comencemos.

Instalando Node.js

Necesitaremos instalar Node.js. Para hacerlo en Ubuntu 16.04 LTS, siga estas instrucciones.

Agregar el repositorio

Tendremos que agregar el repositorio NodeSource APT, que contiene la última versión LTS de Node.js.

curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install -y nodejs

Estamos descargando un script que usaremos para agregar el repositorio a nuestra lista de fuentes, así como para instalar Node.js desde el repositorio NodeSource.

Instalar herramientas de compilación

Además de instalar Node.js en sí, también tendremos que instalar algunas herramientas de compilación necesarias, que ayudarán a compilar cualquier módulo que necesitemos instalar.

sudo apt-get install -y build-essential

Esto simplemente descarga e instala las herramientas de compilación del repositorio.

Configurar el directorio de la aplicación

Es una buena práctica designar una carpeta que usaremos para nuestra aplicación, que contendrá todos los datos de nuestra aplicación, como archivos de configuración y scripts de inicio. Crea una carpeta y nómbrala como quieras. Por el bien de este tutorial, supondré que lo nombraste site.

mkdir site

Una vez que haya creado la carpeta, ahora podemos cambiarla. Asegurándose de estar en el directorio que acaba de crear, inicie el asistente de paquetes NPM.

npm init

Le pedirá que ingrese algunas cosas diferentes, como el nombre de su aplicación, el archivo de inicio, la licencia, etc. Puede dejar la mayoría de los campos predeterminados, excepto los campos más obvios, como el nombre de su aplicación. Al final, se verá así:

{
  "name": "site",
  "version": "1.0.0",
  "description": "Hapi.js site",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "rich",
  "license": "MIT"
}

Una vez que esté satisfecho con el resultado, haga clic ENTERpara guardar el archivo.

Instalar Hapi.js

Ahora que su directorio se ha construido correctamente, ahora podemos proceder a instalar Hapi.js. Como se mencionó anteriormente, utilizaremos NPM para descargar Hapi.js, así como sus dependencias, para nuestro proyecto. En el directorio del proyecto, ejecute lo siguiente.

npm install hapi.js

Esto descarga Hapi.js de NPM y lo instala en nuestro directorio de proyectos. En la misma ejecución, cualquier dependencia en la que Hapi.js pueda confiar también se descarga para nuestra conveniencia.

Configurar nuestra aplicación de muestra

Ahora es el momento de configurar nuestro archivo de aplicación base Hapi.js. Esto contendrá todo nuestro código para la aplicación. Más adelante, podemos ampliar nuestro código de aplicación y agregarle más cosas, como mejor nos parezca.

A continuación, crearemos nuestro archivo de inicio. Consulte la mainsección de su package.jsonarchivo para determinar exactamente cómo nombrar el archivo. Como utilicé el esquema de nomenclatura predeterminado, se llamará a nuestro archivo index.js.

nano index.js

Una vez que esté dentro del editor de nano texto, cree su código de aplicación base, así.

const Hapi=require('hapi');
const server=Hapi.server({
    host:'localhost',
    port: 3000
});

server.route({
    method:'GET',
    path:'/',
    handler:((request,h)) => {
        return 'Sample Hapi.js Application';
    }
});
async function start() {

    try {
        await server.start();
    } catch (err) {
        console.log(err);
        process.exit(1);
    }
    console.log(`Our server is running! ${server.info.uri}`);
};

start();

Primero, importamos el módulo Hapi. Luego, inicializamos nuestro constructor de servidor, que contiene el host en el que queremos ejecutar el servidor, así como el puerto, que es 3000para este tutorial. A continuación, configuramos un enrutador básico, que indica que cada vez que alguien visita el sitio, recibirá un simple mensaje. Para colmo, tenemos una función asíncrona, para iniciar nuestro servidor, que registrará en la consola que nuestro servidor está ejecutando. Cuando haya terminado, guarde y cierre el archivo ( CTRL+ X)

Ahora que nuestro archivo principal está configurado, estamos listos para iniciar nuestra aplicación.

node index.js

Si ve " Our server is running!" en la consola, el servidor se inició correctamente.

Instalar Nginx

Dado que Nginx está disponible en los repositorios predeterminados de Ubuntu, la instalación es sencilla. Simplemente actualice sus listas de paquetes e instálelo.

sudo apt update
sudo apt install nginx -y 

Después de actualizar las listas de paquetes, se instalarán Nginx y sus dependencias.

Configurar Nginx

Para que Nginx invierta el proxy de nuestra aplicación, necesitaremos crear un archivo de configuración. Este archivo de configuración contendrá información sobre nuestra aplicación, que Nginx usará para el proxy inverso.

Elimine la configuración predeterminada que creó Nginx, ya que la reemplazaremos por la nuestra más adelante.

sudo rm /etc/nginx/sites-enabled/default

Crea un nuevo archivo en la sites-availablecarpeta. En cuanto a los nombres, podemos seguir simplemente site, por simplicidad.

sudo nano /etc/nginx/sites-available/site

En el archivo, pegue lo siguiente y guárdelo.

server {
    listen 80;
    location / {
          proxy_set_header X-Real-IP 
          $remote_addr;
          proxy_set_header 
          X-Forwarded-For 
          $proxy_add_x_forwarded_for;
          proxy_set_header Host 
          $http_host;
          proxy_set_header 
        X-NginX-Proxy true; proxy_pass 
       http://127.0.0.1:3000/;
    proxy_redirect off;
    proxy_http_version 1.1;
    proxy_set_header Upgrade 
     $http_upgrade;
    proxy_set_header Connection 
    "upgrade";
    proxy_redirect off;
    proxy_set_header 
   X-Forwarded-Proto $scheme;
    }
}

En este archivo, le estamos diciendo a Nginx que escuche en el puerto 80. También estamos configurando el paso de proxy a la localhostdirección y al puerto 3000, que es el mismo puerto que nuestra aplicación Hapi.

Ahora puede volver a su directorio de aplicaciones e iniciar el sitio. Una vez que el sitio ha comenzado, simplemente navegue hasta http://yourdomain.como http://yourip, y verá el texto " Hello World".

Instalar PM2

PM2 se puede encontrar en el repositorio de NPM, y puede instalarlo globalmente para que sea accesible desde cualquier lugar, así.

sudo npm install pm2 -g

La -gbandera al final indica que queremos instalar el módulo en la carpeta global de módulos, lo que nos permitirá usarlo fuera de nuestro directorio de proyectos. Esto se utiliza para que nuestro proyecto se comporte como una aplicación normal del sistema.

Iniciando nuestra aplicación con PM2

Una vez que haya instalado PM2, vuelva al directorio de su proyecto. La sintaxis para iniciar nuestra aplicación será ligeramente diferente ahora. Así es como lo haremos con PM2.

pm2 start index.js --name site

Utilizamos la función de inicio PM2, que básicamente crea un perfil para nuestra aplicación, bajo el nombre site. Después de ejecutar ese comando, su sitio web se iniciará, pero notará que los registros no se mostrarán. Eso es porque la forma en que vemos los registros ahora es diferente.

pm2 logs site

Incluso puede especificar cuántas líneas de registros desea ver, con el --linesargumento.

Conclusión

Ha configurado con éxito un servidor web Hapi.js, lo ha proxy inverso con Nginx y ha aprendido cómo administrarlo mejor con PM2. Con este conocimiento, puede ampliar aún más este tutorial y crear una aplicación Hapi.js muy avanzada. Para obtener más información sobre las posibilidades de Hapi, visite su documentación oficial . Si desea obtener más información sobre las posibilidades de PM2, consulte su guía de inicio rápido .



Leave a Comment

¿Puede la IA luchar con un número cada vez mayor de ataques de ransomware?

¿Puede la IA luchar con un número cada vez mayor de ataques de ransomware?

Los ataques de ransomware van en aumento, pero ¿puede la IA ayudar a lidiar con el último virus informático? ¿Es la IA la respuesta? Lea aquí, sepa que la IA es una bendición o una perdición

ReactOS: ¿Es este el futuro de Windows?

ReactOS: ¿Es este el futuro de Windows?

ReactOS, un sistema operativo de código abierto y gratuito, está aquí con la última versión. ¿Puede satisfacer las necesidades de los usuarios de Windows de hoy en día y acabar con Microsoft? Averigüemos más sobre este estilo antiguo, pero una experiencia de sistema operativo más nueva.

Manténgase conectado a través de la aplicación de escritorio WhatsApp 24 * 7

Manténgase conectado a través de la aplicación de escritorio WhatsApp 24 * 7

Whatsapp finalmente lanzó la aplicación de escritorio para usuarios de Mac y Windows. Ahora puede acceder a Whatsapp desde Windows o Mac fácilmente. Disponible para Windows 8+ y Mac OS 10.9+

¿Cómo puede la IA llevar la automatización de procesos al siguiente nivel?

¿Cómo puede la IA llevar la automatización de procesos al siguiente nivel?

Lea esto para saber cómo la Inteligencia Artificial se está volviendo popular entre las empresas de pequeña escala y cómo está aumentando las probabilidades de hacerlas crecer y dar ventaja a sus competidores.

La actualización complementaria de macOS Catalina 10.15.4 está causando más problemas que resolver

La actualización complementaria de macOS Catalina 10.15.4 está causando más problemas que resolver

Recientemente, Apple lanzó macOS Catalina 10.15.4, una actualización complementaria para solucionar problemas, pero parece que la actualización está causando más problemas que conducen al bloqueo de las máquinas Mac. Lee este artículo para obtener más información

13 Herramientas comerciales de extracción de datos de Big Data

13 Herramientas comerciales de extracción de datos de Big Data

13 Herramientas comerciales de extracción de datos de Big Data

¿Qué es un sistema de archivos de diario y cómo funciona?

¿Qué es un sistema de archivos de diario y cómo funciona?

Nuestra computadora almacena todos los datos de una manera organizada conocida como sistema de archivos de diario. Es un método eficiente que permite a la computadora buscar y mostrar archivos tan pronto como presiona buscar.

Singularidad tecnológica: ¿un futuro lejano de la civilización humana?

Singularidad tecnológica: ¿un futuro lejano de la civilización humana?

A medida que la ciencia evoluciona a un ritmo rápido, asumiendo muchos de nuestros esfuerzos, también aumentan los riesgos de someternos a una singularidad inexplicable. Lea, lo que la singularidad podría significar para nosotros.

Una mirada a 26 técnicas analíticas de Big Data: Parte 1

Una mirada a 26 técnicas analíticas de Big Data: Parte 1

Una mirada a 26 técnicas analíticas de Big Data: Parte 1

El impacto de la inteligencia artificial en la atención médica 2021

El impacto de la inteligencia artificial en la atención médica 2021

La IA en la salud ha dado grandes pasos desde las últimas décadas. Por tanto, el futuro de la IA en el sector sanitario sigue creciendo día a día.