将Django应用程序部署到Azure VS2017 - 自定义python

时间:2017-08-27 20:16:41

标签: python django visual-studio azure

我在Visual Studio 2017中使用Django创建了一个简单的应用程序,利用Visual Studio中的默认模板(文件 - 新建 - 项目 - python - django Web应用程序)。我已经通过azure门户安装了django PTVS,并添加了一个自定义的python扩展。该应用程序在本地正常运行,但在我通过Visual Studio将其部署到Azure后,我只能访问显示的页面:

TranslucentWorks(30, Color.Purple, Line1Lbl, Line2Lbl)

我已阅读了几篇帖子(Deploy a simple VS2017 Django app to Azure - server error),并按照以下教程进行了操作:https://docs.microsoft.com/en-us/visualstudio/python/managing-python-on-azure-app-service

我的web.config看起来如下:

'Your App Service app has been created.'

更新:

我设法让它工作,问题是它仍然继续使用带有python 3.4的env,似乎有一个包依赖,需要更新版本的python我因此更改了应用程序设置如下。

<?xml version="1.0"?>
<configuration>
  <system.webServer>
    <modules runAllManagedModulesForAllRequests="true" />
    <handlers>
      <remove name="Python27_via_FastCGI" />
      <remove name="Python34_via_FastCGI" />
      <add name="PythonHandler" path="handler.fcgi" verb="*" modules="FastCgiModule" scriptProcessor="D:\home\python361x64\python.exe|D:\home\python361x64\wfastcgi.py" resourceType="Unspecified" requireAccess="Script"/>
    </handlers>
  </system.webServer>
  <system.web>
    <compilation debug="true" targetFramework="4.0" />
  </system.web>
  <appSettings>
    <add key="PYTHONPATH" value="%SystemDrive%\home\site\wwwroot" />
    <add key="WSGI_HANDLER" value="DjangoWebProject2.wsgi.application()"/>
    <add key="DJANGO_SETTINGS_MODULE" value="app.settings" />
  </appSettings>
</configuration>

1 个答案:

答案 0 :(得分:0)

我尝试重现您的问题,但失败了。我的Django应用创建了&amp;由VS2017部署到Azure WebApps并且它可以工作。有一些类似的SO线程与你的问题相同。

  1. Only getting Your App Service app has been created - after deploying to azure
  2. Django web app deploy in Azure via Visual Studio 2017
  3. 您可以按照上述主题再试一次。您也可以参考the official tutorial for Django创建django应用程序并将其部署到Azure,然后更改web.config以使用Python 3.6.1扩展。

    以下是我的web.config文件的内容,如下所示。

    <?xml version="1.0"?>
    <!-- Generated web.config for Microsoft Azure. Remove this comment to prevent
         modifications being overwritten when publishing the project.
    -->
    <configuration>
      <system.diagnostics>
        <trace>
          <listeners>
            <add type="Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener, Microsoft.WindowsAzure.Diagnostics, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" name="AzureDiagnostics">
              <filter type="" />
            </add>
          </listeners>
        </trace>
      </system.diagnostics>
      <appSettings>
        <add key="WSGI_ALT_VIRTUALENV_HANDLER" value="django.core.wsgi.get_wsgi_application()" />
        <add key="WSGI_ALT_VIRTUALENV_ACTIVATE_THIS" value="D:\home\site\wwwroot\env\Scripts\activate_this.py" />
        <add key="WSGI_HANDLER" value="ptvs_virtualenv_proxy.get_virtualenv_handler()" />
        <add key="PYTHONPATH" value="D:\home\site\wwwroot" />
        <add key="DJANGO_SETTINGS_MODULE" value="JayGongDjango.settings" />
      </appSettings>
      <system.web>
        <compilation debug="true" targetFramework="4.0" />
      </system.web>
      <system.webServer>
        <modules runAllManagedModulesForAllRequests="true" />
        <handlers>
          <add name="PythonHandler" path="handler.fcgi" verb="*" modules="FastCgiModule" scriptProcessor="D:\home\python361x64\python.exe|D:\home\python361x64\wfastcgi.py" resourceType="Unspecified" requireAccess="Script"/>
        </handlers>
        <rewrite>
          <rules>
            <rule name="Static Files" stopProcessing="true">
              <conditions>
                <add input="true" pattern="false" />
              </conditions>
            </rule>
            <rule name="Configure Python" stopProcessing="true">
              <match url="(.*)" ignoreCase="false" />
              <conditions>
                <add input="{REQUEST_URI}" pattern="^/static/.*" ignoreCase="true" negate="true" />
              </conditions>
              <action type="Rewrite" url="handler.fcgi/{R:1}" appendQueryString="true" />
            </rule>
          </rules>
        </rewrite>
      </system.webServer>
    </configuration>
    

    就像摘要一样,问题是项目使用带有python 3.4的env。只需将其更改为新版本的python解释器。

    web.config设置:

    <appSettings> 
      <add key="WSGI_HANDLER" value="myApp.wsgi.application"/> 
      <add key="PYTHONPATH" value="D:\home\site\wwwroot"/> 
      <add key="WSGI_LOG" value="D:\home\LogFiles\wfastcgi.log"/> 
      <add key="PYTHONPATH" value="D:\home\site\wwwroot" /> 
      <add key="DJANGO_SETTINGS_MODULE" value="myApp.settings" /> 
    </appSettings>
    

    希望它有所帮助。