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
| 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
|
PRODUTO RECOMENDADO Alojamento de sites com cPanel Domínio e SSL incluídos, cópias diárias e o painel que já conhece. desde 5.940,00 Kz/mês (plano de 3 anos, com cupão) Ver planos |