Esta tradução fornecida pelo StrongLoop / IBM.
Este documento pode estar desatualizado em relação à documentação em Inglês. Para obter as atualizações mais recentes, consulte a documentação em Inglês.Ao executar aplicativos do Express para produção, é útil usar um gerenciador de processos para completar as seguintes tarefas:
Ganhe insights sobre o desempenho em tempo de execução e o consumo de recursos.
Um gerenciador de processos é de certa forma parecido com um servidor de aplicativos: ele é um “contêiner” para aplicativos que facilita a implementação, fornece alta disponibilidade, e permite o gerenciamento do aplicativo em tempo real.
Os gerenciadores de processos mais populares para o Express e outros aplicativos Node.js são os seguintes:
Usar qualquer uma dessas três ferramentas pode ser muito útil, entretanto o StrongLoop Process Manager é a única ferramenta que fornece uma solução abrangente de tempo de execução e implementação que é atende ao ciclo de vida completo de aplicativos do Node.js, com ferramentas para todas as etapas antes e depois da produção, em uma interface unificada.
Aqui está uma breve visão de cada uma dessas ferramentas. Para obter uma comparação detalhada, consulte http://strong-pm.io/compare/.
O StrongLoop Process Manager (StrongLoop PM) é um gerenciador de processos para aplicativos do Node.js. O StrongLoop PM possui balanceamento de carga, monitoramento, e implementação em múltiplos hosts integrada, e um console gráfico. É possível usar o StrongLoop PM para as seguintes tarefas:
É possível trabalhar com o StrongLoop PM usando uma poderosa
ferramenta de interface da linha de comandos chamada
slc
, ou uma ferramenta gráfica chamada Arc. A Arc
é um software livre, com suporte profissional fornecido pelo StrongLoop.
Para obter mais informações, consulte http://strong-pm.io/.
Documentação completa:
$ [sudo] npm install -g strongloop
$ cd my-app
$ slc start
Visualizar o status do Gerenciador de Processos e todos os aplicativos implementados:
$ slc ctl
Service ID: 1
Service Name: my-app
Environment variables:
No environment variables defined
Instances:
Version Agent version Cluster size
4.1.13 1.5.14 4
Processes:
ID PID WID Listening Ports Tracking objects? CPU profiling?
1.1.57692 57692 0
1.1.57693 57693 1 0.0.0.0:3001
1.1.57694 57694 2 0.0.0.0:3001
1.1.57695 57695 3 0.0.0.0:3001
1.1.57696 57696 4 0.0.0.0:3001
Listar todos os aplicativos (serviços) sendo gerenciados:
$ slc ctl ls
Id Name Scale
1 my-app 1
Parar um aplicativo:
$ slc ctl stop my-app
Reiniciar um aplicativo:
$ slc ctl restart my-app
É possível também fazer uma “reinicialização leve,” que dá aos processos de trabalho um período de tolerância para fechar conexões existentes, e em seguida reiniciar o aplicativo atual:
$ slc ctl soft-restart my-app
Para remover um aplicativo do gerenciamento:
$ slc ctl remove my-app
O PM2 é um gerenciador de processos de produção para aplicativos do Node.js, que possui um balanceador de carga integrado. O PM2 permite manter os aplicativos ativos para sempre e recarregá-los sem tempo de inatividade, e facilitará tarefas comuns de administração de sistemas. O PM2 também permite que você gerencie o registro de logs, o monitoramento, e a clusterização do aplicativo.
Para obter mais informações, consulte: https://github.com/Unitech/pm2.
$ [sudo] npm install pm2 -g
Ao iniciar um aplicativo usando o comando
pm2
, você deve especificar o caminho do aplicativo. No
entanto, ao parar, reiniciar, ou excluir um aplicativo, é possível
especificar apenas o nome ou o id do aplicativo.
$ pm2 start npm --name my-app -- start
[PM2] restartProcessId process id 0
┌──────────┬────┬──────┬───────┬────────┬─────────┬────────┬─────────────┬──────────┐
│ App name │ id │ mode │ pid │ status │ restart │ uptime │ memory │ watching │
├──────────┼────┼──────┼───────┼────────┼─────────┼────────┼─────────────┼──────────┤
│ my-app │ 0 │ fork │ 64029 │ online │ 1 │ 0s │ 17.816 MB │ disabled │
└──────────┴────┴──────┴───────┴────────┴─────────┴────────┴─────────────┴──────────┘
Use the `pm2 show <id|name>` command to get more details about an app.
Ao iniciar um aplicativo usando o comando pm2
, o aplicativo será imediatamente enviado para
o segundo plano. É possível controlar os aplicativos em segundo plano a partir da linha de comandos usando vários comandos pm2
.
Após um aplicativo ser iniciado usando o comando pm2
, ele é registrado na lista de
processos do PM2 com um ID. É possível portanto gerenciar aplicativos com o mesmo nome a partir de diretórios diferentes no sistema, usando
os seus IDs.
Observe que se mais de um aplicativo com o mesmo nome estiver executando, os comandos do pm2
afetam todos eles.
Portanto use os IDs ao invés dos nomes para gerenciar aplicativos individualmente.
Listar todos os processos em execução:
$ pm2 list
Parar um aplicativo:
$ pm2 stop 0
Reiniciar um aplicativo:
$ pm2 restart 0
Para visualizar informações detalhadas sobre um aplicativo:
$ pm2 show 0
Para remover um aplicativo do registro do PM2:
$ pm2 delete 0
Forever é uma ferramenta simples de interface da linha de comandos para assegurar que um dado script executa continuamente (para sempre). A interface simples do Forever torna-o ideal para a execução de implementações menores dos aplicativos e scripts do Node.js.
Para obter mais informações, consulte: https://github.com/foreverjs/forever.
$ [sudo] npm install forever -g
Para iniciar um script, use o comando forever start
e especifique o caminho do script:
$ forever start script.js
Este comando irá executar o script em modo daemon (no segundo plano).
Para executar o script de forma que ele seja anexado ao terminal, omita start
:
$ forever script.js
É uma boa ideia registrar os logs da saída da ferramenta Forever e do script usando as opções de log -l
,
-o
, e -e
, como mostradas nesse exemplo:
$ forever start -l forever.log -o out.log -e err.log script.js
Para visualizar a lista de scripts que foram iniciados pelo Forever:
$ forever list
Para parar um script que foi iniciado pelo Forever use o
comando forever stop
e especifique o índice do
processo (conforme listado pelo comando forever
list
).
$ forever stop 1
Alternativamente, especifique o caminho do arquivo:
$ forever stop script.js
Para parar todos os scripts que foram iniciados pelo Forever:
$ forever stopall
O Forever possui muitas outras opções, e ele também fornece uma API programática.