Luo Weifeng 2011-6-19
关于Quixote的详细信息不了解的童鞋可以去官方网站看看:http://www.quixote.ca
这里的快速实例使用的方案是:
这里我们选择lighttpd。
注意:我使用的ubuntu标准版,如果使用window,配置是不同的,不在本文叙述中。
1. 首先安装Quixote
$sudo apt-get install python-quixote
2. SCGI模块
$sudo apt-get install python-scgi
3. lighttpd
$sudo apt-get install lighttpd
(注:如果您使用的apache服务器而不是lighttpd,可能需要的是 libapache2-mod-scgi )
为了测试方便我们假设在您的主目录下存在一个目录叫workspace,以下是我们这个小程序的目录结构。
workspace:
-------------lighttpd.conf
-------------scgi-server.py
-------------app:
------------- __init__.py
-------------hello:
------------- __init__.py
------------- hello_ui.ptl
测试用代码:
lighttpd.conf
server.modules = ( "mod_scgi", ) server.document-root = "." server.port = 8080 scgi.server = ( "/" => ( "localhost" => ( "host" => "127.0.0.1", "port" => 4000, "check-local" => "disable", ) ) )
scgi-server.py
#!python #!/usr/bin/env python from scgi.quixote_handler import QuixoteHandler, main from quixote import enable_ptl enable_ptl() class MyHandler(QuixoteHandler): root_namespace = 'app' if __name__ == '__main__': main(MyHandler)
app/__init__.py
#!python # app/__init__.py _q_exports = ['hello']
app/hello/__init__.py
#!python # app/hello/__init__.py from app.hello.hello_ui import say_hello _q_exports = [] def _q_index(request): return say_hello("everyone") def _q_lookup(request, name): return hello def hello(request): return say_hello(name)
app/hello/hello_ui.ptl
#!python # app/hello/hello_ui.ptl def say_hello [html] (name): header(title="Hello") "Hello, " """<em class="name">%s</em>!""" % name footer() def header [html] (title): """<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>%s</title> </head> <body> """ % title def footer [html] (): """</body> </html> """
测试运行
$ python scgi-server.py
$ /usr/sbin/lighttpd -f lighttpd.conf
|