CGI,公用网关接口,是一种提供动态网站内容的方法。最初,网站主要提供静态信息;也就是说,在作者手动更新网页之前,每个访问者看到的页面都一样。作者更新后,每个访问者会看到同样的更新。然而,从互联网一开始,开发者就想给用户提供动态信息。CGI就是最常用的方法之一。
CGI中的“common”表示两个意思:它是服务器独立和语言中立的。也就是说,CGI脚本可以运行在任何支持CGI的Web服务器上,并且CGI脚本是可以由任何语言编写的。CGI既不是一种网络协议,也不是它本身的一种库。而是一种说明信息是如何在Web服务器和产生数据的程序之间交换信息的说明书。可以被CGI编译并被Web服务器执行的程序一般被称为CGI脚本。
CGI通常会和HTML混和在一起。本章集中考虑使用Python编写CGI脚本;如果您不熟悉HTML和HTML forms,请参考HTML说明。
CGI vs. 其他技术
CGI是一种流行的产生动态网页和网站的方法。几乎所有流行的Web服务器和编程语言都支持CGI。它通常不需要在服务器端做太多的配置,设置起来也很容易。然而,它也有一些问题,最显著的就是性能。如果需要访问数据库的话,性能会更差。为了解决这个问题,也产生了一些新技术,这些技术在牺牲容量的情况下可以大大提高性能。mod_python就是其中的一种技术,我们将在第19章中讨论。要使用mod_python,您需要在Apache Web服务器上运行,并且用Python编写程序。
18.1 设置CGI
和本书中其他的例子不同,本章中的例子是不能在命令行中执行的。CGI脚本是运行在Web服务器上的。
通常Web服务器需要设置成可以执行CGI脚本。它们经常出于安全的原因会限制CGI脚本。例如,CGI脚本需要放在一个特定的目录下,并使用特定的文件扩展名,以及被设置成可以执行。配置这些的过程因服务器的不同而不同,请查看您的服务器文档来获得更多的信息。
如果您还没有Web服务器且想能尽快运行CGI脚本,Python的CGIHTTPServer模块提供了一个运行服务器便捷的方法。第17章提供了一个用Python编写的简单的Web服务器,可以执行CGI脚本。它要求脚本被放在一个叫做cgi-bin的目录下,并具有可执行权限。
如果您正运行Apache Web服务器,您可以通过修改设置而改变CGI脚本的目录,例如ScriptAlias/webpath/usr/local/cgi。如果您是这么设置的,您就可以通过http://localhost/ webpath/script.cgi这个地址来访问您的脚本,它会载入/usr/local/cgi/script.cgi。







