Desenvolvimento Web com Python, SQLObject e PSE - Parte 4

Por Willian Fernandes em 16/04/2008 na categoria desenvolvimento, internet, python, web

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:

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

por:

26
27
28
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:

45
46
47
48
49
50
51
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:

45
46
47
48
49
50
51
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 rode 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:

304
        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 rode 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

1
msg = "Hello World!"

teste.pt

1
<?= 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:

26
mysql_config.path = "mysql_config"

por:

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

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

34
35
36
37
38
39
#else
#include "my_config.h"
#endif
#ifndef uint
#define uint unsigned int
#endif

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

480
481
    uint port = MYSQL_PORT;
    uint client_flag = 0;

por:

480
481
    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:

1
2
3
4
5
6
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!
;)

Comentários

1# Guilherme disse em 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 em 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

Deixe Um Comentátio

*Campos obrigatórios