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.
