Pide tu presupuesto ya!

Cómo utilizar Deno Runtime como alternativa a NodeJS

NodeJS es un marco popular para desarrollar API y varias otras aplicaciones, pero es posible que no se ajuste a las necesidades de todas las aplicaciones. Deno es un tiempo de ejecución basado en el motor JavaScript V8 creado con Rust para JavaScript y TypeScript. Y en este tutorial, aprenderá cómo utilizar el tiempo de ejecución de Deno como alternativa a NodeJS para crear un servidor HTTPS.

¡Sigue leyendo y comienza a construir tu servidor!

Requisitos previos

Este tutorial va a ser práctico. Para seguir adelante, asegúrese de tener lo siguiente:

  • Deno – Este tutorial utiliza la versión 1.17.1
  • Una máquina Ubuntu: este tutorial utiliza Ubuntu 20.04, pero cualquier sistema operativo con git instalado funcionará.

Instalación de Deno en Linux

Antes de crear su aplicación Deno, primero debe instalar Deno en su máquina. Deno funciona en Linux, Windows y macOS. Pero para este tutorial, instalarás Deno en tu Linux (sistema operativo Ubuntu).

1. Abra su terminal y ejecute el curl comando a continuación para descargar el script de instalación de Deno (install.sh). Luego, el comando ejecuta el script de instalación para instalar Deno en su máquina.

curl -fsSL https://deno.land/x/install/install.sh | sh
Instalación de Deno

2. A continuación, ejecute el deno comando a continuación para confirmar su versión de Deno instalada.

Confirmando la instalación de Deno
Confirmando la instalación de Deno

3. Por último, cree una carpeta de proyecto (mkdir), luego cambie a ese directorio. Puedes nombrar la carpeta de manera diferente, pero para este tutorial, la carpeta se llama DenoHTTPSServer.

mkdir DenoHTTPSServer && cd DenoHTTPSServer

Configurando un servidor Deno

Una vez instalado Deno, estará listo para comenzar a construir sus proyectos Deno. Bueno, casi. Aún necesitarás configurar un servidor Deno creando un archivo TypeScript en el directorio de tu proyecto.

  1. Ejecute el siguiente comando para crear un server.ts archivo en el DenoHTTPSServidor directorio que ha creado previamente en la sección “Instalación de Deno” (paso tres).

2. Abra el Archivo DenoHTTPSServer/server.ts en su editor de texto preferido y agregue el siguiente código al archivo.

El siguiente código crea un servidor Deno importando el serve función para escuchar solicitudes y devolver un mensaje de saludo al cliente.

// Import the serve function from Deno
import { serve } from "https://deno.land/[email protected]/http/server.ts";

// Create a server handler function and return a greeting
function server(req: Request): Response {
  return new Response("Greetings from Deno");
}
//Listen to incoming requests
serve(server);

3. Ahora, ejecuta el deno run comando a continuación para ejecutar su servidor Deno con acceso de red a la dirección IP del host local habilitado (--allow-net). El servidor se ejecutará en el puerto. 8000cual server.ts escuchar por defecto.

deno run --allow-net server.ts

Puedes agregar el --watch bandera para reiniciar automáticamente el servidor cuando se realiza un cambio en el código base.

4. Finalmente, ejecute lo siguiente curl comando para probar su servidor Deno.

curl http://localhost:8000

Si su servidor funciona correctamente, obtendrá el saludos desde deno mensaje como se muestra a continuación.

Probando la conexión del servidor Deno
Probando la conexión del servidor Deno

Proteger una aplicación web con un certificado SSL

En este punto, su aplicación Deno está funcionando, pero aún no es compatible con HTTPS y actualmente no es segura. Entonces configurará un certificado SSL para proteger su aplicación Deno.

Puedes usar un certificado público de confianza o un certificado autofirmado. Pero para este tutorial, utilizará un certificado autofirmado localmente por el host. Esta configuración es mucho más práctica para proyectos de prueba de concepto.

ASiempre adquiera e instale un certificado confiable para sus aplicaciones Deno en un entorno de producción.

1. Ejecute el openssl comando a continuación para generar (genrsa) un archivo de clave utilizado para el certificado autofirmado. El comando crea (-out) una clave privada como un archivo llamado key.pem.

openssl genrsa -out key.pem
  Generando un archivo clave
Generando un archivo clave

2. A continuación, ejecute el siguiente comando para solicitar (req -new) a Solicitud de servicio de certificado (CSR) para el archivo clave (key.pem) que generó previamente (paso uno). Necesitará un CSR (csr.pem) para proporcionar todos los datos necesarios para crear el certificado real.

openssl req -new -key key.pem -out csr.pem

3. Finalmente, ejecute el siguiente comando para generar su certificado (x509) para obtener una clave privada para firmarla con la clave pública que creó previamente (paso dos) (-signkey key.pem).

Este comando crea (-out) un archivo de certificado llamado cert.pem con una fecha de vencimiento de 9.999 días.

openssl x509 -req -days 9999 -in csr.pem -signkey key.pem -out cert.pem

En este punto, la estructura de carpetas de su aplicación debería verse como la siguiente.

Verificación de la estructura de carpetas de la aplicación
Verificación de la estructura de carpetas de la aplicación

