1 - Introdução
Scripts CGI são programas que são executados no servidor web e aderem ao modelo Common Gateway Interface. Este modelo reflete as comunicações browser/servers, a partir do qual códigos CGI obtém seu nome.
A linguagem mais comum para se escrever códigos CGI continua sendo o Perl. No entanto, é possível escrever scripts CGI usando Python. Na verdade, uma instalação padrão do Apache Web Server para Windows, já vem preparada para a execução de códigos Python no diretório cgi-bin.
2 - Executando códigos Python a partir do diretório cgi-bin
Este artigo foi escrito usando uma instalação do Apache 2.2 no Windows XP. O único cuidado que tive foi instalar o Apache Web Server em um diretório sem espaços e sem caracteres especiais (por padrão, ele é instalado em "Arquivos de Programas"). No testes que realizei, os espaços no diretório de instalação não permitiram uma execução com sucesso de códigos CGI Python.
Pronto! Seu Apache foi instalado em um diretório sem espaços e sem caracteres especiais. O próximo passo é verificar a instalação do Python. Em minha máquina eu tenho o Python 2.5 instalado no diretório "C:\Python25". Novamente, evite instalar o Python em um diretório com espaços e caracteres especiais.
Estamos prontos para o teste. Vá ao diretório cgi-bin do Apache e crie um arquivo chamado primeiro.py com a seguinte listagem:
Antes de executar este código, vamos fazer algumas observações. A linha:
Serve, tanto no Windows quanto no Linux, para indicar ao Apache o programa responsável pela execução do código. Como o meu Python está instalado em "C:\Python25", esta linha funciona perfeitamente. Outro detalhe é a não necessidade da extensão .exe no nome do interpretador.
Veja agora a linha:
Esta linha deve ser usada para informar ao navegador o tipo de conteúdo que ele está recebendo. Se usada no script, deverá ser a primeira linha do conteúdo a ser enviado ao navegador.
Vamos testar. Aponte seu navegador para http://localhost/cgi-bin/primeiro.py. As chances de que a página abaixo seja exibida são enormes:
Veja o texto completo da página de erro interno 505:
Qualquer um que se disponha a desenvolver códigos CGI, deve estar muito bem familiarizado com o erro 505. A primeira coisa é fazer é executar o código diretamente no interpretador Python. Para isso, abra um janela de comando, navegue até o diretório cgi-bin do Apache e execute o arquivo primeiro.py:
Ao executar o arquivo teremos o seguinte resultado:
Hummm! Este erro parece familiar. Estamos usando acentos mas não declaramos uma codificação para tal. Para resolver isso, insira a linha:
logo abaixo da linha:
Certifique-se de que estas duas linhas sejam as primeiras no programa. O código completo deve ficar assim:
Pronto! Vamos executar novamente. Eis o resultado na figura seguinte:
3 - Executando códigos Python fora do diretório cgi-bin
Experimente agora mover o arquivo primeiro.py para fora do diretório cgi-bin (coloque-o, por exemplo, na pasta "C:\Apache_Web_Server\htdocs". Vamos executá-lo assim:
Você ficará surpreso ao perceber que o código Python não é executado. O que temos na janela do navegador é todo o texto do arquivo. Muitas vezes o arquivo é até mesmo oferecido para download.
Isso acontece porque, por padrão, o Apache Web Server não permite a execução de códigos CGI fora do diretório cgi-bin. Para contornar essa restrição, precisamos seguir alguns passos atenciosamente:
1) Localize o elemento Directory que define o local no qual a pasta raiz do site reside. Geralmente é algo como:
Dentro deste elemento você encontrará um linha parecida com:
Adicione o valor ExecCGI para que fique parecido com:
2) Localize a linha (deve estar com comentários ainda):
Retire o comentário e altere esta linha para que fique parecida com:
Veja que aqui nós indicamos que a extensão .py deverá ser tratada como script CGI.
Pronto! Se você seguiu as instruções corretamente, pode reiniciar o Apache e executar códigos Python a partir de qualquer diretório agora.