Desenvolvimento Web com Python, SQLObject e PSE - Parte 4
Por Willian Fernandes em 16/04/2008
Depois de mais uma longa pausa na série de desenvolvimento web com python cá estou, de volta com os posts.
Mas desta vez a pausa foi por um motivo nobre. Recentemente adquiri um MacBook e logo resolvi configurar o Apache2
+ 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.
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 sqlobjectMySQLdb
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!
![]()