Executando Python 3 no Apache através do WSGI

Você pensou em utilizar o Python através do Apache? Bem, é perfeitamente possível fazer isso! Basta instalarmos um módulo chamado mod_wsgi e tudo pronto!

Nesse tutorial, vamos aprender como instalar e configurar o mod_wsgi para executar o Python 3 no Apache 2 a partir do WSGI.

Mas o que seria WSGI e MOD_WSGI?

O que é WSGI?

Resumidamente, o WSGI é uma sigla para Web Server Gateway Interface. Trata-se de uma especificação para uma interface simples e universal entre servidores web e aplicações web ou frameworks para a linguagem de programação Python.

Fonte: Wikipédia.

E o que é MOD_WSGI?

O mod_wsgi é um módulo que fornece uma interface compatível com WSGI para hospedar aplicativos da Web baseados em Python no Apache.

Fonte: Wikipédia

{% include ads_article.html %}


Instalando o WSGI no Apache 2

Como dito, para executar um script Python no Apache, é necessário instalar e configurar o módulo mod_wsgi.

Instale o módulo WSGI no Apache, através do seguinte comando:

sudo apt install libapache2-mod-wsgi-py3

Após a instalação, habilite o módulo WSGI no Apache:

sudo a2enmod wsgi

E reinicie o Apache:

sudo service apache2 restart

Feito isso, podemos seguir com as configurações...

Configurando o WSGI no Apache

Agora, vamos criar um Virtual Host para executarmos um script Python através do Apache.

Vá até a pasta /etc/apache2/sites-avaliable e crie um arquivo wsgi.conf. Você pode fazer assim:

sudo nano /etc/apache2/sites-avaliable/wsgi.conf

Em seguida, cole o seguinte conteúdo:

<VirtualHost *:80>
    ServerName localhost
    WSGIScriptAlias /python /var/www/python/
    DirectoryIndex index.py
</VirtualHost>

Habilite o virtual host criado através do seguinte comando:

sudo a2ensite wsgi.conf

Agora, precisamos recarregar o Apache com as novas configurações;

sudo service apache2 reload

Executando um script Python com WSGI

Agora, crie a pasta /var/www/python. Em seguida, crie um arquivo chamado index.py, pois definimos que o DirectoryIndex do Apache será esse arquivo.

Exemplo:

mkdir /var/www/python
touch /var/www/python/index.py

Agora, adicione o seguinte conteúdo ao seu arquivo index.py

def application(environ, start_response):
    status = '200 OK'
    html = "Olá, WSGI"
    headers = [('Content-type', 'text/html; charset=utf-8')]
    start_response(status, headers)
    return [bytes(html, 'utf-8')]

Pronto! Agora, basta acessar o caminho http://localhost/python para ver o seu script .py rodar com o WSGI.