Rodar um script Node.js à hora marcada no cPanel

Automação e n8n·· 338 visualizações· 4 min de leitura

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 requisições 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 arquivo que leia ou grave.
4 Descubra o node do ambiente. A tela da aplicação mostra o comando que ativa 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 Salve a configuração num arquivo seu, fora de public_html. As variáveis de ambiente da tela da aplicação são da aplicação, e o cron não as vê.

O que costuma dar errado

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 roda em outra 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 ativo. 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 deu certo. 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 compartilhado corre como aplicação Node.js gerenciada pelo painel, e num VPS pode rodar como um serviço. Veja manter uma aplicação Node.js a rodar 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

Onde ver na sua conta

As versões de Node.js que você pode usar são as que o seu cPanel oferece, então leia por lá: abra Setup Node.js App e comece a criar uma aplicação, e as versões disponíveis aparecem no campo da versão. Se o ícone Setup Node.js App não existir no seu cPanel, pergunte se o seu plano pode tê-lo, porque a receita acima depende dele. Para saber se a conta também tem linha de comando, procure Terminal ou SSH Access no cPanel: se um deles aparecer, a conta tem SSH. Para uma versão específica de Node.js ou um script que precisa ficar sempre ligado, um VPS dá acesso total por SSH e permite instalar o que for preciso.

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 $6.60/mês (plano de 3 anos, com cupom)

Ver planos
Esta resposta foi útil? Sua resposta nos ajuda a melhorar este artigo.