Обзор высокого уровня
HTTP -> IIS -> ISAPI -> FastCGI -> WSGI (приложение Flask)
Шаги настройки
Шаг 1. Установите необходимые двоичные файлы
- Установите Python (2.7 или 3.x - я использовал 3.3)
- Установите pip-Win (я использовал версию 1.6)
- Установите pywin32 (я использовал версию 218)
- Установите расширение IIS FastCGI с помощью fcgisetup 1.5
Шаг 2. Установите дополнительные двоичные пакеты
Я установил pyodbc
с помощью установщика .exe с этого сайта. Для установки из источника (например, pip для установки в виртуальную среду) требуется компилятор C / C ++.
Шаг 3. Получите копию wfastcgi.py
Выберите версию, которая подойдет вам, предпочтительно ту, которая поддерживает Python 3.3 (я использовал Дэвида Эббо). Вы можете получить "официальную" версию отсюда.
Установите wfastcgi.py
скрипт в C:\Inetpub\wwwroot
и убедитесь, что учетная запись, которая будет обслуживать ваше приложение (по умолчанию «Сетевая служба»), имеет доступ для чтения к ней.
Шаг 4: Установите virtualenv
в Системные сайты-пакеты
C:\Python33\Scripts\pip.exe install virtualenv
(если вы используете Python 3.3 и установили все в папку по умолчанию)
Шаг 5. Установите приложение Flask
Вы можете установить приложение практически в любом месте системы. Вы можете установить его в C:\Inetpub
. В этом руководстве мы назовем корневую папку вашего приложения установкой %APPROOT%
. (Не помещайте кавычки в переменную среды.)
Убедитесь, что учетная запись, которая будет обслуживать ваше приложение (по умолчанию «Сетевая служба»), имеет доступ для чтения ко всем файлам сценариев. Эта команда:
cacls "%APPROOT%" /S:"D:PAI(A;OICI;FA;;;BA)(A;OICIIO;FA;;;CO)(A;OICI;0x1200a9;;;NS)(A;OICI;FA;;;SY)"
предоставит вашему каталогу приложения следующие разрешения:
- BUILTIN\Administrators: Full control of this folder, subfolders, and files
- СОЗДАТЕЛЬ ВЛАДЕЛЬЦА: Полный доступ только для вложенных папок и файлов
- NT AUTHORITY \ NETWORK SERVICE: разрешения на чтение для этой папки, подпапок и файлов
- NT AUTHORITY \ SYSTEM: полный контроль над этой папкой, вложенными папками и файлами
Добавьте любую необходимую локальную конфигурацию (мое приложение использует файл local.cnf, который игнорируется системой контроля версий) - например, URL-адреса базы данных.
Убедитесь, что ваше приложение содержит Web.config
файл в %APPROOT%
- информацию о формате файла см. В разделе ниже.
Шаг 6. Создайте виртуальную среду для вашего приложения
C:\Python33\Scripts\virtualenv.exe --system-site-packages "%APPROOT%\env"
(Выберите имя, отличное от env
, если ваше приложение уже использует этот каталог.)
Шаг 7. Установите пакеты, необходимые для вашего приложения, на виртуальный сервер.
cd "%APPROOT%"
env\Scripts\activate
pip install -r Packages
(В моем проекте спецификации требований хранятся в файле с именем Packages
.)
Шаг 8: Создайте веб-сайт или виртуальный каталог для вашего приложения
Используйте inetmgr.msc
(Пуск -> Выполнить…, затем введите inetmgr
в поле редактирования и нажмите ENTER), чтобы запустить Internet Information Services ( IIS) Менеджер. Обязательно укажите локальный путь для создаваемого вами узла (веб-сайта или виртуального каталога) в корневую папку вашего приложения Flask. wfastcgi.py
использует локальный путь для идентификации приложения Flask для обработки запросов.
Предоставьте узлу права доступа как для чтения, так и для сценария (запуска сценариев).
Шаг 9. Настройте fcgiext.ini
Этот файл находится в том же каталоге, что и fcgiext.dll
, установленный на шаге 1 (по умолчанию %SYSTEMROOT%\system32\inetsrv
).
При настройке этого файла вам потребуется несколько параметров:
- {site id}: числовой идентификатор сайта, который вы можете найти на панели подробностей (справа) Диспетчера информационных служб Интернета (IIS), когда выбрано «Веб-сайты». из дерева в левой части окна.
- {имя приложения}: имя раздела в
fcgiext.ini
, который предоставляет параметры для обработчика FastCGI (ISAPI). Вы выбираете это значение - выбираете то, что представляет ваше приложение.
- {путь к приложению}: для виртуального каталога - URL-путь внутри веб-сайта к виртуальному каталогу, который будет обрабатываться.
- {Approot}: путь к корневому каталогу вашего приложения.
Используйте эти параметры, чтобы:
Шаг 10: Настройте обработку FastCGI для целевых URL-адресов
Используя Диспетчер информационных служб Интернета (IIS), выберите «Свойства ...» в контекстном меню (щелчок правой кнопкой мыши) узла (веб-сайт или виртуальный каталог), который будет обслуживаться вашим приложением Flask, и :
На вкладке «Домашний каталог» (веб-сайт) или «Виртуальный каталог» (виртуальный каталог) нажмите кнопку «Конфигурация ...».
В разделе «Карты приложений с подстановочными знаками» используйте кнопку «Вставить ...», чтобы добавить сопоставление с подстановочными знаками:
- The executable is the FastCGI extension DLL installed in Step 1. Its default location is
%SYSTEMROOT%\system32\inetsrv\fcgiext.dll
.
- Убедитесь, что флажок «Проверить, существует ли файл» снят. Приложения Flask выполняют свою собственную маршрутизацию, которая не обязательно имеет какое-либо отношение к файлам на диске.
Web.config
Этот файл (в данной настройке) читает wfastcgi.py
, а не IIS.
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<applicationSettings>
<add key=“PYTHONPATH” value=“”/>
<add key=“WSGI_HANDLER” value=“module.application”/>
</applicationSettings>
</configuration>
<add>
элементы добавляют переменные среды (os.environ
в Python).
WSGI_HANDLER
должен быть указан - он сообщает wfastcgi.py
, как найти объект приложения WSGI. Если значение заканчивается на «()», wfastcgi.py
вызовет названный объект, ожидая, что он вернет объект приложения WSGI.
PYTHONPATH
обрабатывается особым образом - wfastcgi.py
выполняет расширение переменной (среды) (с использованием стандартной %VAR%
нотации Windows) для значения 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
.
Для IIS 7
Некоторые вещи с FastCGI кардинально изменились в IIS 7. Начиная с этой версии, FastCGI поддерживает напрямую через IIS и не настраивается через расширение (т.е. шаг 1.4 не нужен, а fcgiext.ini
не контролирует поведение FastCGI для IIS 7+, и нет нужно создать / отредактировать). Вместо этого убедитесь, что CGI включен в разделе Информационные службы Интернета в Панель управления> Программы и компоненты> Включение или отключение компонентов Windows.
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 virtualenv), за которым следует |
, а затем полный путь к wfastcgi.py
файлу, который вы используете. Поскольку эти пути зависят от настройки компьютера, на котором работает ваше приложение, вы можете установить этот атрибут как часть процесса развертывания.
Настройка на уровне сервера IIS
- В
inetmgr
щелкните узел сервера в дереве, а затем выберите Настройки FastCGI на центральной панели. Появится список пар исполняемый файл / аргумент.
- Добавьте запись для полных путей к вашим
python.exe
и wfastcgi.py
, которые вы используете. Оба должны быть указаны так же, как они отображаются в элементе <handlers>/<add>
в вашем Web.config
.
- Обязательно настройте переменную среды
PYTHONPATH
в новой записи приложения FastCGI, чтобы включить корень кодовой базы вашего приложения. Совет по добавлению пустой PYTHONPATH
записи в <applicationSettings>
вашего Web.config
может не относиться к этой версии IIS.
person
ReWrite
schedule
28.02.2014