Se corre node app.js numa sessão SSH, a aplicação morre quando a sessão fecha, e não volta se o servidor reiniciar. O PM2 é um gestor de processos para Node.js que resolve isto: arranca a aplicação em segundo plano, reinicia-a se falhar, guarda os registos, e volta a pô-la de pé quando o servidor arranca. É para um VPS com acesso root; na hospedagem partilhada, o «Setup Node.js App» faz esse papel (Node.js no cPanel).
Instalar e arrancar
| 1 |
Instale o Node.js. Siga as instruções de nodejs.org para o seu sistema: as versões que vêm nos repositórios da distribuição estão muitas vezes atrás. Confirme com node -v.
|
|
| 2 |
Crie um utilizador para a aplicação em vez de a correr como root, e entre com ele. Uma aplicação comprometida só alcança o que esse utilizador alcança.
|
|
| 3 |
Instale o PM2: sudo npm install -g pm2
|
|
| 4 |
Arranque a aplicação a partir da pasta dela: pm2 start app.js --name minha-appSe a aplicação arranca por um script do package.json: pm2 start npm --name minha-app -- start.
|
|
| 5 |
Veja o estado e os registos: pm2 list pm2 logs minha-app pm2 monitO pm2 logs é o primeiro sítio onde olhar quando a aplicação cai.
|
|
| 6 |
Faça-a sobreviver a um reinício do servidor. Corra pm2 startup: imprime uma linha que tem de copiar e correr com sudo. Depois, com a aplicação a correr, grave a lista: pm2 save. Teste mesmo reiniciando o VPS.
|
|
Os comandos do dia-a-dia
| Comando |
O que faz |
pm2 restart minha-app |
Pára e arranca outra vez. Use depois de actualizar o código. |
pm2 reload minha-app |
Recarrega sem cortar o serviço, quando a aplicação o permite. |
pm2 stop minha-app |
Pára, mas mantém-na na lista. |
pm2 delete minha-app |
Remove-a da lista. Faça depois pm2 save. |
pm2 logs --lines 100 |
As últimas linhas dos registos de tudo o que o PM2 gere. |
pm2 env 0 |
As variáveis de ambiente do processo número 0 (o número vem do pm2 list). |
Para uma configuração que se repete, o PM2 aceita um ficheiro ecosystem.config.js com o nome, o ficheiro de arranque e as variáveis, e arranca-se com pm2 start ecosystem.config.js. Gere-se o ficheiro com pm2 ecosystem.
|
Esqueceu-se do pm2 save? Sem ele, o PM2 volta a pôr de pé a lista que tinha gravada, e a aplicação nova não está lá. É a causa mais comum de «funcionava até reiniciar o servidor». Outra: usar o PM2 como root, mas guardar a lista de outro utilizador; o pm2 startup tem de ser corrido para o utilizador que corre a aplicação.
|
|
Se já usa Docker, não precisa do PM2: o próprio Docker reinicia o contentor com restart: unless-stopped. Escolha um dos dois para cada aplicação, não os dois. Para segredos e variáveis, veja variáveis de ambiente e segredos.
|
|
Ainda não tem um VPS para a aplicação? Veja os planos e escolha o sistema operativo na encomenda.
Ver os servidores VPS
|
PRODUTO RECOMENDADO Servidor VPS com acesso root Recursos só seus, o sistema que escolher, reinstalação quando quiser. desde 7.560,00 Kz/mês (plano de 3 anos, com cupão) Ver planos |