Pular para o conteúdo principal

🐍 Configurando Apache com Python (WSGI) na SaveinCloud

⚠️ Todas as configurações demonstradas neste manual são exemplos simples e hipotéticos. Pode ser necessário realizar adaptações conforme a topologia do seu ambiente.

Este guia mostra como realizar o deploy de uma aplicação Flask utilizando Apache com WSGI dentro da plataforma SaveinCloud.


✅ Requisitos recomendados

Antes de iniciar o deploy, certifique-se de que o projeto contenha:

  • Um arquivo wsgi.py configurado corretamente;
  • Um arquivo requirements.txt com as dependências da aplicação.

Parte 1 - Configurando o Apache Python na Topologia

🔧 Passo 1 – Montagem da Topologia

Adicione à camada de aplicação o Apache Python. Ajuste os cloudlets reservados e o limite de escalabilidade conforme a necessidade do seu projeto e aplique a alteração.

imagem

Opcional: Adicione um NGINX como Load Balancer e/ou um banco de dados (ex: MariaDB, MySQL).
Se utilizar o NGINX, siga a documentação específica.

imagem


📦 Passo 2 – Métodos de Deploy da Aplicação

A SaveinCloud oferece os seguintes métodos de deploy:

  • Arquivo local (.zip, .tar, etc.)
  • URL externa
  • Repositórios Git/SVN

Neste guia, utilizaremos o método por arquivo .zip.

Selecione o nó Apache Python para realizar o deploy:

imagem

Em seguida, envie seu projeto compactado:

imagem

⚠️ O projeto utilizado neste exemplo já possui os arquivos requirements.txt e wsgi.py configurados. Caso contrário, será necessário instalar manualmente as dependências via SSH.


📥 Passo 3 – Instalação das Dependências

Após o deploy, acesse o nó via SSH para instalar as dependências do projeto dentro de uma virtual environment.

Abra o terminal:

imagem

Acesse o diretório do projeto:

cd /var/www/webroot/ROOT

Caso NÃO exista requirements.txt, crie manualmente:

source venv/bin/activate
pip freeze > requirements.txt
deactivate

Caso o projeto possua requirements.txt:

mv venv venv-old                # Opcional: renomeia a venv antiga
python -m venv venv # Cria nova venv
source venv/bin/activate # Ativa a venv
pip install -r venv-old/requirements.txt
deactivate

Instalação manual de pacotes (caso necessário):

mv venv venv-old
python -m venv venv
source venv/bin/activate
pip install flask pacote2 pacote3
deactivate

⚙️ Passo 4 – Configuração do WSGI (Apache)

Edite o arquivo wsgi.conf no painel da plataforma para apontar para o caminho correto da aplicação e da venv.

Substitua as seguintes linhas:

imagem

Novas linhas:

WSGIDaemonProcess apache user=apache group=apache processes=2 threads=10 python-path=/var/www/webroot/ROOT/ python-home=/var/www/webroot/ROOT/venv/

ServerRoot "/var/www/webroot/ROOT/"
DocumentRoot "/var/www/webroot/ROOT/"

🧩 Passo 5 – Configurando o Arquivo wsgi.py do Projeto

Acesse o arquivo wsgi.py dentro do diretório do projeto.

imagem

⚠️ Caso o arquivo wsgi.py não exista, crie-o na raiz do projeto.

Exemplo 1:

from app import app as application

if __name__ == "__main__":
app.run()

Exemplo 2:

import sys
import os

sys.path.insert(0, '/var/www/webroot/ROOT')

from run import app as application

🔎 Passo 6 – Testando a Aplicação

Após salvar todas as configurações:

  1. Acesse a URL pública do ambiente: imagem

  2. Verifique se a aplicação está rodando: imagem

Se tudo estiver correto, sua aplicação Flask estará acessível.


📘 Documentação complementar:

🛠️ Troubleshooting

❌ 1. Erro 500 ao acessar a aplicação

Causa possível:

  • Permissões incorretas no diretório ou arquivos da aplicação.
  • Erros no código Python (ex: ImportError, SyntaxError).

Como verificar:
Acesse os logs do Apache no terminal via SSH:

cat /var/log/httpd/error_log

Soluções:

  • Corrija erros no código (ex: nome errado do módulo ou função).
  • Dê permissão adequada ao diretório:
    chown -R apache:apache /var/www/webroot/ROOT
    chmod -R 755 /var/www/webroot/ROOT

❌ 2. Página em branco ou “Not Found”

Causa possível:

  • WSGIScriptAlias configurado com caminho incorreto.
  • wsgi.py está ausente ou mal configurado.

Como verificar:
Edite o arquivo wsgi.conf e valide o caminho com:

WSGIScriptAlias / /var/www/webroot/ROOT/wsgi.py

E confirme se wsgi.py contém:

from app import app as application

❌ 3. Modificação no código não atualiza no navegador

Causa possível:

  • Cache do navegador ou cache do Apache.

Solução:

  • Tente reiniciar o node do Apache pela própria plataforma.

  • Limpe o cache do navegador ou abra em modo anônimo.


❌ 4. Erro: ModuleNotFoundError

Causa possível:

  • Ambiente virtual (venv) não está ativo corretamente.
  • Caminho para a venv não foi informado ao WSGI.

Solução:

  • Verifique se python-home está correto no wsgi.conf:
    WSGIDaemonProcess apache ... python-home=/var/www/webroot/ROOT/venv/
  • Certifique-se de que a venv foi criada e ativada corretamente:
    source venv/bin/activate