Criando um Servidor de Atualização para PythonAnywhere e GitHub

Aprenda a configurar um webhook do GitHub para atualizar automaticamente seu aplicativo no PythonAnywhere. Este guia passo a passo simplifica o deploy contínuo para seus projetos.

Se você mantém projetos no PythonAnywhere e usa o GitHub para versionamento, configurar um servidor de atualização automática pode poupar tempo e garantir que seu código esteja sempre sincronizado. Com um webhook, o GitHub notifica seu servidor sempre que houver um push, e o servidor executa os comandos necessários para atualizar o repositório e reiniciar a aplicação.

Passo 1: Criar o Webhook no GitHub

No seu repositório, vá em Settings > Webhooks > Add webhook. Defina a Payload URL como o endpoint que criaremos no PythonAnywhere (ex.: https://seuusuario.pythonanywhere.com/update). Escolha Content type como application/json. Se desejar, defina um Secret para segurança. Selecione Just the push event (ou outros eventos conforme necessário) e ative o webhook.

Passo 2: Criar o Servidor de Atualização no PythonAnywhere

No PythonAnywhere, crie uma aplicação web (por exemplo, Flask). Adicione uma rota /update que receba solicitações POST. A função deve verificar a assinatura (se configurou segredo), executar git pull no diretório do projeto e, em seguida, tocar o arquivo WSGI para reiniciar a aplicação.

Exemplo básico com Flask:

from flask import Flask, request, jsonify
import subprocess, os, json

app = Flask(__name__)

@app.route('/update', methods=['POST'])
def update():
    # Verificar assinatura (opcional)
    # payload = request.get_json()
    # if request.headers.get('X-Hub-Signature') != '...': abort(403)
    projeto = '/home/seuusuario/seuprojeto'
    subprocess.run(['git', '-C', projeto, 'pull'])
    wsgi = '/var/www/seuusuario_pythonanywhere_com_wsgi.py'
    os.utime(wsgi, None)
    return jsonify({'status': 'ok'}), 200

Lembre-se de configurar as chaves SSH no PythonAnywhere para que o Git possa acessar repositórios privados sem senha.

Passo 3: Testar e Monitorar

Após criar o webhook e implantar o servidor, faça um push no repositório e verifique os logs do PythonAnywhere (em Web > Logs) para confirmar que a atualização foi bem-sucedida. Você pode também acessar o endpoint manualmente com curl para testar.

Conclusão

Com esses passos, cada push no GitHub atualizará automaticamente o código no PythonAnywhere, eliminando a necessidade de acesso manual ao servidor. Essa configuração é ideal para projetos pessoais, sites estáticos ou aplicações em desenvolvimento, garantindo que o deploy seja rápido e confiável.

Este artigo foi contribuído pela comunidade Música e Saúde.