Почему служба развертывания dzango службы приложений Azure продолжает давать сбой?

Прошел 1 месяц, и я до сих пор не могу понять, что со мной или сервисом приложений в Azure.

Я использовал Python 2.7 и Django 1.11.3, с этими требованиями.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

Когда я выполняю развертывание с помощью локального репозитория Git в веб-службе Azure(Python2.7, Windows), кажется, что требования не устанавливаются.

Я пробовал wheel, но он ничего не делает, и через scm powershell мне не удалось установить ни одно из требований, например:

Python -m pip установить django

Это не дало мне ошибку разрешения.

1 ответ

Решение

В веб-приложениях Azure Python по умолчанию устанавливается по пути D:\Python27\ который не имеет права для пользователей выполнять какие-либо операции записи, такие как команда pip install <packages> установить пакеты Python для libs к тому же под тропой D:\home\,

Итак, сначала вам нужно установить новую среду выполнения Python по пути D:\home через расширения сайта Kudu, как показано на рисунке ниже.

Затем вы можете увидеть каталог Python в D:\home который у вас есть разрешение на операцию записи.

Для установки пакетов 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

Как сказано в официальном документе, для Troubleshooting - Package Installation, как показано ниже, как для пакета Pillow нужен компилятор для Си кода.

Устранение неполадок - установка пакета

Некоторые пакеты могут не устанавливаться с использованием pip при запуске в Azure. Может просто случиться так, что пакет недоступен в индексе пакетов Python. Возможно, требуется компилятор (компилятор недоступен на компьютере, на котором выполняется веб-приложение в службе приложений Azure).

Вам необходимо скачать файлы колеса пакета отсюда с помощью команды curl -o <wheel-file-name> <wheel-file-url> на Куду CMD, и установить их с помощью команды python -m pip install <wheel-file-name>,

После установки всех пакетов вы можете загрузить свое веб-приложение django в D:\home\site\wwwroot структура файла под этим путем выглядит как официальный пример, который включает эти каталоги app, <your-django-project-name> созданный 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>

Надеюсь, поможет. Любая проблема, пожалуйста, не стесняйтесь, дайте мне знать.

Другие вопросы по тегам