GNU/Linux >> Tutoriales Linux >  >> Ubuntu

Cómo implementar aplicaciones Node.js con pm2 y Nginx en Ubuntu

pm2 es un administrador de procesos para aplicaciones Node.js, le permite mantener vivas sus aplicaciones y tiene un balanceador de carga incorporado. Es simple y potente, siempre puede reiniciar o recargar su aplicación de nodo sin tiempo de inactividad y le permite crear un clúster de su aplicación de nodo.

En este tutorial, le mostraré cómo instalar y configurar pm2 para la aplicación 'Express' simple y luego configurar Nginx como un proxy inverso para la aplicación de nodo que se ejecuta bajo pm2.

Requisitos previos

  • Ubuntu 16.04 - 64 bits
  • Privilegios de raíz

Paso 1:instalar Node.js LTS

En este tutorial, comenzaremos nuestro proyecto desde cero. Primero, necesitamos Nodejs instalado en el servidor. Usaré la versión 6.x de Nodejs LTS, que se puede instalar desde el repositorio de nodesource.

Instale el paquete 'python-software-properties ' del repositorio de Ubuntu y luego agregue el repositorio de Nodejs 'nodesource'.

sudo apt-get install -y python-software-properties
curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -

Instale la última versión de Nodejs LTS.

sudo apt-get install -y nodejs

Cuando la instalación se haya realizado correctamente, verifique la versión del nodo y npm.

node -v
npm -v

Paso 2:generar la aplicación de ejemplo Express

Usaré un esqueleto de aplicación web simple generado con un paquete llamado 'express-generator ' para esta instalación de ejemplo. Express-generator se puede instalar con el comando npm.

Instale 'express-generator ' con npm:

npm install express-generator -g

-g: instalar paquete dentro del sistema

Ejecutaremos la aplicación como un usuario normal, no como root o superusuario. Entonces, primero debemos crear un nuevo usuario.

Crea un nuevo usuario, yo nombro al mío 'yume ':

useradd -m -s /bin/bash yume
passwd yume

Inicie sesión con el nuevo usuario usando su:

su - yume

Luego, genere una nueva aplicación web simple con el comando express:

express hakase-app

El comando creará un nuevo directorio de proyecto 'hakase-app '.

Vaya al directorio del proyecto e instale todas las dependencias que necesita la aplicación.

cd hakase-app
npm install

Luego pruebe e inicie una nueva aplicación simple con el siguiente comando:

DEBUG=myapp:* npm start

De forma predeterminada, nuestra aplicación express se ejecutará en el puerto 3000 . Ahora visite la dirección IP del servidor:192.168.33.10:3000

El esqueleto de la aplicación web simple se ejecuta en el puerto 3000, bajo el usuario 'yume'.

Paso 3:instalar pm2

pm2 es un paquete de nodos y se puede instalar con el comando npm. Así que vamos a instalarlo con npm (con privilegios de raíz, cuando aún esté conectado como usuario hakase, luego ejecute el comando "salir" para volver a ser raíz):

npm install pm2 -g

Ahora podemos usar pm2 para nuestra aplicación web.

Vaya al directorio de aplicaciones 'hakase-app ':

su - hakase
cd ~/hakase-app/

Allí puede encontrar un archivo llamado 'package.json ', muestra su contenido con el comando cat.

cat package.json

Puedes ver el 'inicio ' contiene un comando que utiliza Nodejs para iniciar la aplicación express. Este comando lo usaremos con el administrador de procesos pm2.

Ejecute la aplicación Express con el siguiente comando pm2:

pm2 start ./bin/www

Ahora puede ver los resultados a continuación:

Nuestra aplicación express se ejecuta bajo pm2 con el nombre 'www ', identificación '0 '. Puede obtener más detalles sobre la aplicación que se ejecuta bajo pm2 con la opción de mostrar 'show nodeid|name '.

pm2 show www

