Как я могу решить 0x80070585 код ошибки в моем приложении Python Flask wfastcgi?
Я пытаюсь развернуть приложение Flask на IIS (обычно это делается в стеке Nginx/Gunicorn).
Мой стек
Я работаю с Python 3.7, установленным глобально, IIS 10 на Windows 10 pro.
Что я пробовал
- Активация службы CGI в IIS
- Установка wfastcgi по https://pypi.org/project/wfastcgi/
- Включение wfastcgi с
wfastcgi enable
(и сохранил вывод для файла конфигурации) - Развертывание моего приложения на
wwwroot/myapp
- Добавление
web.config
файл на этомmyapp
папка, которая выглядит так:
<configuration>
<system.webServer>
<handlers>
<add name="Python FastCGI"
path="*"
verb="*"
modules="FastCgiModule"
scriptProcessor="C:\Program Files\Python37\python.exe|C:\Program Files\Python37\Lib\site-packages\wfastcgi.py"
resourceType="Unspecified"
requireAccess="Script" />
</handlers>
</system.webServer>
<appSettings>
<!-- Required settings -->
<add key="WSGI_HANDLER" value="backend.wsgi.socketio" />
<add key="PYTHONPATH" value="C:\inetpub\wwwroot\myapp" />
</appSettings>
</configuration>
socketio
это имя моего приложения Flask, все нормально, когда я запускаю wsgi файл "standalone".
- Создание приложения в IIS, связанного с этой папкой с правильным физическим путем
во время тестирования параметров приложения, шаг аутентификации в порядке, шаг Авторизация выдает предупреждение, но не ошибку.
Результат
Когда я пытаюсь добраться до своего приложения, я получаю ошибку 500 HTTP с следующим кодом ошибки IIS 0x80070585.
Когда я "сломаю" мой web.config
файл (например, удаление тега close), IIS сообщает, что файл сформирован неправильно, поэтому файл доступен.
Так как ошибка, кажется, происходит от scriptProcessor, я дважды проверил, что оба C:\Program Files\Python37\python.exe
а также C:\Program Files\Python37\Lib\site-packages\wfastcgi.py
существовала. Могут ли IIS иметь проблемы с доступом?
Я пытался проверить журналы IIS, но это не совсем многословно. У меня есть только журналы HTTP-запросов.
Куда мне копать, чтобы найти больше логов?
Спасибо за помощь, обратите внимание, что я совершенно новичок в серверах IIS и Microsoft, поэтому я, возможно, пропустил что-то большое.
1 ответ
Поскольку Microsoft, похоже, отказывается от этого стека, единственное серьезное решение - перейти на активно поддерживаемое решение, такое как Nginx или Apache. Спасибо @Lex Li за ссылку на сообщение.