CGI — Flask 文档

来自菜鸟教程
Flask/docs/2.0.x/deploying/cgi
跳转至:导航、​搜索

电脑动画

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

这也是您可以在 Google 的 App Engine 上使用 Flask 应用程序的方式,在类似 CGI 的环境中执行。

当心

请提前确保您的应用程序文件中的任何 app.run() 调用都在 if __name__ == '__main__': 块内或移动到单独的文件中。 只要确保它没有被调用,因为这将始终启动一个本地 WSGI 服务器,如果我们将该应用程序部署到 CGI/应用程序引擎,我们不需要它。

使用 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]

有关更多信息,请参阅您的网络服务器的文档。