Configurar un servidor Keystone.js usando Nginx Reverse Proxy en Ubuntu 16.04

En este tutorial, configuraremos un servidor web con un proxy inverso. El CMS que usaremos es Keystone.js, un marco de aplicación web bien conocido basado en Express.js. El proxy inverso que utilizaremos es Nginx, que es un proxy inverso gratuito y de código abierto, así como un servidor HTTP. La base de datos que utilizaremos es MongoDB, una base de datos de documentos NoSQL. Esto requerirá que tenga un dominio con registros configurados. Si no tiene ese conjunto, continúe y cuide de eso, y vuelva a este tutorial.

Nodo de instalación

Primero, instalaremos Node.js, que es un intérprete Javascript basado en el motor Javascript Chrome V8.

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

Instalando Nginx

A continuación, instalaremos Nginx, nuestro proxy inverso.

sudo apt update
sudo apt install nginx

Esto actualizará las listas de paquetes e instalará Nginx. Una vez realizada la instalación, configuraremos nuestro proyecto de nodo.

Inicializando nuestro proyecto Keystone

Crea nuestro proyecto de nodo. Para hacer eso, simplemente cree una nueva carpeta.

mkdir website

Luego, crearemos nuestro package.jsonarchivo. Para hacer eso, simplemente ejecute npm initen su terminal, complete los campos y responda " yes" para confirmar. Una vez que haya creado el package.jsonarchivo, instalaremos los siguientes módulos de nodo.

sudo npm install -g generator-keystone
sudo npm install -g yo

Una vez que haya terminado de descargar, ejecute lo siguiente.

yo keystone

Rellene los campos obligatorios. Le pedirá el project name, el template engine, el emailpanel de control, etc. Si no sabe qué seleccionar, los valores predeterminados estarán bien. Después de que haya configurado su configuración keystone, podemos probar para ver si nuestro servidor se está ejecutando escribiendo node keystonepara iniciar su aplicación. Por defecto, su aplicación se ejecutará en localhost, en el puerto 3000. Tenga en cuenta que si no tiene MongoDB instalado, una base de datos no estará disponible para usted de inmediato. Puedes aprender cómo instalarlo más adelante en el tutorial.

Aquí está el diseño de directorio básico para Keystone.js:

  • /lib - Aquí es donde almacenará sus bibliotecas personalizadas y otro código.

  • /models- Aquí es donde almacenará los modelos de base de datos de su aplicación. KeystoneJS utiliza MongoDB como proveedor de base de datos.

  • /public - Aquí es donde se almacenarán sus archivos estáticos (CSS, JS, imágenes, etc.).

  • /routes/api - Aquí es donde se almacenarán los controladores API de su aplicación.

  • /routes.views - Los controladores de vista de la aplicación se almacenarán aquí.

  • /templates - Aquí es donde se almacenarán todos los archivos de plantilla de su aplicación.

  • /updates - Aquí es donde se almacenarán sus scripts de migración.

  • package.json - Este es su archivo de configuración npm que el generador generó para nosotros.

  • keystone.js - Nuestro archivo de inicio principal, lo ejecutamos cuando iniciamos el sitio web.

Inicializando nuestra base de datos

Como se mencionó anteriormente, nuestra base de datos que utilizaremos es MongoDB, que es una base de datos confiable orientada a documentos NoSQL. Si ya tiene instalado MongoDB, puede omitir esta sección. Si no, entonces aquí se explica cómo instalarlo en Ubuntu 16.04.

Importe la clave pública utilizada para el paquete mongoDB.

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 0C49F3730359A14518585931BC711F9BA15703C6

Cree el archivo de lista utilizado para instalar el paquete.

echo "deb [ arch=amd64,arm64 ] http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list

Actualice sus listas de paquetes usando apt.

sudo apt update

Finalmente, instale MongoDB.

sudo apt install mongodb-org -y

Cuando esta instalación haya finalizado, inicie MongoDB.

sudo service mongod start

Esto iniciará el proceso MongoDB en el puerto 27017.

