Instalando mod_python no Apache – Python e web
Depois de começar a brincar com o Google AppEngine, decidi realmente levar a sério o Python. Cheguei à uma conclusão do motivo pelo qual a Google vem investindo tanto no Python: realmente a linguagem é fantástica.
Vou começar uma série de artigos sobre o desenvolvimento de aplicações WEB usando Python com o Django, um poderoso framework web, no qual eu comecei a respeitar, tanto quanto a comunidade Ruby respeita o Ruby on Rails.
Antes de entrar nos detalhes do modelo de implementação do Django com Python, estou postando um simples tutorial de como configurar o Apache e o mod_python para que você possa desenvolver aplicações.
Para o meu tutorial, eu usei o Apache 2.2 para Windows e a mesma versão para o Ubuntu. Caso queira ver a lista dos pré-requisitos, sugiro que acesse a página do mod_python pois a versão do módulo só funciona com a versão certa do apache. Veja: Requisitos para o mod_python
Passo 1:
Verifique a versão do Python que você possui instalado na sua máquina. Para poder rodar o mod_python, você precisa do python 2.5.x, pois por alguns problemas relativos à compilação, o mod_python ainda não suporta o python 2.6 .
Para fazer isso, entre num prompt do dos e digite python –version . Se estiver tudo certo, verificará algo como “Python 2.5.xx” .
Caso apresente um erro que o executável não foi encontrado, certifique-se que a pasta do Python está no seu path.
Passo 2:
Faça download do mod_python . No momento em que esse tutorial foi escrito, a versão era (ou é) a 3.3 . Para windows, existe um instalador e basta seguir o processo NNF (next, next, finish).
Para *Nix, é necessário baixar os fontes e compilar na mão. Verifique se a sua distribuição não oferece o pacote pronto, assim você economiza tempo e CPU
. Antes da compilação, caso você opte por fazer na mão, precisa decidir como quer carregar o módulo: por DSO ( Dynamic Shared Object) ou estáticamente. Se for pra linha do estático, vai precisar recompilar o Apache.
Eu escolhi compilar usando DSO. Só para deixar claro, o utilitário que faz o processo da carga dinâmica de módulos é chamado de APXS Verifique se o mesmo está no seu path!
Rodei um configure bem simples: ./configure –with-apxs=/usr/local/apache/bin/apxs
Depois disso, os famosos comandos make e depois make install. Lembre-se que para rodar o make install você precisa estar logado como root, pois ele copiará a biblioteca para o seu libexec.
Passo 3:
Depois disso tudo, vem o truque necessário para o Python rodar no Apache. Eu apanhei algumas vezes pois as documentações além de desatualizadas, estão cheias de erro.
Para fazer rodar você precisa editar o arquivo httpd.conf. No windows, está na pasta “conf” e nos linux, normalmente fica em /etc/httpd.conf .
Abra o arquivo no seu editor favorito e procure por linhas que comecem por “LoadModule”. Você vai achar várias linhas, uma embaixo da outra, com um monte de módulos. Essas linhas falam ao Apx para carregar o módulo e depois da última, inclua uma nova linha:
LoadModule python_module modules/mod_python.so
Só garanta que a pasta que o módulo está, foi configurada corretamente. É possível colocar o caminho completo por lá também.
Depois de carregado o módulo, é necessário configurar um diretório para que os scripts python seja interpretados. Procure por linhas que comecem por “<Directory “ no httpd.conf e inclua uma nova, com o seguinte formato:
Para windows:
<Directory "c:/diretorio_apache/www/py/">
SetHandler mod_python
PythonHandler mptest
PythonDebug On
</Directory>
Para Linux:
<Directory "/pasta/diretorioapache/www/py/">
SetHandler mod_python
PythonHandler mptest
PythonDebug On
</Directory>
Pronto! Depois desse processo, salve o arquivo e reinicie seu apache. Verifique nos arquivos de log se não ocorreu nenhum erro com a carga do módulo e passe para a etapa seguinte.
Passo 4:
Vamos gerar um arquivo de teste, para que seja executado pelo navegador. Abra um editor qualquer e digite o seguinte conteúdo:
from mod_python import apache
def handler(req):
req.content_type = 'text/plain'
req.write("Funcionou. Minha aplicacao python esta ok.")
return apache.OK
Salve o arquivo na pasta py que você criou no arquivo de configuração do apache e chame-o através do browser. Ex: http://localhost/py/teste.py . Se tudo ocorreu bem, você deve ver “Funcionou. Minha aplicacao python esta ok”.
É isso. O segredo está no “SetHandler”, que muitas documentações passam outra forma.
Caso tenha alguma dúvida, faça um comentário e consulte também a documentação no site do mod_python.
Até a próxima com Django.
Popularity: 4%








Ola,
Estou com um problema,
não estou conseguindo fazer rodar o Python no
apache..
aparece um erro que não consegue carregar o
o arquivo de configuração.
Estou usando o django.
a linha que inseri no httpd.conf foi
SetHandler python-program
PythonPath “['C:/wamp/www/'] + sys.path”
PythonHandler django.core.handlers.modpython
SetEnv DJANGO_SETTINGS_MODULE settings
PythonOption django.root /casamentodaboneca
PythonDebug On
vc pode me ajudar nisso…
ja esto a 2 dias tentando!
muito obrigado
Estou com o python 2.5 e 2.6 instalado, vc sabe como fazer o mod_python usar o 2.5? ele sempre tenta usar o 2.6 e falha..
Valeu!
isso ae não funfa nem FU******
ele escreve todo o código python (isso se o apache iniciar), como se ‘simplesmente’ eu não tivesse feito nada…..
Na verdade to a 5 horas tentando fazer funfar o python em apache… já fiz tudo que se possa imaginar..entendo pq ngm usa python em sites agora…
rsrsrsrsrs
Não funciona ou vc não tá sabendo configurar ?
Poste aí o que tá rolando.
Pois é, escrevi ontem isso meio que na raiva..
Consegui depois de um tempo entender o que acontece….
Depois de muita luta ele me retornava um erro “InternalError”, dizendo que estava com problema nessa linha “PythonHandler mptest”…..
Acontece QUE: eu tenho que renomeiar meu arquivo py para “mptest” senão não funciona…dae tentei usar o apache para escrever o nome do arquivo solitado como ‘handler’..com rewrite engine + – assim: “RewriteRule ^(.+).(py)$ PythonHandler $1.$2″ mas dae parei nisso. fui dormir.