如何将Django/WSGI部署为具有不同Python运行时的Azure Web应用程序?



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

https://learn.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组合吗?也欢迎其他建议。

请参考文档第Web.config节中 Python 3.4 的示例web.config的内容,如果您按照教程创建 Django 项目,Configuring Python with Azure App Service Web Apps使用这些内容而不是相关内容。

  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:homePython36python.exe|D:homePython36Scriptswfastcgi.py"
    resourceType="Unspecified" requireAccess="Script" />
    

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

GitHub上有一个Azure官方示例Django项目,你也可以参考。

最新更新