Tamanho: 1714
Comentário:
|
Tamanho: 5565
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 Pyhton. 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: |
= Aonde 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. | * '''Webkit.cgi''' é um CGI feito em Python. Não use. |
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. |
* '''!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 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. | * '''mod_webkit''' é um módulo para plugar diretamente no Apache. É o método mais eficiente. |
Linha 52: | Linha 65: |
= Iniciar o WebKit = | 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/ }}} |
Linha 54: | Linha 72: |
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 85: |
Linha 57: | Linha 86: |
$ cd Webware-0.8.1/WebKit | $ cd /home/ruda/MyWebKit |
Linha 63: | Linha 92: |
* 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 95: |
= 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
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