Не удается найти обработчик scriptprocessor в конфигурации приложения fastcgi
Может ли кто-нибудь помочь мне получить приложение Flask, работающее на IIS 6? Я попытался использовать isapi-wsgi, но когда я посещаю адрес виртуального каталога, я получаю страницу с надписью "Указанный модуль не может быть найден". Существуют ли другие варианты для этого?
Ниже представлен Python script, который я написал для isapi-wsgi. Виртуальный каталог был создан, и все было нормально в диспетчере IIS, но сайт не работал.
ОТВЕТЫ
Ответ 1
Шаг 1: Установка обязательных двоичных файлов
- Установить Python (2.7 или 3.x - я использовал 3.3)
- Установить pip-Win (я использовал версию 1.6)
- Установить pywin32 (я использовал версию 218)
- Установите расширение IIS FastCGI с помощью fcgisetup 1.5
Шаг 2: Установка дополнительных двоичных пакетов
Я установил pyodbc с помощью установщика .exe с этого сайта. Для установки из источника (например, для установки в виртуальную среду) требуется компилятор C/С++.
Шаг 3: Получите копию wfastcgi.py
Выберите версию, которая будет работать для вас, предпочтительно, которая поддерживает Python 3.3 (я использовал Дэвид Эббо). Вам может понадобиться "официальная" версия отсюда.
Установите wfastcgi.py script в C:\Inetpub\wwwroot и убедитесь, что учетная запись, которая будет обслуживать ваше приложение (по умолчанию "Сетевая служба" ), имеет доступ к ней.
Шаг 4: Установите virtualenv В пакеты сайта
(если вы используете Python 3.3 и все установлено в местоположении по умолчанию)
Шаг 5: установите приложение с флягой
Вы можете установить приложение практически в любом месте системы. Вы можете установить его под C:\Inetpub . В этом уроке мы будем называть корневую папку вашего приложения install %APPROOT% . (Не помещайте кавычки в переменную окружения.)
Убедитесь, что учетная запись, которая будет обслуживать ваше приложение (по умолчанию "Сетевая служба" ), имеет доступ для чтения ко всем файлам script. Эта команда:
предоставит вашему каталогу приложений следующие разрешения:
- BUILTIN\Administrators: Полный контроль над этой папкой, вложенными папками и файлами
- CREATOR OWNER: Полный доступ только для подпапок и файлов
- NT AUTHORITY\NETWORK SERVICE: Разрешения для чтения для этой папки, подпапок и файлов
- NT AUTHORITY\SYSTEM: полный контроль над этой папкой, вложенными папками и файлами
Добавьте любую локальную конфигурацию (мое приложение использует файл local.cnf, который игнорируется системой управления версиями) - например. URL-адреса базы данных.
Убедитесь, что ваше приложение содержит Web.config файл в %APPROOT% - см. раздел ниже для информации о формате файла.
Шаг 6: Создайте виртуальную виртуальную машину для вашего приложения
(Выберите другое имя, кроме env , если ваше приложение уже использует этот каталог.)
Шаг 7: установите пакеты, необходимые вашему приложению для virtualenv
(Мой проект хранит спецификацию требований в файле с именем Packages .)
Шаг 8. Создание веб-сайта или виртуального каталога для вашего приложения
Предоставьте разрешения Прочитать и script (Запуск сценариев) для node.
Шаг 9: Настроить fcgiext.ini
Этот файл находится в том же каталоге, что и fcgiext.dll , установленном на шаге 1 (по умолчанию %SYSTEMROOT%\system32\inetsrv ).
При настройке этого файла вам нужно несколько параметров:
- : числовой идентификатор сайта, который вы можете найти на панели подробных сведений (в правой части) диспетчера служб IIS, когда выбрано "Веб-узлы" из дерева в левой части окна.
- : имя раздела в fcgiext.ini , которое предоставляет параметры для обработчика FastCGI (ISAPI). Вы выбираете это значение - выберите то, что представляет ваше приложение.
- : для виртуального каталога, путь URL-адреса в веб-сайте к виртуальному каталогу, который будет обрабатываться.
- : путь к корневому каталогу вашего приложения.
Используйте эти параметры для:
Сопоставьте запросы FastCGI с разделом обработки:
- Для всего веб-сайта добавьте *: = в раздел [Types] .
- Для виртуального каталога добавьте *:/lm/w3svc/ /root/ = в раздел [Types] .
Добавьте раздел обработки ( [ ] ) с параметрами для этого приложения (полная ссылка):
- ExePath= \env\python.exe
- Arguments=C:\Inetpub\wwwroot\wfastcgi.py (или там, где установлен wfastcgi.py адаптер script)
- EnvironmentVars=ENV_VAR1:value,ENV_VAR2:value,etc. (см. полную ссылку для правил цитирования). Это хорошее место для установки переменной WSGI_LOG - убедитесь, что учетная запись, обслуживающая сайт ( "Сетевая служба" по умолчанию) имеет права на запись для файла и ( если файл не существует), чтобы добавить файл в содержащийся каталог.
Шаг 10: настройка обработки FastCGI для целевых URL
Используя диспетчер служб IIS, выберите "Свойства. " в контекстном меню (<имя_пользователя > или веб-сайта), которое будет обслуживаться вашим флеш-приложением, и:
На вкладке "Домашний каталог" (Веб-сайт) или "Виртуальный каталог" (Виртуальный каталог) нажмите кнопку "Конфигурация. ".
В разделе "Карты подстановочных приложений" используйте кнопку "Вставить. ", чтобы добавить сопоставление подстановочных знаков:
- Исполняемый файл - это DLL-расширение FastCGI, установленное на шаге 1. Его местоположение по умолчанию - %SYSTEMROOT%\system32\inetsrv\fcgiext.dll .
- Убедитесь, что "Проверить, что файл существует" не отмечен. Приложения Flask выполняют свою собственную маршрутизацию, которая не обязательно имеет какое-либо отношение к файлам на диске.
Этот файл (в этой настройке) читается wfastcgi.py , не по IIS.
<add> элементы добавляют переменные среды ( os.environ в Python).
WSGI_HANDLER должен быть указан - он сообщает wfastcgi.py , как найти объект приложения WSGI. Если значение заканчивается на "()", wfastcgi.py вызовет именованный объект, ожидая, что он вернет объект приложения WSGI.
PYTHONPATH обрабатывается специально - wfastcgi.py выполняет (переменную) переменную расширения (используя стандартную номенклатуру Windows %VAR% ) по значению PYTHONPATH , затем разбивает результат на точки с запятой и добавляет записи до sys.path перед вызовом приложения WSGI. Поскольку wfastcgi.py изменяет текущий каталог на путь, указанный в качестве локального пути к веб-сайту или виртуальному каталогу, перед импортом модуля, содержащего объект приложения WSGI, включая пустую строку в PYTHONPATH, приведет к тому, что поиск будет включать в себя ваш каталог приложений Flask в качестве отправной точки. Вы также можете установить PYTHONPATH в fcgiext.ini (в этом случае он будет включен в sys.path интерпретатором, а затем снова на wfastcgi.py ).
WSGI_RESTART_FILE_REGEX дает регулярное выражение Python, используемое для фильтрации уведомлений об изменении файла для путей, которые должны приводить к перезагрузке процесса обработчика FastCGI. Установите это, чтобы инициировать изменение исходных файлов или файлов конфигурации. Я использую (?i).*\.(py|cnf|config)$ .
WSGI_LOG может быть установлен здесь, но я думаю, что он лучше установлен в fcgiext.ini .
Некоторые вещи с FastCGI сильно изменились с IIS 7. Начиная с этой версии, FastCGI поддерживает непосредственно через IIS и не настраивается через расширение (то есть, шаг 1.4 не нужен, а fcgiext.ini не контролирует поведение FastCGI для IIS 7 +, и нет необходимости создавать/редактировать его). Вместо этого убедитесь, что CGI включен в Информационные службы Интернета в Панели управления > Программы и функции > Включение и отключение функций Windows. p >
Web.config
IIS 7 - первая версия IIS для чтения настроек конфигурации, связанных с FastCGI, из файла Web.config . Ваш Web.config файл должен содержать в элементе <configuration> элемент <system.webServer> , содержащий элемент <handlers> , содержащий элемент <add> с атрибутами:
- путь: *
- глагол: *
- модули: FastCgiModule
- resourceType: Unspecified
- requireAccess: Script
- scriptProcessor: сложный
Атрибут scriptProcessor
Этот атрибут элемента <add> должен содержать полный путь к файлу-интерпретатору Python .exe , который вы хотите использовать (тот, который находится в подпапке Scripts вашего виртуального винта Python), а затем | , а затем полный путь к файлу wfastcgi.py , который вы используете. Поскольку эти пути зависят от настройки компьютера, на котором работает ваше приложение, вы можете захотеть, чтобы этот атрибут был установлен как часть процесса развертывания.
Настройка сервера IIS
- В inetmgr нажмите на сервере node в дереве, а затем выберите Настройки FastCGI в центральной панели. Появится список пар "исполняемый/аргумент".
- Добавьте запись для полных путей к вашим python.exe и wfastcgi.py , которые вы используете. Оба должны быть указаны так же, как они отображаются в элементе <handlers>/<add> в Web.config .
- Обязательно настройте переменную среды PYTHONPATH в новой записи приложения FastCGI, чтобы включить корень вашей прикладной кодовой базы. Совет по добавлению пустой PYTHONPATH записи в <applicationSettings> вашего Web.config может не применяться к этой версии IIS.
Ответ 2
Просмотрите страницу Django на эту тему. Это помогло мне создать рабочий проект Django, но он не должен отличаться для приложения Flask.
Ответ 3
Я никогда не использую IIS, но IIS поддерживает CGI-шлюз, поэтому вы должны иметь возможность адаптировать CGI с WSGI.
Чтобы запустить WSGI как CGI script, вы можете использовать CGIHandler в стандартной библиотеке Python.
Этот раздел содержит инструкции по настройке Internet Information Services (IIS) 7.0 и более поздних версий для работы с PHP на Microsoft Windows Vista SP1, Windows 7, Windows Server 2008 и Windows Server 2008 R2. Для получения инструкций по настройке IIS 5.1 и IIS 6.0 на Windows XP и Windows Server 2003 перейдите на страницу Microsoft IIS 5.1 и IIS 6.0.
Включение поддержки FastCGI в IIS
Модуль FastCGI при установке IIS по умолчанию отключён. Способы включения его различаются в зависимости от версии используемой Windows.
Для включения поддержки FastCGI на Windows Vista SP1 и Windows 7:
В меню "Пуск" выберите пункт "Выполнить", в появившемся окне введите с клавиатуры "optionalfeatures.exe" и нажмите "Ok";
В открывшемся окне "Компоненты Windows" раскройте папку "Службы IIS", "Службы интернета", "Компоненты разработки приложений" и установите галочку напротив "CGI";
Нажмите OK и ждите окончания процесса установки.
Чтобы включить поддержку FastCGI на Windows Server 2008 и Windows Server 2008 R2:
В Windows откройте меню Пуск выберите пункт "Выполнить:", наберите с клавиатуры "CompMgmtLauncher" и нажмите "Ok";
Если роль "Веб-сервер (IIS)" не представлена во вкладке "Роли", добавьте её, выбрав "Добавить роли";
Если роль "Веб-сервер (IIS)" присутствует, выберите "Выбор службы ролей" и установите галочку напротив "CGI" в группе "Компоненты разработки приложений";
Нажмите "Далее" затем "Установить" и ждите окончания процесса установки.
Настройка IIS для обработки PHP запросов
Скачайте и установите PHP в соответствии с инструкциями, приведёнными в описании установки
Замечание:
При использовании IIS рекомендуется использовать потоко-небезопасную (Non-thread-safe) сборку PHP, которая доступна по ссылке » PHP для Windows: Установочные файлы и исходный код.
Измените CGI и FastCGI настройки в файле php.ini как показано ниже:
Настройте IIS обработчик для PHP, используя Интерфейс управления IIS или через командную строку.
Использование Интерфейса управления IIS для создания обработчика PHP
Следующие шаги позволят вам создать IIS обработчик для PHP в Интерфейсе управления IIS:
В Windows меню Пуск выберите команду "Выполнить:", введите в клавиатуры команду "inetmgr" и нажмите "Ok";
В Интерфейсе управления IIS выберите сервер в дереве "Подключения";
На "Начальной странице" откройте "Сопоставления обработчиков";
На вкладке "Действия" выберите "Добавить сопоставление модуля. ";
- Путь запроса: *.php
- Модуль: FastCgiModule
- Исполняемый файл: C:\[Path to PHP installation]\php-cgi.exe
- Имя: PHP_via_FastCGI
Нажмите OK во всех диалогах для сохранения конфигурации.
Использование командной строки для создания сопоставления обработчика PHP
Используйте команды приведённые ниже для создания пула процессов IIS FastCGI который будет использовать php-cgi.exe выполняемый для PHP запросов. Замените значение параметра fullPath на абсолютный путь к файлу php-cgi.exe .
Настройка IIS для обработки специфических запросов PHP из командной строки показана ниже. Замените значение параметра scriptProcessor на абсолютный путь к файлу php-cgi.exe .
Эта команда создает для IIS сопоставление обработчика для файлов с расширением *.php, который получается в результате и обрабатывается модулем FastCGI.
Замечание:
На этом шаге установка и настройка завершены. Следующие инструкции необязательны, но очень рекомендуются для достижения оптимальной функциональности и производительности PHP на IIS.
Представление и доступ к файловой системе
При использовании IIS рекомендуется включить представление FastCGI в PHP. Это контролируется директивой fastcgi.impersonate в php.ini файле. Когда имперсонация включена, PHP будет выполнять все операции с файловой системой под аккаунтом, который был определён при аутентификации IIS. Это гарантирует, что при общем PHP процессе для всех сайтов IIS, PHP скрипты этих сайтов не будут иметь доступ к файлам друг друга до тех пор, пока IIS использует различные учетные записи для каждого из сайтов.
Для примера, в настройках по умолчанию IIS 7, включена анонимная аутентификация под стандартным пользователем IUSR. Это значит, что давая разрешение IIS выполнить PHP скрипт, так же необходимо дать права на чтение этого скрипта аккаунту IUSR. Если PHP приложению необходимо выполнить запись в некоторые файлы или папки, тогда аккаунту IUSR следует дать права на запись в них.
Чтобы решить какой пользователь используется для идентификации в IIS 7, можно использовать следующие команды. Замените "Default Web Site" на имя IIS сайта, с которым вы работаете. На выходе, в XML конфигурации смотрите атрибут userName .
Замечание:
Если атрибут userName отсутствует в элементе anonymousAuthentication , или установлен как пустая строка, это значит, что удостоверение пула приложений используется как анонимное для этого веб-сайта.
Для изменения настроек доступа для файлов или папок, используйте интерфейс пользователя в проводнике Windows или команду icacls .
Я пытаюсь развернуть приложение Python Flask в веб-приложении Azure. Я создал веб-приложение (Flask) и опубликовал свой код. После публикации я получаю ниже ошибку с сайта.
Когда я проверил журнал, я увидел следующую ошибку.
1 ответ
я работаю на веб-сайте python/flask на Azure, который подключается к базе данных ms sql. Некоторые запросы приводят к следующей ошибке: D:\home\python361x64\python.exe-процесс FastCGI превысил настроенный тайм-аут запроса Я предполагаю, что это проблема тайм-аута, но я не могу найти способ.
Я постоянно получаю следующую ошибку при развертывании Azure Web с помощью Flask: Unhandled exception in wfastcgi.py: Traceback (most recent call last): File D:\home\python364x64\wfastcgi.py, line 791, in main env, handler = read_wsgi_handler(response.physical_path) File.
Настройки <fastCGI> должны находиться в файле applicationHost.config (в разделе system.webServer ) файла IIS. Просто поместить его в web.config не работает (подтверждено тестированием на локальном IIS, а не в Azure). Пример конфигурации может выглядеть следующим образом:
Возможно, вы захотите изменить эту конфигурацию.
Похожие вопросы:
У меня возникли проблемы с развертыванием приложения Flask на сервере Apache с FastCGI (Uberspace). Мое базовое приложение hello world работает. Я установил переменную для индексного представления.
Я пытаюсь обслуживать приложение Flask из веб-приложения IIS под веб-сайтом по умолчанию, но не могу заставить его работать. Вот подробности:: OS: Windows Server 2016 DataCenter Edition IIS.
я работаю на веб-сайте python/flask на Azure, который подключается к базе данных ms sql. Некоторые запросы приводят к следующей ошибке: D:\home\python361x64\python.exe-процесс FastCGI превысил.
Я постоянно получаю следующую ошибку при развертывании Azure Web с помощью Flask: Unhandled exception in wfastcgi.py: Traceback (most recent call last): File D:\home\python364x64\wfastcgi.py, line.
Я наткнулся на стену, развернув небольшое приложение Flask в Azure. Приложение отлично работает локально и на Heroku, но возвращает внутреннюю ошибку сервера на Azure. Вот журнал: logs.txt StdErr.
Я пытаюсь развернуть приложение Flask в IIS. Но я получаю ошибку 500 FastCGI. код ошибки:0x8007010b Вот шаги, которые я предпринял:: OS:windows10 Python версия:3.6.5 1.install url rewrite2.0 2.pip.
Моя проблема заключается в том, что я пытаюсь развернуть простой flask app.py : from flask import Flask app = Flask(__name__) @app.route(/) def hello(): return Hello from FastCGI via IIS! if.
Пытаюсь создать веб-приложение azure python для flask python, но получаю следующую ошибку Error occurred while reading WSGI handler: Traceback (most recent call last): File.
Используйте wfastcgi для развертывания приложения Python Flask на IIS
В этой статье описывается, как развернуть приложения Python Flask в Windows, соответствующая среда выглядит следующим образом:
- Операционная система: Windows 7
- Python:3.4
- WFastCGI: 2.2
Версии пакета, используемые приложением, следующие:
1. WFastCGI
Его можно использовать в любом веб-приложении или среде Python, поддерживающих WSGI, и он обеспечивает эффективный метод для IIS для обработки запросов и пулов процессов.
2. Установка
Установить через PyPI:
2.2 IIS устанавливает FastCGI и перезапись URL
IIS необходимо установить FastCGI и переписать URL, это можно сделать черезMicrosoft Web Platform InstallerУстановить. ЗагруженныеMicrosoft Web Platform InstallerНажмите Run, появится следующий интерфейс.
Введите cgi и url rewrite в строке поиска и нажмите кнопку добавления:
Заметка: IIS 10 на Windows10 не поддерживает переписывание URL в настоящее время.
3. Включить wfastcgi
один раз wfastcgi И IIS установлен, запускается от имени администратора wfastcgi-enable Включить на IIS wfastcgi Конфигурация. Это может настроить одинМаршрутный процессорCGI-приложение.
Отключить перед удалением wfastcgi ,бегать wfastcgi-disable :
Если передано wfastcgi-enable или wfastcgi-disable Первый параметр является допустимым файлом, и вся командная строка используется для регистрации или отмены регистрации этого процессора CGI.
Например, следующая команда включает wfastcgi в IIS Express и указывает конфигурацию хоста.
Вы также можете использовать wfastcgi-disable Чтобы отключить wfastcgi с той же конфигурацией:
4. Используйте PTVS для создания веб-проекта Python
PTVSЭто плагин Visual Studio, который позволяет VS поддерживать разработку Python, а после загрузки и установки вы можете использовать его для разработки проектов Python.
Используйте PTVS для создания проекта Flask (аналогично проекту Django):
PTVS автоматически создаст проект на основе шаблона, нажмите кнопку «Выполнить», и в корневом каталоге проекта будет создан файл web.config. Я сделал некоторые изменения в файле ниже.
scriptProcessor Значение wfastcgi-enable Когда команда выполнена, значение отличается для разных машин. path с участием verb Значение также может быть дополнительно настроено для ограничения типа запроса.
Читайте также: