Correr um script Node.js à hora marcada no cPanel

Para agendar um script Node.js no cPanel, crie uma aplicação Node.js (para ter a versão certa e a pasta node_modules) e faça a tarefa cron chamar o node desse ambiente, com o caminho completo do script. Chamar apenas «node» no cron não serve: o cron não conhece a versão que escolheu.

Passo a passo

1 Crie a aplicação em «Setup Node.js App». Escolha a versão e a pasta da aplicação. Serve de ambiente mesmo que o seu script nunca atenda a pedidos web. Veja Node.js no cPanel: escolher a versão e usar o npm.
2 Instale as dependências com o npm do ambiente da aplicação, a partir do package.json. O botão de instalação da aplicação faz o mesmo.
3 Ponha o script na pasta da aplicação, ou numa pasta sua fora de public_html. Use caminhos completos para qualquer ficheiro que leia ou grave.
4 Descubra o node do ambiente. O ecrã da aplicação mostra o comando que activa o ambiente, com um caminho que termina em bin/activate. Copie o caminho e troque activate por node.
5 Escreva a linha do cron: o caminho do node do ambiente, o caminho do script, e >> /home/CONTA/job.log 2>&1. Veja o horário em exemplos de horários cron.
6 Guarde a configuração num ficheiro seu, fora de public_html. As variáveis de ambiente do ecrã da aplicação são da aplicação, e o cron não as vê.

O que costuma correr mal

Sintoma Causa O que fazer
node: command not found O cron não tem o node no caminho. Use o caminho completo do node do ambiente.
Cannot find module As dependências não foram instaladas, ou o script corre noutra pasta. Instale no ambiente e confirme a pasta com um caminho completo para o script.
Versão errada O cron chama uma versão diferente da que a aplicação usa. Aponte para o node da versão escolhida.
O script nunca termina Fica uma ligação aberta ou um temporizador activo. Termine explicitamente com process.exit() quando acabar, ou feche as ligações.
Erro «Out of memory» O script lê tudo para a memória. Processe por partes, ou use um VPS para trabalhos grandes.

Diga ao cron se correu bem. Termine o script com um código de saída diferente de zero quando algo falhar (por exemplo, atribuindo process.exitCode = 1) e escreva o erro na saída. Assim o e-mail do cron, ou um aviso seu, só aparece quando há motivo. Para o aviso, veja alertas para o Telegram.

O cron serve para trabalhos que acabam. Um script que fica sempre ligado (um servidor, um bot) é outro assunto: num plano partilhado corre como aplicação Node.js gerida pelo painel, e num VPS pode correr como um serviço. Veja manter uma aplicação Node.js a correr num VPS com o PM2.
Teste o script à mão antes de o agendar, no Terminal do cPanel, se a sua conta o tiver, com a mesma linha que vai pôr no cron. Se funcionar aí, só falta o horário.

Quer um plano com Node.js e cron no cPanel? Veja os planos de hospedagem.

Ver os planos

VEJA TAMBÉM

Node.js no cPanel: escolher a versão e usar o npm

Pôr uma aplicação Node.js a funcionar

Tarefas cron: para que servem e como criar uma

PRODUTO RECOMENDADO

Alojamento de sites com cPanel

Domínio e SSL incluídos, cópias diárias e o painel que já conhece. desde 321,75 MT/mês (plano de 3 anos, com cupão)

Ver planos
  • 0 Utilizadores acharam útil
Esta resposta foi útil?