CGI

如果所有其它的部署方式都不能奏效,那么 CGI 毫无疑问会奏效。 CGI 被 所有主流服务器支持,但通常性能欠佳。

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

小心

请提前确保你在应用文件中的任何 app.run() 调用在 if __name__ == '__main__': 块中或是移到一个独立的文件。 这是因为它总会启动一个本地 的 WSGI 服务器,并且我们在部署应用到 uWSGI 时不需要它。

使用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 服务器的文档。