
Se você trabalha com desenvolvimento de aplicações em Node.js, já deve ter percebido a importância de gerenciar seus processos de forma eficiente.
É aqui que o PM2 (Process Manager 2) entra como uma ferramenta indispensável.
Este gerenciador de processos ajuda a manter suas aplicações rodando continuamente, gerenciar múltiplos serviços e até monitorar desempenho de maneira simples e prática.
Neste post, vamos nos aventurar em como rodar suas aplicações com PM2, desde a instalação até as práticas avançadas.
Prepare-se para aprender tudo o que você precisa para otimizar a gestão de seus processos e garantir a máxima confiabilidade em suas aplicações.
Sumário do Artigo
O que é o PM2?
PM2 é um gerenciador de processos especializado em aplicações Node.js, mas também suporta outros tipos de scripts.
Ele foi projetado para facilitar o gerenciamento de processos em produção, permitindo que suas aplicações rodem continuamente, mesmo após falhas ou reinicializações do servidor.
Principais características:
- Daemonização: Garante que suas aplicações continuem rodando em segundo plano.
- Balanceamento de carga: Gerencia múltiplos processos de uma aplicação, utilizando todos os núcleos da CPU.
- Monitoramento: Permite visualizar métricas como uso de CPU, memória e status dos processos em tempo real.
- Logs centralizados: Coleta e organiza logs de suas aplicações para análise.
- Facilidade de configuração: Simples de usar, mesmo para iniciantes.
Confira também:
Por que Rodar Suas Aplicações com PM2?
Por que Rodar Suas Aplicações com PM2? Trabalhar diretamente com comandos básicos do Node.js, como node app.js
, pode ser suficiente em ambientes de desenvolvimento.
No entanto, em produção, é fundamental garantir alta disponibilidade e eficiência.
O PM2 se destaca por automatizar tarefas complexas, economizando tempo e esforço.
Benefícios do PM2:
- Resiliência: Reinicia automaticamente aplicações que falham.
- Escalabilidade: Suporte para clustering, permitindo rodar várias instâncias da mesma aplicação.
- Facilidade de integração: Funciona bem com outras ferramentas e sistemas de CI/CD.
- Flexibilidade: Suporte para scripts escritos em Python, Ruby, e outras linguagens, além de Node.js.
Instalando o PM2
Antes de começar, certifique-se de ter o Node.js e o npm instalados no seu sistema.
Caso não tenha, instale-os a partir do site oficial Node.js.
Passo 1: Instale o PM2 globalmente
Abra o terminal e execute o comando:
npm install -g pm2
A flag -g
indica que o PM2 será instalado como uma ferramenta global, disponível para qualquer projeto no seu sistema.
Passo 2: Verifique a instalação
Depois de instalado, confirme se o PM2 está funcionando corretamente:
pm2 --version
Isso exibirá a versão instalada.
Rodando uma Aplicação com o PM2
Agora que o PM2 está instalado, vamos ver como utilizá-lo na prática.
Passo 1: Inicie sua aplicação
Para rodar sua aplicação com o PM2, use o comando:
pm2 start app.js
Substitua app.js
pelo nome do arquivo principal da sua aplicação.
Passo 2: Verifique o status dos processos
Após iniciar, você pode verificar o status dos processos com:
pm2 list
Este comando exibirá informações como ID do processo, nome, status, uso de CPU/memória e uptime.
Passo 3: Reinicie ou pare processos
- Para reiniciar um processo:bashCopiar código
pm2 restart app.js
- Para parar:bashCopiar código
pm2 stop app.js
- Para remover completamente:bashCopiar código
pm2 delete app.js
Configurando o PM2 para Reinício Automático
Um dos grandes diferenciais do PM2 é a capacidade de reiniciar automaticamente suas aplicações em caso de falhas ou reinicializações do sistema.
Configuração de reinício no sistema
Execute o comando:
pm2 startup
Este comando gera um script que configura o PM2 para iniciar automaticamente junto com o sistema operacional.
Após isso, copie e execute a linha de comando fornecida pelo PM2 para aplicar a configuração.
Monitoramento com PM2: Rodar Suas Aplicações com PM2
O PM2 oferece recursos robustos de monitoramento para ajudar você a entender como suas aplicações estão se comportando.
Visualize métricas em tempo real
Use:
pm2 monit
Este comando abre uma interface interativa no terminal, exibindo métricas como:
- Uso de CPU
- Consumo de memória
- Status do processo
Gerenciando Logs
Manter um registro centralizado dos logs de suas aplicações é essencial para depuração e análise.
Visualize logs no terminal
pm2 logs
Este comando exibe os logs de todos os processos em execução.
Filtre logs de um processo específico
pm2 logs <process_name_or_id>
Substitua <process_name_or_id>
pelo nome ou ID do processo que você deseja monitorar.
Usando Arquivos de Configuração com PM2
Para simplificar a gestão de várias aplicações, o PM2 permite usar arquivos de configuração JSON ou YAML.
Estes arquivos ajudam a organizar informações como o caminho do script, variáveis de ambiente e opções de execução.
Exemplo de configuração JSON:
Crie um arquivo chamado ecosystem.config.js
:
module.exports = {
apps: [
{
name: "my-app",
script: "app.js",
instances: 2,
exec_mode: "cluster",
env: {
NODE_ENV: "development",
},
env_production: {
NODE_ENV: "production",
},
},
],
};
Inicie os processos com o arquivo de configuração
pm2 start ecosystem.config.js
Recursos Avançados: Rodar Suas Aplicações com PM2
Atualização Zero Downtime
PM2 permite reiniciar processos sem interromper o serviço:
pm2 reload all
Escalabilidade Horizontal
Rode múltiplas instâncias da sua aplicação usando clustering:
pm2 start app.js -i max
O parâmetro -i max
utiliza automaticamente todos os núcleos disponíveis do CPU.
Conclusão: Rodar Suas Aplicações com PM2
O PM2 é uma ferramenta poderosa que pode transformar a maneira como você gerencia suas aplicações em produção.
Desde a inicialização simples até funcionalidades avançadas como clustering e monitoramento, ele oferece tudo o que você precisa para garantir o desempenho e a confiabilidade dos seus serviços.
Agora que você sabe como rodar suas aplicações com PM2, experimente implementá-lo em seus projetos e aproveite os benefícios que ele traz para a gestão de processos.
Com o PM2, suas aplicações estarão sempre no ar, prontas para atender seus usuários sem interrupções!