如何在Windows Azure上部署Flask+ Python应用程序?
我最近用Flask和Python开发了一个应用程序,数据库用的是PostgreSQL。
我该怎么把我的应用上传到Windows Azure上呢?Windows Azure支持Flask吗?在Windows Azure的虚拟机上安装Flask应用值得吗?
很多教程都教你用Visual Studio和IPython搭配Django,但我不想这样做。
有没有什么指南或者教程可以让我入门呢?
2 个回答
假设你想创建一个云服务,最简单的开始方式就是使用Windows Azure PowerShell和新的模板功能。这让你可以为自己的角色创建自定义的框架。你只需要把安装Python和Flask运行环境所需的设置放在模板文件夹里,然后用Publish-AzureServiceProject命令把它发布到Azure上。
Azure已经内置了对Django网络角色的支持,所以你可以从这个基础上开始,然后做一些修改来支持Flask。
另一种选择是使用Linux虚拟机,你可以通过SSH自己设置。使用PowerShell或者跨平台的命令行工具会对你很有帮助,具体可以参考这个链接:http://www.windowsazure.com/en-us/develop/nodejs/tutorials/linux-virtual-machine/,里面有关于虚拟机的详细介绍。
截至2013年7月,Azure上有一个Flask的模板。
你可以先从这个模板开始。把它复制到你的电脑上。根目录下有一些IIS的设置,还有一个在FlaskApplication
文件夹里的hello world Flask应用。你可以在电脑上用python __init__.py
来测试这个Flask应用。我不太清楚怎么在本地测试IIS网站。
我也不太明白依赖关系是怎么工作的。模板里有一个Pip的requirements.txt
文件,还有Flask和其他几个库的源代码。
我把我在Heroku上的一个应用复制到了Azure上。最后让它运行起来了。最大的困难是找到并查看日志(你需要在IIS管理器里开启所有的日志记录,然后访问一个FTP网站,日志会藏在一些奇怪名字的xml文件里),这让两个小问题的解决时间比预期的要长。
- 工作目录和Heroku不一样(在IIS网站的根目录,而不是Flask网站的根目录)
- 这个模板里的
web.config
有点问题,会悄悄地删除get请求中的查询字符串
这就是问题所在
<action type="Rewrite" url="handler.fcgi/{R:1}" appendQueryString="false" />