MongoDB se utilizará en toda la aplicación y se utilizará para almacenar la información que usamos para nuestros modelos, por ejemplo, un Usermodelo. Keystone lo usa como su base de datos de elección, y en este momento no puede usar otros proveedores de bases de datos.

Instalar PM2

Ahora es el momento de instalar PM2 (Process Manager 2.) PM2 es un administrador de procesos para aplicaciones Node.js, en forma de un módulo npm. Proporciona una manera fácil de administrar sus aplicaciones y ejecutarlas en segundo plano. Como está en NPM, todo lo que tenemos que hacer para instalarlo es ejecutar lo siguiente.

sudo npm install pm2 -g

Esto le dice a npm que lo instale globalmente, para que podamos usarlo en cualquier parte de nuestro sistema.

Ejecutar / administrar una aplicación en PM2

Anteriormente, ejecutamos nuestra aplicación web con node keystone. Con PM2, es un poco diferente. Ahora ejecutamos nuestra aplicación de nodo con lo siguiente.

pm2 start keystone.js

Esto agregará nuestra aplicación PM2 a nuestra lista de procesos, y se mostrará un pequeño cuadro para que pueda ver que realmente está en línea. Observe la casilla etiquetada idpara su proceso. Mantenga esto cerca, ya que haremos muchas referencias a esto más adelante.

Para ver los registros de su aplicación.

pm2 logs [id]

Por ejemplo, pm2 logs 0si esta es su primera aplicación PM2.

Para detener su aplicación web en cualquier momento.

pm2 stop [id]

Para eliminar completamente su aplicación.

pm2 delete [id]

PM2 incluso tiene un panel de monitoreo si desea ver algunas estadísticas básicas para su aplicación, y puede acceder a él con esto.

pm2 monit

Esto mostrará información básica, como el uso de RAM, el uso de la CPU y el tiempo de actividad.

Una gran característica que ofrece PM2 es watching. En esencia, la observación es cuando PM2 detecta automáticamente los cambios en cualquiera de los archivos en el mismo directorio que su archivo de inicio, y reiniciará automáticamente su aplicación. Para habilitarlo, simplemente reinicie su aplicación, pero pásele una bandera de vigilancia.

pm2 restart [id] --watch

Para deshabilitar la observación después de que se haya habilitado, simplemente ejecute el mismo comando nuevamente y se deshabilitará la observación.

En este tutorial, dejaremos de mirar.

Configurar su proxy inverso

Asegúrese de tener instalado Nginx. Si por alguna razón no lo es, consulte los pasos anteriores.

Ajusta la configuración de tu firewall. En Ubuntu, ufwes el firewall oficial. Por defecto, las conexiones están bloqueadas en el puerto 80. Necesitamos agregar una excepción para Nginx en el puerto 80, en el que se ejecutará nuestra aplicación web.

sudo ufw allow 'Nginx HTTP'

Verifique que su servidor Nginx se esté ejecutando.

systemctl status nginx

Debajo de la Activesección, si ve active (running), entonces ya está todo listo. De lo contrario, puede intentar reiniciar el servicio.

systemctl restart nginx

Elimine el archivo de configuración predeterminado de Nginx.

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

Cree uno nuevo y simplemente llámelo node.

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

Pegue lo siguiente en el archivo y reemplácelo example.comcon el dominio de su sitio web.

listen 80;

server_name example.com;

    location / {

        proxy_set_header   X-Forwarded-For $remote_addr;

        proxy_set_header   Host $http_host;

        proxy_pass         "http://127.0.0.1:3000";
    }
}

Tenga en cuenta que proxy_passdenota la IP en la que se ejecuta nuestra aplicación Keystone localmente, que está localhosten el puerto 3000. listen 80es el puerto al que queremos que se dirija la aplicación, que en este caso es el puerto 80.

Luego, necesitamos crear un enlace simbólico o un enlace simbólico a una carpeta llamada sites-enabled. La diferencia entre sites-enabledy sites-availablees que en sites-enabledrealidad es cargada por Nginx.

