20 de set. de 2012

Zen of CherryPy

     O CherryPy é um framework gratuito e open source criado por Rémi Delon (2002), voltado para o desenvolvimento de aplicações web, utilizando a linguagem Python. Suas aplicações costumam ser bastante simples, onde o servidor não necessita de customizações extensivas, bastando ter o interpretador Python instalado.
  • Instalação:
     Faça o download da versão atualizada pelo repositório do souce forge.
     Descompacte o arquivo com o comando:
# tar zxvf CherryPy-2.2.1.tar.gz

     Acesse o diretório criado: # cd CherryPy-2.2.1
     Instale o framework: # python setup.py install


     Se você usa o Debian basta usar o comando:
# apt-get install python python-dev

  Agora é preciso fazer o download do subversion pelo site: http://subversion.apache.org/packages.html, pois o CherryPy usa ele para controlar o acesso ao código.O Subversion é uma revisão de controle do sistema open source que permite que programadores gerenciem seus projetos.

     No Debian/Ubuntu basta usar o comando:
# apt-get install subversion
# apt-get install libapache2-svn

     No Fedora:
# yum install subversion

     Depois faça o download do cherrypy pelo svn:
# svn co http://svn.cherrypy.org

     Acesse a pasta criada e instale:
# cd svn.cherrypy.org/trunk/
# python setup.py install

  • Testando sua instalação:
     No interpretador Python digite os comandos:
>>> import cherrypy
>>> cherrypy.__version__
'3.2.1'


  • Criando seu primeiro programa:
     Digite o código abaixo e salve como olamundo.py.
import cherrypy
cherrypy.config.update({'server.socket_port': 3030,})
class OlaMundo(object):
    def index(self):
          return "Ola CherryPy!!!"
    index.exposed = True
cherrypy.quickstart(OlaMundo())

     Execute o código: $ python olamundo.py

     Teste em seu navegador: http://localhost:3030/

* Obs: A porta padrão do CherryPy é 8000, mas para quem tem o apache instalado o interpretador vai retornar que a sessão está ocupada, por isso mudei para 3030. 

  • Criando uma aplicação web:
1) Crie um arquivo chamado: zeldani_home.html, com o conteúdo:
<html><body>
  <h2>Zeldani's Root Page</h2>
  <a href='terceiro'>Apresentacao</a><br />
</body><html>



2) Agora outro arquivo chamado: ola.html
<html><body>
  <h3>Ola ${nome} !! ;)</h3>
  Seja bem vindo ao ${cherry} !!
</body></html>



3) Crie o arquivo zeldani.py com o código:

import cherrypy
from mako.template import Template
from mako.lookup import TemplateLookup

mylookup = TemplateLookup(directories=['segundo'])

class zeldaniapp:
    @cherrypy.expose # fala para o servidor que o metodo pode ser acessado pelo site.
    def index(self):
        mytemplate = mylookup.get_template("zeldani_home.html")
        # o mylookup.get_template eh uma funcionalidade do mako que especifica o arquivo.
        return mytemplate.render()

    @cherrypy.expose
    def terceiro(self):
        mytemplate = mylookup.get_template("ola.html")
        return mytemplate.render(nome="Zeldani", cherry="mundo das cerejas")

# aplicacao root:
zeldaniroot = zeldaniapp()
#configuracoes globais:
cherrypy.config.update("zeldaniglobal.conf")
# configura o nivel da aplicacao:
cherrypy.tree.mount(zeldaniroot,'/',"zeldanisettings.conf")
#inicia o servidor:
cherrypy.engine.start()
cherrypy.engine.block() 

4) Crie o arquivo: zeldaniglobal.conf
[global]
server.socket_host = "localhost"
server.socket_port=3030
server.thread_pool=10
log.screen: True
log.error_file: "/tmp/cherrypy.error"
log.access_file: "/tmp/cherrypy.access"

5) Crie o arquivo: zeldanisettings.conf (aqui altere para o seu diretório).
[/]
tools.staticdir.root="/home/zeldani"

6) Prontinho, agora execute a aplicação:
$ python zeldani.py

     E teste no seu navegador: http://localhost:3030

Dica: Salve os arquivos html na pasta segundo, pois é onde o templatelookup vai buscar os arquivos. ;) 

     É isso ai, espero ter ajudado!!

* Fontes:
CherryPy Essentials - Rapid Python Web Application Development - Sylvain Hellegouarch
http://www.cherrypy.org/chrome/common/2.2/docs/book/chunk/ch02.html
http://docs.makotemplates.org/en/latest/usage.html
http://python.6.n6.nabble.com
http://blip.tv/pycon-us-videos-2009-2010-2011/pycon-2010-the-zen-of-cherrypy-111-3352128

0 comentários:

Postar um comentário