如何将Django / WSGI部署为具有不同Python运行时的azure webapp?

时间:2017-06-06 11:36:05

标签: python django azure iis azure-web-sites

我正在尝试在Microsoft Azure webapp实例(它是托管的Windows VM)上部署Django webapp。这里的文档,

https://docs.microsoft.com/en-us/azure/app-service-web/web-sites-python-configure

描述了如何使用Python 2.7或Python 3.4部署应用程序。我正在尝试部署使用Python 3.6构建的应用程序(不是Azure支持的运行时开箱即用)。我使用Azure的“站点扩展”功能安装了运行时。这是扩展的链接(我认为),

https://www.siteextensions.net/packages/python361x86/

我主要使用Apache工作在Linux系统上。我面临的困难是如何在Azure实例上配置IIS以使用Python 3.6来运行我的django webapp(它可以使用runserver命令在我的开发系统上运行)。遗憾的是,我无法请求在Azure上使用Linux VM(业务约束)。

我遇到的一个问题是如何在项目中编写web.config文件。参考Python3.4使用了一个virtualenv,奇怪的是,在具有站点扩展名的Python上显式禁用了它(参考:https://github.com/Azure/azure-python-siteextensions/issues/6)。

我遇到的另一个问题是我想使用女服务员WSGI而不是FastCGI(参考:http://docs.pylonsproject.org/projects/waitress/en/latest/)。

有人可以指向我使用Python 3.6在azure上运行的web.config + python wsgi script组合吗?也欢迎提出替代建议。

1 个答案:

答案 0 :(得分:0)

请参阅文档Web.configConfiguring Python with Azure App Service Web Apps部分中针对Python 3.4的示例web.config的内容,以使用下面的这些内容而不是相关内容,如果您按照tutorial创建您的Django项目。

  1. 使用<add key="WSGI_ALT_VIRTUALENV_HANDLER" value="django.core.wsgi.get_wsgi_application()" />代替<add key="WSGI_ALT_VIRTUALENV_HANDLER" value="app.wsgi_app" />

  2. 使用

    <add name="Python FastCGI" path="handler.fcgi" verb="*" modules="FastCgiModule"
         scriptProcessor="D:\home\Python36\python.exe|D:\home\Python36\Scripts\wfastcgi.py"
         resourceType="Unspecified" requireAccess="Script" />
    

    而不是xml路径的内容<system.webServer> / <handlers>

  3. GitHub上有一个Azure官方sample Django project,您也可以参考。