Почему служба развертывания 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>
Надеюсь, поможет. Любая проблема, пожалуйста, не стесняйтесь, дайте мне знать.