sudo ln -s /etc/nginx/sites-available/node /etc/nginx/sites-enabled/node

Ahora su archivo de configuración sites-availableestará listo para usar y se cargará desde sites-enabled. Para aplicar la configuración para que surta efecto, simplemente reinicie Nginx.

sudo systemctl restart nginx

Finalmente, reinicie su aplicación PM2

pm2 restart [id]

Ahora puede navegar a su dominio en un navegador y verá una Welcome to Keystonepantalla con un panel para iniciar sesión.

Si lo ve, ha configurado correctamente un servidor web de producción Node.js. De lo contrario, es posible que hayas hecho un paso incorrectamente y es posible que desees volver y seguir cada paso con cuidado.

Puede obtener más información sobre Nginx visitando su sitio web .

Espero que hayas disfrutado este tutorial, y espero que te haya ayudado a configurar tu propio servidor web para la producción en tu Vultr VPS.



Leave a Comment

Cómo instalar Thelia 2.3 en CentOS 7

Cómo instalar Thelia 2.3 en CentOS 7

¿Usando un sistema diferente? Thelia es una herramienta de código abierto para crear sitios web de comercio electrónico y administrar contenido en línea, escrito en PHP. Código fuente de Thelia i

Instalación de Fuel CMS en Ubuntu 16.04 LTS

Instalación de Fuel CMS en Ubuntu 16.04 LTS

¿Usando un sistema diferente? Fuel CMS es un sistema de gestión de contenido basado en CodeIgniter. Su código fuente está alojado en GitHub. Esta guía le mostrará cómo t

Cómo instalar Couch CMS 2.0 en un VPS LAMP Debian 9

Cómo instalar Couch CMS 2.0 en un VPS LAMP Debian 9

¿Usando un sistema diferente? Couch CMS es un sistema de gestión de contenido (CMS) simple y flexible, gratuito y de código abierto que permite a los diseñadores web diseñar

Cómo instalar MODX CMS y Nginx en CentOS 7

Cómo instalar MODX CMS y Nginx en CentOS 7

MODX es un sistema de gestión de contenido gratuito y de código abierto escrito en PHP. Utiliza MySQL o MariaDB para almacenar su base de datos. MODX está diseñado para el negocio i

How to Install Alfresco Community Edition on Ubuntu 16.04

How to Install Alfresco Community Edition on Ubuntu 16.04

Using a Different System? Alfresco Community Edition is an open source version of the Alfresco Content Services. It is written in Java and uses PostgreSQL t

How to Install WonderCMS on Fedora 29

How to Install WonderCMS on Fedora 29

Using a Different System? WonderCMS is an open source, fast and small flat file CMS written in PHP. WonderCMS source code is hosted on Github. This guide wil

How to Install Redaxscript 3.2 CMS on an Ubuntu 16.04 LAMP VPS

How to Install Redaxscript 3.2 CMS on an Ubuntu 16.04 LAMP VPS

Using a Different System? Redaxscript 3.2 CMS is a modern and ultra lightweight, free and open source Content Management System (CMS) with rocket-fas

How to Install Neos CMS on Debian 9

How to Install Neos CMS on Debian 9

Using a Different System? Neos is a Content Application Platform with a CMS and an application framework at its core. This guide will show you how to instal

Cómo instalar el CMS de octubre 1.0 en un VPS LAMP Fedora 26

Cómo instalar el CMS de octubre 1.0 en un VPS LAMP Fedora 26

¿Usando un sistema diferente? October 1.0 CMS es un sistema de gestión de contenido (CMS) simple y confiable, gratuito y de código abierto creado en el marco de Laravel

Cómo instalar Directus 6.4 CMS en un CentOS 7 LAMP VPS

Cómo instalar Directus 6.4 CMS en un CentOS 7 LAMP VPS

¿Usando un sistema diferente? Directus 6.4 CMS es un sistema de gestión de contenido sin cabeza (CMS) potente y flexible, gratuito y de código abierto que proporciona al desarrollador

How to Install BoltWire CMS on CentOS 7

