Pesquisa de site

Como instalar o PM2 para executar aplicativos Node.js no servidor de produção


PM2 é um gerenciador de processos de nível de produção de código aberto, avançado, eficiente e multiplataforma para Node.js com um balanceador de carga integrado. Funciona em Linux, MacOS e também em Windows. Ele suporta monitoramento de aplicativos, gerenciamento eficiente de microsserviços/processos, execução de aplicativos em modo cluster, inicialização e desligamento suave de aplicativos.

Ele mantém seus aplicativos “vivos para sempre ” com reinicializações automáticas e pode ser ativado para iniciar na inicialização do sistema, permitindo assim alta disponibilidade (HA) configurações ou arquiteturas.

Notavelmente, o PM2 permite que você execute seus aplicativos no modo cluster sem fazer nenhuma alteração no seu código (isso também depende do número de núcleos de CPU no seu servidor). Ele também permite gerenciar facilmente logs de aplicativos e muito mais.

Além disso, ele também possui suporte incrível para os principais frameworks Node.js, como Express, Adonis Js, Sails , Hapi e muito mais, sem necessidade de alterações no código. O PM2 está sendo usado por empresas como IBM, Microsoft, PayPal e muito mais.

Neste artigo, explicaremos como instalar e usar o PM2 para executar aplicativos Nodejs no servidor de produção Linux. Criaremos um aplicativo para demonstrar alguns dos recursos fundamentais do PM2 para você começar a usá-lo.

Etapa 1: Instale Nodejs e NPM no Linux

1. Para instalar a versão mais recente do Node.js e do NPM, primeiro você precisa habilitar o repositório oficial do NodeSource em sua distribuição Linux e depois instalar Pacotes Node.js e NPM conforme mostrado.

No Debian/Ubuntu

---------- Install Node.js v11.x ---------- 
curl -sL https://deb.nodesource.com/setup_11.x | sudo -E bash -
sudo apt-get install -y nodejs

---------- Install Node.js v10.x ----------
curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
sudo apt-get install -y nodejs

No CentOS/RHEL e Fedora

---------- Install Node.js v11.x ---------- 
curl -sL https://rpm.nodesource.com/setup_11.x | bash -

---------- Install Node.js v10.x ----------
curl -sL https://rpm.nodesource.com/setup_10.x | bash -

Etapa 2: crie um aplicativo Nodejs

2. Agora, vamos criar um aplicativo de teste (assumiremos que ele possui um lado cliente e um administrador que compartilham o mesmo banco de dados), os microsserviços serão executados nas portas 3000 e 3001 respectivamente.

sudo mkdir -p /var/www/html/app
sudo mkdir -p /var/www/html/adminside
sudo vim /var/www/html/app/server.js
sudo vim /var/www/html/adminside/server.js

Em seguida, copie e cole os seguintes trechos de código nos arquivos server.js (substitua 192.168.43.31 pelo IP do seu servidor).

##mainapp code
const http = require('http');

const hostname = '192.168.43.31';
const port = 3000;

const server = http.createServer((req, res) => {
	res.statusCode = 200;
  	res.setHeader('Content-Type', 'text/plain');
  	res.end('This is the Main App!\n');
});

server.listen(port, hostname, () => {
  	console.log(`Server running at http://${hostname}:${port}/`);
});
##adminside code
const http = require('http');

const hostname = '192.168.43.31';
const port = 3001;

const server = http.createServer((req, res) => {
	res.statusCode = 200;
  	res.setHeader('Content-Type', 'text/plain');
  	res.end('This is the Admin Side!\n');
});

server.listen(port, hostname, () => {
  	console.log(`Server running at http://${hostname}:${port}/`);
});

Salve o arquivo e saia.

Etapa 3: Instale o PM2 Product Process Manager no Linux

3. A versão estável mais recente do PM2 está disponível para instalação via NPM conforme mostrado.

sudo npm i -g pm2 

