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