Wednesday, 28 July 2010

Behind the Wizard (Cherokee + Django)

前一篇中,介绍了如何在Cherokee Web Server中,通过其内置的Django Wizard,整合Django项目。在建立了一个虚拟路径之后,就马上能够提供Django项目的Web服务了。

Ubuntu 10.04-2010-07-26-13-04-11 这个Wizard做了哪些事情呢?

1. Rule

Ubuntu 10.04-2010-07-28-09-32-55虚拟路径/firstonez,是一个关于路径的规则。所有对/firstonez的访问,都要应用此规则。

2. Handler

Ubuntu 10.04-2010-07-28-09-38-37 于此规则相对应的Handler,采用SCGI方式。即Cherokee Web Server通过SCGI协议,将对/firstonez的访问,转移给Django项目。具体的SCGI设置如下:

Ubuntu 10.04-2010-07-28-09-44-38 这里定义了SCGI所连接的信息源头(Information Sources),Django Wizard自动建立了一个名为“Django 11”的信息源,其对应的地址和端口为:127.0.0.1:43095。这里的端口号,是随机选取的空余端口。

3. Information Source

接下来,看看这个Information Source包含了哪些内容。

Ubuntu 10.04-2010-07-28-09-51-28“ Django 11”这个信息源,是在本机(localhost)运行的一个解析器。连接参数127.0.0.1:43095。解析器命令为:python /var/www/firstonez/manage.py runfcgiocol=scgi host=127.0.0.1 port=43095

4. Running

前一篇可以知道,在完成上述设置之后,就可以直接访问到Django项目页面。并没有预先,以SCGI方式启动Django项目。通过Port Scan的检查可以知道,在访问http://127.0.0.1/firstonez之前,端口43095并没有打开;一旦访问了这个URL之后,端口43095就“自动”打开了。为什么呢?

Cherokee Web Server,在企图转移访问到Information Source的时候,发现相应的端口未打开,会主动调用解析器启动命令,开启Django服务。也就是说,如果没有访问,Django项目就不会启动,端口也不会被打开。这样,就不需要在系统里,准备Django项目的启动脚本。Cherokee Web Server自己处理这一切。当然,看上去,Cherokee可以启动,但不能停止Django项目的运行。

5. Django Project

前一篇中,是在/var/www下,通过sudo方式,建立的一个新的Django项目。在生产环境中,这个往往是不现实的。其实也是没有必要的,完全可以在自己的home里面或是其他地方,建立自己的Django项目。

同时,在用Django Wizard建立虚拟路径的时候,虚拟路径(Web Directory)也不必和Django项目名称一样。

0 Comments:

Post a Comment

<< Home