Servidor & DevOps 40 visualizações

Como configurar um webhook para reiniciar automaticamente um serviço após o deploy

Ver no WHMCS

Como configurar um webhook para reiniciar automaticamente um serviço após o deploy

Olá, querido(a) desenvolvedor(a) e amig@ do mundo digital! 🌟

Se você está aqui, é porque quer deixar sua aplicação mais inteligente, mais responsiva e, acima de tudo, mais tranquila — sem precisar ficar clicando em botões para reiniciar o serviço depois de cada atualização. Que bom que você escolheu a GeHost para isso! 💪

Hoje, vou te ensinar, com carinho e clareza, como configurar um webhook que, assim que você fizer um deploy (atualização) em seu site ou aplicativo, automaticamente reinicia o serviço que ele depende — como um servidor Node.js, PHP com processos em segundo plano, ou qualquer outro que precise "acordar" após a atualização.

Antes de começar: entenda o que é um webhook

Imagine um alarme de porta: toda vez que alguém entra ou sai, ele toca. Um webhook é exatamente isso, mas no mundo digital: é uma mensagem enviada automaticamente para um endereço específico (uma URL) quando algo acontece — como um novo código sendo enviado ao seu servidor.

💡 Dica do Sensei: O webhook não é o serviço em si. É o gatilho que diz: "Ei, acabou o deploy! Vamos acordar o serviço agora!"

Passo a passo: como configurar o webhook no cPanel da GeHost

Para fazer isso, vamos usar o cPanel — o painel de controle da sua hospedagem. Vamos lá, com calma e foco!

  1. Entre no cPanel

    Abra seu navegador e acesse painel.gehost.com.br. Faça login com seu usuário e senha.

    Tela de login do cPanel com campos de Usuário e Senha, e botão Log in
  2. Encontre a ferramenta de "Webhooks" (ou simule um)

    Infelizmente, o cPanel não tem um botão chamado "Webhooks" diretamente. Mas não se preocupe! Vamos simular o comportamento com um arquivo PHP que atua como o "receptor" do webhook.

    Esse arquivo vai ficar no seu servidor e, quando receber uma requisição, vai executar o comando de reinício do serviço.

  3. Crie um arquivo PHP para receber o webhook

    Use o Gerenciador de Arquivos do cPanel para criar um arquivo chamado webhook-restart.php dentro da pasta public_html (ou na pasta raiz do seu site).

    Tela do Gerenciador de Arquivos do cPanel com a estrutura de pastas, incluindo public_html

    Dentro desse arquivo, cole este código simples:

    <?php
    // Arquivo: webhook-restart.php
    // Este arquivo recebe o webhook e reinicia o serviço
    
    // Verifica se a requisição é POST
    if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
        http_response_code(405);
        echo 'Método não permitido';
        exit;
    }
    
    // Verifica se o conteúdo é JSON (opcional, mas recomendado)
    $content = file_get_contents('php://input');
    if (!$content) {
        http_response_code(400);
        echo 'Nenhum dado recebido';
        exit;
    }
    
    // Aqui você coloca o comando que reinicia seu serviço
    // Exemplo para Node.js (ajuste conforme seu caso):
    $command = 'pm2 restart seu_nome_do_processo';
    
    // Executa o comando (só se permitido no seu plano)
    $output = shell_exec($command);
    
    // Responde com sucesso
    http_response_code(200);
    echo 'Serviço reiniciado com sucesso!';
    ?>
        

    Importante: Substitua seu_nome_do_processo pelo nome real do seu processo (ex: app.js, server, etc.). Se não souber, consulte seu arquivo de configuração ou o pm2 list no terminal (se disponível).

  4. Proteja seu webhook

    Como esse arquivo está acessível via URL, é essencial protegê-lo. Caso contrário, qualquer pessoa poderia reiniciar seu serviço!

    Para isso, você pode usar um token de segurança. Altere o código para verificar um token:

    <?php
    $token = 'seu_token_seguro_aqui'; // Altere para um valor único e secreto
    
    if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
        http_response_code(405);
        exit;
    }
    
    $input = json_decode(file_get_contents('php://input'), true);
    if (!isset($input['token']) || $input['token'] !== $token) {
        http_response_code(403);
        echo 'Acesso negado';
        exit;
    }
    
    // Execute o comando de reinício
    $command = 'pm2 restart seu_nome_do_processo';
    $output = shell_exec($command);
    
    http_response_code(200);
    echo 'Serviço reiniciado com sucesso!';
    ?>
        

    Salve o arquivo novamente com o token seguro. Esse token será usado no seu sistema de deploy.

  5. Teste o webhook localmente

    Antes de usar em produção, teste o arquivo. Você pode usar o curl no terminal ou uma ferramenta como Postman para enviar uma requisição POST com JSON:

    curl -X POST \
      https://seu-dominio.com/webhook-restart.php \
      -H "Content-Type: application/json" \
      -d '{"token": "seu_token_seguro_aqui"}'
        

    Se tudo funcionar, você verá a mensagem: Serviço reiniciado com sucesso!

  6. Configure seu sistema de deploy para chamar o webhook

    Se você usa GitHub Actions, GitLab CI, ou outro sistema de CI/CD, configure-o para enviar uma requisição POST para o URL do seu webhook após o deploy:

    POST https://seu-dominio.com/webhook-restart.php
    Content-Type: application/json
    
    {
      "token": "seu_token_seguro_aqui"
    }
        

    Pronto! Agora, toda vez que você atualizar o código, o webhook será acionado e o serviço será reiniciado automaticamente.

Quer saber mais? Aqui vai um bônus do Sensei:

  • Não use comandos perigosos: Evite comandos como rm -rf ou reboot no webhook. Isso pode afetar o servidor inteiro.
  • Verifique o plano: Alguns recursos como shell_exec podem estar desativados em planos mais básicos. Confira seu plano no painel do cliente.
  • Use logs: Adicione um file_put_contents('log.txt', $output); no arquivo PHP para registrar erros e ajudar na depuração.

Conclusão: automação com propósito

Configurar um webhook não é só técnica — é sobre confiança. É saber que, depois de cada atualização, seu sistema acorda sozinho, como um amigo fiel.

Se tiver dúvidas, não hesite em entrar em contato com nosso su

Precisa de Ajuda?

Nossa equipe está pronta para resolver suas dúvidas.