How to Install BoltWire CMS on CentOS 7

Using a Different System? Introduction BoltWire is a free and lightweight content management system written in PHP. Compared to most other content managemen

Instalación de Bolt CMS en CentOS 7

Instalación de Bolt CMS en CentOS 7

Bolt es un CMS de código abierto escrito en PHP. El código fuente de Bolts está alojado en GitHub. Esta guía le mostrará cómo instalar Bolt CMS en un nuevo CentOS 7 Vult

How to Install Redaxscript 3.2 CMS on a Fedora 26 LAMP VPS

How to Install Redaxscript 3.2 CMS on a Fedora 26 LAMP VPS

Using a Different System? Redaxscript 3.2 CMS is a modern and ultra lightweight, free and open source Content Management System (CMS) with rocket-fas

Instalación de Anchor CMS en CentOS 7

Instalación de Anchor CMS en CentOS 7

¿Usando un sistema diferente? Anchor es un blog ligero de código abierto CMS escrito en PHP. El código fuente de Anchors está alojado en GitHub. Esta guía te mostrará ho

Cómo instalar Couch CMS 2.0 en un CentOS 7 LAMP VPS

Cómo instalar Couch CMS 2.0 en un CentOS 7 LAMP VPS

¿Usando un sistema diferente? Couch CMS es un sistema de gestión de contenido (CMS) simple y flexible, gratuito y de código abierto que permite a los diseñadores web diseñar

Installing Microweber on Ubuntu 16.04

Installing Microweber on Ubuntu 16.04

Using a Different System? Microweber is an open source drag and drop CMS and online shop. Microweber source code is hosted on GitHub. This guide will show yo

Installing Fork CMS on FreeBSD 12

Installing Fork CMS on FreeBSD 12

Using a Different System? Fork is an open source CMS written in PHP. Forks source code is hosted on GitHub. This guide will show you how to install Fork CM

Cómo instalar ImpressPages CMS 5.0 en un Fedora 26 LAMP VPS

Cómo instalar ImpressPages CMS 5.0 en un Fedora 26 LAMP VPS

¿Usando un sistema diferente? ImpressPages CMS 5.0 es un sistema de gestión de contenido (CMS) simple y efectivo, gratuito y de código abierto, fácil de usar y basado en MVC

Cómo instalar Pagekit 1.0 CMS en un Fedora 26 LAMP VPS

Cómo instalar Pagekit 1.0 CMS en un Fedora 26 LAMP VPS

¿Usando un sistema diferente? Pagekit 1.0 CMS es un sistema de administración de contenido (CMS) hermoso, modular, extensible y liviano, gratuito y de código abierto con

Cómo instalar ProcessWire CMS 3.0 en un Fedora 26 LAMP VPS

Cómo instalar ProcessWire CMS 3.0 en un Fedora 26 LAMP VPS

¿Usando un sistema diferente? ProcessWire CMS 3.0 es un sistema de gestión de contenido (CMS) simple, flexible y potente, gratuito y de código abierto. ProcessWire CMS 3.

ZPanel y Sentora en CentOS 6 x64

ZPanel y Sentora en CentOS 6 x64

ZPanel, un panel de control de alojamiento web popular, se bifurcó en 2014 a un nuevo proyecto llamado Sentora. Aprende a instalar Sentora en tu servidor con este tutorial.

Cómo instalar Vtiger CRM Open Source Edition en CentOS 7

Cómo instalar Vtiger CRM Open Source Edition en CentOS 7

Aprende cómo instalar Vtiger CRM, una aplicación de gestión de relaciones con el cliente, en CentOS 7 para aumentar tus ventas y mejorar el servicio al cliente.

Cómo instalar el servidor Counter-Strike 1.6 en Linux

Cómo instalar el servidor Counter-Strike 1.6 en Linux

Esta guía completa le mostrará cómo configurar un servidor Counter-Strike 1.6 en Linux, optimizando el rendimiento y la seguridad para el mejor juego. Aprende los pasos más recientes aquí.

¿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.