为什么azure app服务django部署失败?

时间:2017-09-27 06:26:49

标签: python django azure azure-web-app-service

已经过了1个月,我仍然无法弄清楚我或者天蓝色应用服务有什么问题。

我使用了python 2.7和django 1.11.3,带有这个requirements.txt

  

beautifulsoup4 == 4.6.0   CERTIFI == 2017.7.27.1   chardet的== 3.0.4   Django的== 1.11.5   IDNA == 2.6   olefile == 0.44   枕头== 4.2.1   pytz == 2017.2   请求== 2.18.4   urllib3 == 1.22

当我使用Local Git Repository部署到Azure Web服务(Python2.7,Windows)时,它似乎无法安装这些要求。

我尝试过滚轮,但它没有做任何事情,并且通过scm powershell我没有安装任何要求,例如:

  

Python -m pip install django

它没有给我任何许可错误。

1 个答案:

答案 0 :(得分:1)

在Azure WebApps上,Python默认安装在路径D:\Python27\上,该路径没有权限允许用户执行任何写操作,如命令pip install <packages>,以便将Python包安装到libs,除此之外路径D:\home\

首先,您需要通过Kudu站点扩展在路径D:\home上安装新的Python运行时,如下图所示。

please watch it here

然后,您可以在D:\home下看到具有写入操作权限的Python目录。

enter image description here

要安装所需的Python软件包,请执行以下命令安装pip工具。

D:\home> cd Python27
D:\home\Python27> curl -o get-pip.py https://bootstrap.pypa.io/get-pip.py
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed

100 1558k  100 1558k    0     0  5069k      0 --:--:-- --:--:-- --:--:-- 6546k
D:\home\Python27> python get-pip.py
Requirement already up-to-date: pip in d:\home\python27\lib\site-packages
Collecting wheel
  Downloading wheel-0.30.0-py2.py3-none-any.whl (49kB)
Installing collected packages: wheel
Successfully installed wheel-0.30.0

接下来,您可以通过python -m pip install <package-name>安装这些软件包,例如python -m pip install django==1.11.5,如下所示。

D:\home\Python27> python -m pip install django==1.11.5
Collecting django==1.11.5
  Downloading Django-1.11.5-py2.py3-none-any.whl (6.9MB)
Collecting pytz (from django==1.11.5)
  Downloading pytz-2017.2-py2.py3-none-any.whl (484kB)
Installing collected packages: pytz, django

正如官方文档所述,对于enter image description here,如下所示,与包Pillow类似,需要编译C代码。

  

故障排除 - 软件包安装

     

在Azure上运行时,某些程序包可能无法使用pip进行安装。可能只是Python包索引上没有包。可能需要编译器(在Azure App Service中运行Web应用程序的计算机上没有编译器。)

您需要通过Kudu CMD上的命令curl -o <wheel-file-name> <wheel-file-url>Troubleshooting - Package Installation下载包轮文件,并通过命令python -m pip install <wheel-file-name>安装它们。

安装完所有软件包后,您可以将django webapp上传到D:\home\site\wwwroot,此路径下的文件结构类似于包含这些目录app<your-django-project-name>的官方here }由PTVS在VS 2017上创建。

最后,请配置您的web.config文件以使您的应用有效。

<configuration>
  <appSettings>
    <add key="WSGI_HANDLER" value="<your-django-project-name>.wsgi.application"/>
    <add key="PYTHONPATH" value="D:\home\site\wwwroot"/>
    <add key="WSGI_LOG" value="D:\home\LogFiles\wfastcgi.log"/>
  </appSettings>
  <system.webServer>
    <handlers>
      <add name="PythonHandler" path="handler.fcgi" verb="*" modules="FastCgiModule" scriptProcessor="D:\home\Python27\python.exe|D:\home\Python27\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>

希望它有所帮助。如有任何疑虑,请随时告诉我。