associação pythonbrasil[11] django zope/plone planet Início Logado como (Entrar)

Diferenças para "WebwareRapidinho"

Diferenças entre as versões de 3 e 17 (14 versões de distância)
Revisão 3e 2004-08-14 17:35:18
Tamanho: 1723
Comentário: Correções de português
Revisão 17e 2005-09-22 17:11:33
Tamanho: 6103
Editor: seocam
Comentário:
Deleções são marcadas assim. Adições são marcadas assim.
Linha 1: Linha 1:
[Webware http://www.webwareforpython.org/] + WebKit rápido e sujo... = Webware Rapidinho =
Linha 3: Linha 3:
= O que é? =
É uma suíte OO para desenvolvimento web, obviamente que feito em Python.
O Webware tem uma série de componentes (chamados de ''kits''), entre eles
o WebKit é um servidor de aplicações para web.
[http://www.webwareforpython.org/ Webware homepage]
Linha 8: Linha 5:
= De onde eu baixo? = = O Que É? =
Linha 10: Linha 7:
A última versão disponível (0.8.1) encontra-se em É uma suíte OO para desenvolvimento web, obviamente feito em Python.
O Webware é constituido de componentes chamados de ''kits'', entre eles o !WebKit é um servidor de aplicações para web.
Linha 12: Linha 10:
http://prdownloads.sourceforge.net/webware/Webware-0.8.1.tar.gz?download = Como Baixar O Fonte? =
Linha 14: Linha 12:
= Como eu instalo? = A última versão disponível (0.8.1) encontra-se em http://prdownloads.sourceforge.net/webware/Webware-0.8.1.tar.gz?download
Linha 16: Linha 14:
= Como Eu Instalo? =
Linha 23: Linha 22:
Não é legal manter os dados da página junto com o próprio webware, por isso Isso vai instalar o framework, mas não é legal manter os dados do projeto (chamados de contextos) junto com o próprio Webware, por isso é melhor criar um lugar separado para o seu projeto. O Webware tem um script para isso.
{{{
$ cd /usr/local/Webware-0.8.1
$ python bin/MakeAppWorkDir.py /home/ruda/MyWebKit
}}}
Linha 25: Linha 28:
Substitua {{{/home/ruda/MyWebKit}}} para onde for mais ao seu gosto.

= Servidor HTTP =
Sim, precisa do Apache rodando, não esqueça. Outros servidores também são suportados, veja a documentação. O Webware inclui um servidor HTTP de brinquedo, para rodar é fácil
Linha 26: Linha 33:
$ python bin/MakeAppWorkDir.py /home/ruda/MyPage $ cd /usr/local/Webware-0.8.1/WebKit/Adapters
$ ./HTTPAdapter --host=localhost --port=80 --daemon
Linha 28: Linha 36:
Substitua {{{/home/ruda/MyPage}}} para onde for mais adequado.

Preciso do Apache? '''Sim''' para uso no mundo real. '''Não''' se quiser
apenas testar ou conhecer o webware, tem um servidor HTTP pequeno para isso.
mas não use, é muito fraquinho.
Linha 34: Linha 39:
O adaptador é o que liga a requisição do cliente via browser com o servidor de aplicações. O servidor de aplicações roda em uma porta diferente da 80 e por padrão é a porta 8086.
{{{
Cliente (via browser)
 |
Servidor HTTP (porta 80)
 |
Adaptador
 |
AppServ (porta 8086)
}}}
Linha 39: Linha 54:
$ cd WebKit/Adapters/wkcgi $ cd /usr/local/Webware-0.8.1/WebKit/Adapters/wkcgi
Linha 44: Linha 59:
  * '''Webkit.cgi''' é um CGI feito em Python. É lento, não use no mundo real. Obs 1: O aplicativo apxs é necessário para compilar os modulos do apache. Na distribução debian (e baseadas em .deb como o ubuntu) você pode encontra-lo no pacote apache-dev.
Linha 46: Linha 61:
  * '''OneShot.cgi''' semelhante ao Webkit.cgi, muito útil durante a fase
de desenvolvimento, pois as páginas não são persistentes, elas são
sempre relidas.
Obs 2: Se mesmo depois de instalar o apache-dev o make continuar reclamando verifique o caminho do apxs dentro do arquivo Makefile e se necessário altere para o caminho correto.
Linha 50: Linha 63:
  * '''mod_webkit''' é um módulo para plugar diretamente no Apache. É a melhor maneira de usar, pois é a mais rápida de todas.   * '''Webkit.cgi''' é um CGI feito em Python. Não use.
Linha 52: Linha 65:
= Iniciar o WebKit =   * '''!OneShot.cgi''' semelhante ao Webkit.cgi, muito útil durante a fase de desenvolvimento pois as páginas não ficam persistentes, elas são sempre relidas em cada leitura de página.
Linha 54: Linha 67:
  * '''mod_webkit''' é um módulo para plugar diretamente no Apache. É o método mais eficiente.

Para instalar (usando a versão para apache 1.x):
{{{
$ cd /usr/local/Webware-0.8.1/WebKit/Adapters/mod_webkit
$ make
$ cp mod_webkit.so /usr/lib/apache/1.3/
}}}

Edite o arquivo de configuração do apache e acrescente:
{{{
LoadModule webkit_module /usr/lib/apache/1.3/mod_webkit.so
AddType text/psp .psp
AddHandler psp-handler .psp
<Location /wk>
  WKServer localhost 8086
  SetHandler webkit-handler
</Location>
}}}

= Como Iniciar O Servidor De Alicações? =
Linha 55: Linha 89:
Linha 57: Linha 90:
$ cd Webware-0.8.1/WebKit $ cd /home/ruda/MyWebKit
Linha 63: Linha 96:
  * Se escolher o modo OneShot = Como Parar O Servidor De Aplicações? =
Basta matar o servidor !AppServ, {{{^C}}} no terminal que ele está rodando ou matar com {{{kill <processo do AppServ>}}}.
Linha 65: Linha 99:
= Tenho O Webware Instalado, E Agora? =
  * Leia a documentação oficial que deve estar em {{{/usr/local/Webware-0.8.1/Docs/}}} (comece pelo index.html).
  * Leia o Wiki do Webware http://wiki.w4py.org/
  * Comece modificando o {{{/home/ruda/MyWebKit/MyContext/Main.py}}}

= Um pequeno Exemplo =
Este exemplo substitui o {{{/.../MyWebkit/MyContext/Main.py}}} que foi criado
conforme as instruções anteriores, talvez seja legal copiar o original para ter como referência.

{{{#!python
from WebKit.Page import Page

class Main(Page):
    def writeContent(self, msg=''):
        fruits = self.session().value('fruits', [])
        
        self.writeln('<h1>Cesta de Frutas</h1>')
        
        if fruits:
            self.writeln('Disponível na cesta:<ul>')
            for fruit in fruits:
                self.writeln('<li>' + fruit)
            self.writeln('</ul>')
        
        self.writeln('''
        <form action="Main" method="POST">
        <table>
        <tr>
          <td><input type="submit" name="_action_add" value="Adicionar">
          <td><input type="text" name="new_fruit">
        <tr>
          <td><input type="submit" name="_action_remove" value="Remover">
          <td><input type="text" name="remove_fruit">
        <tr>
          <td><input type="submit" name="_action_clear" value="Limpar"
          <td>
        </table>
        </form>
        ''')
        
        if msg:
            self.writeln('<small>Resultado da última operação: %s</small>'
                         % msg)

    def actions(self):
        return Page.actions(self) + ['add', 'remove', 'clear']

    def add(self):
        fruits = self.session().value('fruits', [])
        new_fruit = self.request().field('new_fruit')
        if not new_fruit in fruits:
            fruits.append(new_fruit)
            self.session().setValue('fruits', fruits)
            msg = 'Adicionei a fruta na cesta.'
        else:
            msg = 'A fruta já está na cesta.'
        self.writeContent(msg)

    def remove(self):
        fruits = self.session().value('fruits', [])
        rm_fruit = self.request().field('remove_fruit')
        if rm_fruit in fruits:
            fruits.remove(rm_fruit)
            self.session().setValue('fruits', fruits)
            msg = 'A fruta foi removida.'
        else:
            msg = 'A fruta não estava na cesta.'
        self.writeContent(msg)

    def clear(self):
        if self.session().hasValue('fruits'):
            self.session().delValue('fruits')
        self.writeContent('A cesta foi limpa.')
}}}

ou baixe o attachment:Main.py
----

RudaMoura

Webware Rapidinho

[http://www.webwareforpython.org/ Webware homepage]

O Que É?

É uma suíte OO para desenvolvimento web, obviamente feito em Python. O Webware é constituido de componentes chamados de kits, entre eles o WebKit é um servidor de aplicações para web.

Como Baixar O Fonte?

A última versão disponível (0.8.1) encontra-se em http://prdownloads.sourceforge.net/webware/Webware-0.8.1.tar.gz?download

Como Eu Instalo?

$ cd /usr/local (/opt ou aonde for mais adequado)
$ tar zxvf Webware-0.8.1.tar.gz
$ cd Webware-0.8.1/
$ python install.py

Isso vai instalar o framework, mas não é legal manter os dados do projeto (chamados de contextos) junto com o próprio Webware, por isso é melhor criar um lugar separado para o seu projeto. O Webware tem um script para isso.

$ cd /usr/local/Webware-0.8.1
$ python bin/MakeAppWorkDir.py /home/ruda/MyWebKit

Substitua /home/ruda/MyWebKit para onde for mais ao seu gosto.

Servidor HTTP

Sim, precisa do Apache rodando, não esqueça. Outros servidores também são suportados, veja a documentação. O Webware inclui um servidor HTTP de brinquedo, para rodar é fácil

$ cd /usr/local/Webware-0.8.1/WebKit/Adapters
$ ./HTTPAdapter --host=localhost --port=80 --daemon

mas não use, é muito fraquinho.

Adaptadores

O adaptador é o que liga a requisição do cliente via browser com o servidor de aplicações. O servidor de aplicações roda em uma porta diferente da 80 e por padrão é a porta 8086.

Cliente (via browser)
 |
Servidor HTTP (porta 80)
 |
Adaptador
 |
AppServ (porta 8086)
  • wkcgi é um CGI feito em C. É rápido e simples de usar.

Para instalar:

$ cd /usr/local/Webware-0.8.1/WebKit/Adapters/wkcgi
$ make
$ cp wkcgi /var/www/cgi-bin/wkcgi.cgi

Obs 1: O aplicativo apxs é necessário para compilar os modulos do apache. Na distribução debian (e baseadas em .deb como o ubuntu) você pode encontra-lo no pacote apache-dev.

Obs 2: Se mesmo depois de instalar o apache-dev o make continuar reclamando verifique o caminho do apxs dentro do arquivo Makefile e se necessário altere para o caminho correto.

  • Webkit.cgi é um CGI feito em Python. Não use.

  • OneShot.cgi semelhante ao Webkit.cgi, muito útil durante a fase de desenvolvimento pois as páginas não ficam persistentes, elas são sempre relidas em cada leitura de página.

  • mod_webkit é um módulo para plugar diretamente no Apache. É o método mais eficiente.

Para instalar (usando a versão para apache 1.x):

$ cd /usr/local/Webware-0.8.1/WebKit/Adapters/mod_webkit
$ make
$ cp mod_webkit.so /usr/lib/apache/1.3/

Edite o arquivo de configuração do apache e acrescente:

LoadModule webkit_module /usr/lib/apache/1.3/mod_webkit.so
AddType text/psp .psp
AddHandler psp-handler .psp
<Location /wk>
  WKServer localhost 8086
  SetHandler webkit-handler
</Location>

Como Iniciar O Servidor De Alicações?

  • Se escolher o modo wkcgi

$ cd /home/ruda/MyWebKit
$ ./AppServ

Agora é só abrir um browser e apontar para a url http://localhost/cgi-bin/wkcgi.cgi

Como Parar O Servidor De Aplicações?

Basta matar o servidor AppServ, ^C no terminal que ele está rodando ou matar com kill <processo do AppServ>.

Tenho O Webware Instalado, E Agora?

  • Leia a documentação oficial que deve estar em /usr/local/Webware-0.8.1/Docs/ (comece pelo index.html).

  • Leia o Wiki do Webware http://wiki.w4py.org/

  • Comece modificando o /home/ruda/MyWebKit/MyContext/Main.py

Um pequeno Exemplo

Este exemplo substitui o /.../MyWebkit/MyContext/Main.py que foi criado conforme as instruções anteriores, talvez seja legal copiar o original para ter como referência.

   1 from WebKit.Page import Page
   2 
   3 class Main(Page):
   4     def writeContent(self, msg=''):
   5         fruits = self.session().value('fruits', [])
   6         
   7         self.writeln('<h1>Cesta de Frutas</h1>')
   8         
   9         if fruits:
  10             self.writeln('Disponível na cesta:<ul>')
  11             for fruit in fruits:
  12                 self.writeln('<li>' + fruit)
  13             self.writeln('</ul>')
  14         
  15         self.writeln('''
  16         <form action="Main" method="POST">
  17         <table>
  18         <tr>
  19           <td><input type="submit" name="_action_add" value="Adicionar">
  20           <td><input type="text" name="new_fruit">
  21         <tr>
  22           <td><input type="submit" name="_action_remove" value="Remover">
  23           <td><input type="text" name="remove_fruit">
  24         <tr>
  25           <td><input type="submit" name="_action_clear" value="Limpar"
  26           <td>
  27         </table>
  28         </form>
  29         ''')
  30         
  31         if msg:
  32             self.writeln('<small>Resultado da última operação: %s</small>'
  33                          % msg)
  34 
  35     def actions(self):
  36         return Page.actions(self) + ['add', 'remove', 'clear']
  37 
  38     def add(self):
  39         fruits = self.session().value('fruits', [])
  40         new_fruit = self.request().field('new_fruit')
  41         if not new_fruit in fruits:
  42             fruits.append(new_fruit)
  43             self.session().setValue('fruits', fruits)
  44             msg = 'Adicionei a fruta na cesta.'
  45         else:
  46             msg = 'A fruta já está na cesta.'
  47         self.writeContent(msg)
  48 
  49     def remove(self):
  50         fruits = self.session().value('fruits', [])
  51         rm_fruit = self.request().field('remove_fruit')
  52         if rm_fruit in fruits:
  53             fruits.remove(rm_fruit)
  54             self.session().setValue('fruits', fruits)
  55             msg = 'A fruta foi removida.'
  56         else:
  57             msg = 'A fruta não estava na cesta.'
  58         self.writeContent(msg)
  59 
  60     def clear(self):
  61         if self.session().hasValue('fruits'):
  62             self.session().delValue('fruits')
  63         self.writeContent('A cesta foi limpa.')

ou baixe o attachment:Main.py


RudaMoura