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 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.
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 |