Willian Fernandes

Desenvolvimento Web com Python, SQLObject e PSE – Parte 4

Comente »

Depois de mais uma longa pausa na série de desenvolvimento web com python[bb] cá estou, de volta com os posts.

Mas desta vez a pausa foi por um motivo nobre. Recentemente adquiri um MacBook[bb] e logo resolvi configurar o Apache2[bb] + mod_python + PSE + SQLObject + MySQL-python (MySQLdb). Precisava desta configuração para dar continuidade à série.

Então resolvi dedicar a 4ª parte da série exclusivamente para mostrar como configurar o ambiente no Mac OS X Leopard[bb].

Antes de efetuar os passos abaixo você precisará do Xcode instalado. Basta executar o 2º Disco do MAC OS X e executar o pacote de instalação do Xcode.

Apache

O Apache já vem instalado no MAC OS X, por isso precisaremos apenas habilitá-lo:
Vá em Preferências do Sistema, na opção Compartilhamento ative o serviço Compartilhamento Web.
Agora basta acessar http://localhost para ver o apache funcionando. Dentro do seu diretório home existe um diretório chamado Sites, basta colocar os arquivos lá e acessar pelo endereço http://localhost/~SEU_LOGIN.

Mod_Python

Agora chegou a hora de compilar o mod_python e configurá-lo no Apache.
Primeiramente faça o download do mod_python 3.3.1 (última versão disponível até a data deste post).

No terminal execute:

$ gunzip mod_python-3.3.1.tgz 
$ tar xvf mod_python-3.3.1.tar
$ cd mod_python-3.3.1
$ ./configure --with-apxs=/usr/sbin/apxs

Após executar os comandos acima o arquivo src/Makefile foi criado. Abra-o em seu editor de texto preferido e altere a linha 27:

LIBS=-lm  -framework  Python    -ldl
LDFLAGS= -Wl,-framework,Python  -u _PyMac_Error -framework Python   -Wl,-F.
OPT=

por:

LIBS=-lm  -framework  Python    -ldl
LDFLAGS= -Wl,-framework,Python  -u _PyMac_Error -framework Python   -Wl,-F. -arch x86_64
OPT=

Altere também a linha 49:

mod_python.so: $(SRCS)
    @echo
    @echo 'Compiling for DSO.'
    @echo
    $(APXS) $(INCLUDES) -c $(SRCS) $(LDFLAGS) $(LIBS) 
    @rm -f mod_python.so
    @ln -s .libs/mod_python.so mod_python.so

por:

mod_python.so: $(SRCS)
    @echo
    @echo 'Compiling for DSO.'
    @echo
    $(APXS) $(INCLUDES) -c -Wc,"-arch x86_64" $(SRCS) $(LDFLAGS) $(LIBS)
    @rm -f mod_python.so
    @ln -s .libs/mod_python.so mod_python.so

Cuidado para não quebrar a indentação. O arquivo todo está indentado por TAB se você utilizar espaço dará erro na hora de rodar o make.
Salve o arquivo e execute os comandos abaixo no terminal:

$ make
$ sudo make install

Precisamos efetuar uma alteração no mod_python para que ele funcione corretamente no Apache. Para isso abra o arquivo $ /Library/Python/2.5/site-packages/mod_python/importer.py como root e troque a linha 304 por esta:

        return __import__(module_name, {}, {})

Agora precisamos habilitar o mod_python no apache, para isso abra o arquivo /etc/apache2/httpd.conf (você precisará abrir o arquivo como root) e adicione a linha abaixo após a linha 116 (pelo menos foi a linha do meu arquivo):

LoadModule python_module libexec/apache2/mod_python.so

Pronto, agora é só reiniciar o Apache e o mod_python já estará configurado.

PSE

Baixe o PSE e execute os comandos abaixo no terminal:

$ tar xvf PSE-3.0.6.tar
$ cd PSE-3.0.6
$ sudo python setup.py install

Agora vamos configurar o Apache para aceitar os arquivos escritos usando o PSE. Abra o arquivo /etc/apache2/httpd.conf e adicione as linhas abaixo no final do arquivo:

PythonHandler pse_handler
AddHandler python-program .pt

Reinicie mais uma vez o Apache e crie dois arquivos de testes para ver se tudo está funcionando corretamente:
teste.py

msg = "Hello World!"

teste.pt

<?= msg ?>

Basta executar no navegador: http://localhost/teste.pt ou http://localhost/~SEU_LOGIN/teste.pt.

SQLObject

Instalar o SQLObject é simples, basta executar no terminal:

$ sudo easy_install -U sqlobject

MySQLdb

Instalar o MySQL-python exige uma pequena configuração. Primeiro baixe o arquivo e execute no terminal:

$ tar xzvf MySQL-python-1.2.2.tar.gz
$ cd MySQL-python-1.2.2

Abra o arquivo setup_posix.py e na linha 26 altere:

mysql_config.path = "mysql_config"

por:

mysql_config.path = "/usr/local/mysql/bin/mysql_config"

Agora abra o arquivo _mysql.c e remova as linhas 34, 37, 38 e 39:

#else
#include "my_config.h"
#endif
#ifndef uint
#define uint unsigned int
#endif

Também será preciso alterar as linhas 480 e 481:

    uint port = MYSQL_PORT;
    uint client_flag = 0;

por:

    unsigned port = MYSQL_PORT;
    unsigned client_flag = 0;

No terminal execute:

$ sudo ln -s /usr/local/mysql/lib /usr/local/mysql/lib/mysql
$ sudo python setup.py build
$ sudo python setup.py install

Quando fizer o comando de sudo python setup.py build você poderá receber algumas mensagens de warning, ignore-as.

Para testar o SQLObject execute o script python abaixo:

from sqlobject import *
sqlhub.processConnection = connectionForURI('mysql://root:SUA_SENHA@localhost/test')
class Usuario(SQLObject):
    nome = StringCol()
 
Usuario.createTable()

Após executar o script acima a tabela usuario deverá existir no banco de dados test.

Se você tiver problemas para executar o SQLObject com MySQL verifique se a versão do MySQL instalada é a de 32bits.

Pronto, o ambiente está completamente configurado no MAC OS X.

Agora voltaremos com nossa programação normal!
;)

4 comentários para "Desenvolvimento Web com Python, SQLObject e PSE – Parte 4"

  1. # Guilherme disse:
    16/04/2008 às 20:33:59

    Muito boa sua iniciativa, é o primeiro passo-a-passo decente que vejo sobre o assunto =]

    Vou testar e te retorno se deu certo

    []‘s

  2. # Roger disse:
    12/06/2008 às 15:38:36

    pow, na boa… melhor instalar o Mamp
    hhehe fiz isso no meu!!! mais facil… mas vlw a iniciativa

  3. # Fábio disse:
    27/10/2009 às 00:57:39

    Muito legal estas dicas !! Mas acho que no Snow Leopard não estão funcionando mais pois não estou conseguindo executar o comando make ….

  4. 27/10/2009 às 15:10:44

    Fábio,
    relamente não sei te dizer se funciona o Snow Leopard. Estou com o meu aqui para instalar, mas como ainda não pude instalar, não consegui testar essas coisas. Mas assim que der posto aqui a solução.

    abraço,

Deixe um comentário

*

(obrigatório)Não é aceito código HTML: adicione-o no pastie.org e poste apenas o link.