Configuración de TLS para proteger la aplicación

Ha creado con éxito un certificado SSL, pero no está haciendo mucho en este momento. Deberá configurar TLS para proteger su aplicación.

1. Abra el servidor.ts archivo y reemplace la primera línea de código con la siguiente línea para importar el serveTls función.

2. A continuación, reemplace el serve función que agregó en la sección “Creación de un proyecto de muestra” (paso siete) con la siguiente y guarde los cambios.

El siguiente código utiliza el serveTls función en lugar de escuchar las solicitudes entrantes en la aplicación con el serve función.

El serveTls la función pasa el server funciona como primer parámetro, luego pasa un objeto que contiene el port número, el cert.pemy key.pem archivos como segundo parámetro.

serveTls(server, {
  port: 4000,
  certFile: "./cert.pem",
  keyFile: "./key.pem"
});

3. Ejecute el siguiente comando para ejecutar el servidor mientras permite el acceso de lectura al sistema de archivos (--allow-read) ya que su servidor Deno lee el contenido de los archivos cert.pem y key.pem.

deno run --allow-net --allow-read server.ts

4. Finalmente, abra su navegador web y navegue hasta https://localhost:4000 para probar su aplicación. Si todo va bien, verá un resultado como el siguiente.

Probando la aplicación web
Probando la aplicación web

Administrar el caché en Deno

Quizás le preocupe estropear su aplicación web si cambia un módulo en su servidor remoto. Si es así, el almacenamiento en caché en Deno puede ayudar.

Puede realizar un seguimiento de todos los módulos utilizados en una aplicación Deno en un archivo JSON. Este archivo almacena y verifica la integridad de los subrecursos de los módulos utilizados en su aplicación. Entonces, incluso si cambia el módulo en el servidor remoto, su aplicación seguirá funcionando como se esperaba.

Ejecute el deno comando para crear un archivo de bloqueo (--lock=lock.json) en el directorio raíz de su proyecto con todo el hash de las dependencias utilizadas en su aplicación.

deno cache --lock=lock.json --lock-write server.ts
Guardar dependencias
Guardar dependencias

No olvide incluir el archivo lock.json cuando se comprometa con el sistema de control de versiones.

Ahora, ejecute el siguiente comando para descargar (--reload) las dependencias del proyecto (--lock=lock.json) en la máquina cache (cuando ejecuta su aplicación en otra computadora).

deno cache --reload --lock=lock.json server.ts

Configuración de NGINX para el servidor Deno

Con la configuración de su servidor HTTPS, configurar NGINX para su servidor Deno es el momento de hacer que el servidor sea más productivo. Pero primero tendrás que instalar NGINX en tu máquina.

1. Ejecute los siguientes comandos para actualizar su repositorio de paquetes e instalar NGINX en su máquina.

# Update repository 
sudo apt update
# Install Ngnix
sudo apt install nginx

2. Una vez que se complete la instalación, ejecute el siguiente comando para confirmar la instalación. Este comando devuelve la versión de NGINX instalada en su sistema.

Si todo va bien con la instalación, verá un resultado como el siguiente.

Confirmando la instalación de NGINX
Confirmando la instalación de NGINX

3. Ejecute el siguiente comando para confirmar el nginx del servidor status y vea si el servidor NGINX se está ejecutando.

Como puede ver a continuación, el estado de NGINX muestra activo (corriendo).

Probando el servidor NGINX
Probando el servidor NGINX

Si el servidor no está activo, ejecute el siguiente comando para start el nginx servicio.

sudo systemctl start nginx

4. Si su servidor NGINX se está ejecutando, ejecute el siguiente comando para copiar (cp) el NGINX default configuración para crear su nombre de dominio.

En esta demostración, el nombre de dominio es todox.co. El comando crea un todox.co archivo en el /etc/nginx/sites-available directorio.

sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/todox.co

5. Ahora, abre el todox.co archivo con su editor de texto preferido, pero esta demostración utiliza nano.

sudo nano /etc/nginx/sites-available/todox.co

Localice el server_name línea, reemplazar _ valor con su nombre de dominio y agregue la siguiente configuración en el location bloque de objetos.

Esta configuración le permite a NGINX conocer el dominio personalizado de la aplicación y cómo ejecutarla.

proxy_pass https://localhost:4000
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
Configurando el servidor NGINX
Configurando el servidor NGINX

Ejecute el siguiente comando para probar (-t) sus configuraciones. sudo nginx -t

Si sus configuraciones son correctas, verá un resultado como el siguiente.

Prueba de configuración de NGINX
Prueba de configuración de NGINX

7. Finalmente, ejecute el siguiente comando para restart su nginx servidor. sudo systemctl restart nginx

sudo systemctl restart nginx

Conclusión

En este tutorial, aprendió cómo configurar un servidor Deno y crear un proyecto de muestra con Deno. También mencionó la generación de un certificado SSL y la configuración de TSL para proteger su aplicación.

En este punto, te has dado cuenta de que no siempre tienes que depender de NodeJS ya que Deno está a la vuelta de la esquina.

Ahora que has tomado una porción del pastel, ¿cómo construirías tu próximo proyecto Deno? Quizás aprenda a crear un servicio web HTTPS NodeJS con Express.

Written by

Leave a comment