CGI

如果所有其他部署方法都不起作用,那么CGI肯定会起作用。所有主要服务器都支持CGI,但通常性能不理想。

这也是在 Google 的 App Engine 使用 Flask 应用的方法,其执行方式类似于 CGI 环境。

当心

请务必把 app.run() 放在 if __name__ == '__main__': 内部或 者放在单独的文件中,这样可以保证它不会被调用。因为,每调用一次就会 开启一个本地 WSGI 服务器。当我们使用 CGI 或 App Engine 部署应用时, 不需要使用本地服务器。

使用CGI,您还必须确保您的代码不包含任何 print 陈述,或者 sys.stdout 被重载,不会写入 HTTP 响应中。

创建`.cgi`文件

首先,您需要创建CGI应用程序文件。让我们称之为 yourapplication.cgi ::

#!/usr/bin/python
from wsgiref.handlers import CGIHandler
from yourapplication import app

CGIHandler().run(app)

服务器设置

通常有两种配置服务器的方法。一种是把 .cgi 复制为 cgi-bin (并且 使用 mod_rewrite 或其他类似东西来改写 URL );另一种是把服务器直接指向 文件。

例如,在Apache中,您可以将类似这样的内容放入配置中:

ScriptAlias /app /path/to/the/application.cgi

在共享的网络服务器上,你可能无法变动 Apache 配置。在这种情况下,你可以使用 你的公共目录中的 .htaccess 文件。但是 ScriptAlias 指令会失效:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f # Don't interfere with static files
RewriteRule ^(.*)$ /path/to/the/application.cgi/$1 [L]

有关详细信息,请参阅Web服务器的文档。