Si desea ver el registro de nuestra aplicación, puede utilizar la opción de registros. Es solo acceso y registro de errores y puede ver el estado HTTP de la aplicación.

pm2 logs www

Puede ver que nuestro proceso se está ejecutando. Ahora, habilitemos que comience en el momento del arranque.

pm2 startup systemd

sistema :Ubuntu 16 está usando systemd.

Recibirá un mensaje para ejecutar un comando como root. Regrese a los privilegios de raíz con "salir" y luego ejecute ese comando.

sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u yume --hp /home/yume

Generará el archivo de configuración systemd para el inicio de la aplicación. Cuando reinicie su servidor, la aplicación se ejecutará automáticamente al inicio.

Paso 4:instalar y configurar Nginx como proxy inverso

En este tutorial, usaremos Nginx como proxy inverso para la aplicación de nodo. Nginx está disponible en el repositorio de Ubuntu, instálelo con el comando apt:

sudo apt-get install -y nginx

A continuación, vaya a 'sitios disponibles ' y cree un nuevo archivo de configuración de host virtual.

cd /etc/nginx/sites-available/
vim hakase-app

Pegue la configuración a continuación:

upstream hakase-app {
    # Nodejs app upstream
    server 127.0.0.1:3000;
    keepalive 64;
}

# Server on port 80
server {
    listen 80;
    server_name hakase-node.co;
    root /home/yume/hakase-app;

    location / {
        # Proxy_pass configuration
        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_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_max_temp_file_size 0;
        proxy_pass http://hakase-app/;
        proxy_redirect off;
        proxy_read_timeout 240s;
    }
}

Guarde el archivo y salga de vim.

En la configuración:

  • La aplicación de nodo se ejecuta con el nombre de dominio 'hakase-node.co '.
  • Todo el tráfico de nginx se reenviará a la aplicación de nodo que se ejecuta en el puerto 3000 .

Active la configuración creando un enlace simbólico en el directorio habilitado para sitios.

ln -s /etc/nginx/sites-available/hakase-app /etc/nginx/sites-enabled/

Pruebe la configuración de Nginx y asegúrese de que no haya ningún error.

nginx -t

Inicie Nginx y habilítelo para que se inicie en el momento del arranque:

systemctl start nginx
systemctl enable nginx

Paso 5 - Prueba

Abra su navegador web y visite el nombre de dominio (el mío es):

http://hakase-app.co

Verá que la aplicación express se ejecuta en el servidor web nginx.

A continuación, reinicie su servidor y asegúrese de que la aplicación del nodo se esté ejecutando en el momento del arranque:

pm2 save
sudo reboot

Si ha iniciado sesión nuevamente en su servidor, verifique el proceso de la aplicación del nodo. Ejecute el siguiente comando como 'yume ' usuario.

su - yume
pm2 status www

La aplicación de nodo se ejecuta bajo pm2 y Nginx como proxy inverso.

Enlaces

  • Ubuntu
  • Node.js
  • Nginx

Ubuntu
  1. Cómo instalar Node.js y NPM en Ubuntu 18.04 y 20.04

  2. Cómo instalar Nginx con PHP5 y MySQL en Ubuntu 11.10

  3. Cómo implementar Modsecurity con Nginx en Ubuntu 20.04 LTS

  4. Cómo implementar la aplicación Flask con Nginx y Gunicorn en Ubuntu 20.04

  5. Cómo instalar Node.js con NVM y Nginx en Ubuntu 22.04

Cómo instalar Drupal 8 con Nginx, PHP-FPM y SSL en Ubuntu 15.10

Cómo instalar Mailpile con Nginx en Ubuntu 15.10

Cómo instalar OpenCart 2 con Nginx y SSL en Ubuntu 15.10

Cómo instalar Django con PostgreSQL y Nginx en Ubuntu 16.04

Cómo Instalar Wordpress con Nginx, MariaDB y HHVM en Ubuntu 15.04

¿Cómo implementar la aplicación Laravel con Nginx en Ubuntu?