Saturday, 25 March 2006

SCGI on Windows

原来也曾尝试过在Windows下面安装SCGI,失败。原始的SCGI for Python中间包含了一个C程序,是针对OpenBSD/FreeBSD的,其中关于socket的头文件里的一些底层结构和函数,自然是针对Unix-like系统的。其结果是,在Windows下面,不管是VC6(for Python 2.3),还是VC7(for Python 2.4),都是无法编译通过。这需要参照Windows SDK进行改编。文件并不大,不过要同时参考Unix和Windows的相关细节,还是需要花些时间的。

xlp223在其blog上的一篇文章,是个很好的发现。Pylons App透过Flup提供SCGI Service,Flup自身实现了SCGI协议,以及FastCGI和AJP,且还有多线程和多进程之分。使用Flup,就不需要编译独立的SCGI。这一点太重要了,突破了以往惯性思维的误区。

好了,现在可以在Windows里轻松架设Lighttpd+SCGI for Pylons了。Pylons应用的配置,和以前在Linux下的一样。Lighttpd for Windows已经包含了SCGI模块。Lighttpd的配置,需要修改C:\lighttpd\etc\lighttpd.conf文件。

server.modules              = (
...
"mod_scgi",
...
)
...
scgi.server = ( "/pyapp" => ((
"host" => "127.0.0.1",
"port" => 5001,
"check-local" => "disable"
)) )
scgi.debug=0

这里的host和port对应着Pylons App的相应设置,Pylons App中包含了prefix = /pyapp选项。

从配置的形式上看,SCGI是可以进行分布式部署的,Web Server和Web App不必在同一台机器上。在这种情况下,Pylons App配置中,[server:main]下的host就不能为127.0.0.1。一旦这样设置了,外部访问不到,Web Server就连不过去了。也不必非要用实际IP地址,设成0.0.0.0就行了。

0 Comments:

Post a Comment

<< Home