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