4. Uma vez instalado o PM2, você pode iniciar seus aplicativos de nó usando os seguintes comandos.

sudo node /var/www/html/app/server.js
sudo node /var/www/html/adminside/server.js

Observe que, em um ambiente de produção, você deve iniciá-los usando PM2, conforme mostrado (talvez você não precise do comando sudo se seu aplicativo estiver armazenado em um local onde um usuário normal tenha permissões de leitura e gravação).

sudo pm2 start /var/www/html/app/server.js
sudo pm2 start /var/www/html/adminside/server.js

Etapa 4: como usar e gerenciar PM2 no Linux

5. Para iniciar uma aplicação em modo cluster usando o sinalizador -i para especificar o número de instâncias, por exemplo.

sudo pm2 start /var/www/html/app/server.js -i 4 
sudo pm2 scale 0 8			#scale cluster app to 8 processes

6. Para listar todos os seus aplicativos de nó (processos/microsserviços), execute o seguinte comando.

sudo pm2 list

7. Para monitorar logs e métricas personalizadas, processe informações de todos os processos executando o comando a seguir.

sudo pm2 monit

8. Para visualizar detalhes de um único processo do Node conforme mostrado, usando o ID ou nome do processo.

sudo pm2 show 0

Etapa 5: como gerenciar aplicativos Node usando PM2 no Linux

9. A seguir está uma lista de alguns comandos comuns de gerenciamento de processos (um ou todos) que você deve observar.

sudo pm2 stop all                  		#stop all apps
sudo pm2 stop 0                    		#stop process with ID 0
sudo pm2 restart all               		#restart all apps
sudo pm2 reset 0		         	#reset all counters
sudo pm2 delete all                		#kill and remove all apps
sudo pm2 delete 1                 		#kill and delete app with ID 1

10. Para gerenciar logs de aplicativos, use os comandos a seguir.

sudo pm2 logs                      	#view logs for all processes 
sudo pm2 logs 1	         	#view logs for app 1
sudo pm2 logs --json               	#view logs for all processes in JSON format
sudo pm2 flush			#flush all logs

11. Para gerenciar o processo PM2, use os seguintes comandos.

sudo pm2 startup            #enable PM2 to start at system boot
sudo pm2 startup systemd    #or explicitly specify systemd as startup system 
sudo pm2 save               #save current process list on reboot
sudo pm2 unstartup          #disable PM2 from starting at system boot
sudo pm2 update	      #update PM2 package

Etapa 6: acessar aplicativos do Node a partir do navegador da Web

12. Para acessar todos os seus aplicativos de nó a partir de um navegador da Web remoto, primeiro você precisa abrir as seguintes portas no firewall do sistema, para permitir conexões de cliente aos aplicativos, conforme mostrado.

-------- Debian and Ubuntu -------- 
sudo ufw allow 3000/tcp
sudo ufw allow 3001/tcp
sudo ufw reload

-------- RHEL and CentOS --------
firewall-cmd --permanent --add-port=3000/tcp
firewall-cmd --permanent --add-port=3001/tcp
firewall-cmd --reload 

13. Em seguida, acesse seus aplicativos em um navegador da Web com estes URLs:

http://198.168.43.31:3000
http://198.168.43.31:3001 

Por último, mas não menos importante, PM2 é um sistema de módulo simples e integrado para estender seus recursos principais. Alguns dos módulos incluem pm2-logrotate, pm2-webshell, pm2-server-monit e muito mais – você também pode criar e usar seus próprios módulos.

Para obter mais informações, acesse o repositório PM2 GitHub: https://github.com/Unitech/PM2/.

Isso é tudo! PM2 é um gerenciador de processos de nível de produção avançado e eficiente para Node.js com um balanceador de carga integrado. Neste artigo, mostramos como instalar e usar PM2 para gerenciar aplicativos Nodejs no Linux. Se você tiver alguma dúvida, envie-a para uso através do formulário de comentários abaixo.