Deploy FastApi Flask python в IIS Windows Server 19

Настроить IIS в Windows Server оказалось нелегким делом. Много материалов но все они не работают по отдельности. Предлагаю Вашему вниманию краткое руководство по настройке приложения HelloWold для FastApi.

  1. создайте папку C/nameSite
  2. Поместите тестовое приложение с именем main.py Установите pip install fastapi pip install a2wsgi

from fastapi import FastAPI from a2wsgi import ASGIMiddleware

app = FastAPI()

@app.get("/") def read_main(): return {"message": "Hello World"}

wsgi_app = ASGIMiddleware(app)

  1. Поместите файл web.config для конфигурации iis

<?xml version="1.0" encoding="UTF-8"?>
    <configuration>
        <system.webServer>
            <handlers>
                <add name="FastAPI Handler" path="*" verb="*" modules="FastCgiModule" scriptProcessor="C:\Users\Administrator\Python\python.exe|C:\Users\Administrator\Python\Lib\site-packages\wfastcgi.py" resourceType="Unspecified" requireAccess="Script" /> 
            </handlers> 
        </system.webServer>
        <appSettings>
                <add key="PYTHONPATH" value="C:\fast_api"/>
                <add key="WSGI_HANDLER" value="main.wsgi_app" />
        </appSettings>
    </configuration>

  1. Установите IIS на windows server server manager -> add roles and features -> Next -> Next -> Next -> WebServerISS там же дополнительно обязательно установить CGI server manager -> add roles and features -> Next -> Next -> Next -> WebServerISS -> WebServer -> ApplicationDevelompment -> CGI поставить галочку -> Next -> Install

  2. После установки IIS и CGI дайте прова доступа к папке IUSR права для пользователей сайта посещать папку IIS_IUSRS права серверу c IIS на пользование сожержимыми папки

  3. Откройте панель IIS и создайте новый сайт Add_Website откроется диалоговое окно в котором нужно ввести следующие данные: SiteName: произвольное название сайта Physical path: укажите путь к папке где лежит скрипт main.py IP address: адрес сайта например 43.88.102.160 Host name: адрес в строке браузера например fishki.com

    По этим настройкам Ваш сайт будет найден в сети интернет

  4. Перейдите в диспетчер IIS Перейдите на Application Poolsвкладку вашего сервера Нажмите Set Application Pool Defaults... Установите значение IdentityLocalSystemProcess Model

    без этой настройки сервер не сможет получить доступ к файлу web.config

  5. заходим в файл C:\Windows\System32\inetsrv\Config\applicationHost.config и изменяем разрешения

    без этой настройки сервер не сможет получить доступ к файлу web.config

  6. Устанавливаем pip install wfastcgi

  7. Включаем wfastcgi wfastcgi-enable

  8. В панели IIS вашего сайта заходим в меню Нажмите “Добавить сопоставление модулей” addModuleMapping Вводим следующие настройки

Request Path: *

Module: FastCGIModule Executable: C:\Users\Administrator\Python\python.exe|C:\Users\Administrator\Python\Lib\site-packages\wfastcgi.py Путь до python.exe|Путь до wfastcgi.py

Name: FastAPI Handler Название должно соответствовать названию в web.config в данном случае В этом же меню нажимаем кнопку Request Restriction и снимаем галочку Invoke handler only if request is mapped to Нажимаем Ok

  1. В панели IIS находим настройку FastCGISettings Находим строку Full Path C:\Users\Administrator\Python\python.exe Arguments C:\Users\Administrator\Python\Lib\site-packages\wfastcgi.py

    и дважды по ней кликаем. Откроется меню. В первой строке Environment Variables нажимаем три точки. Откроется меню переменных к котом нужно добавить две переменных жмем add

    name PYTHONPATH values C/nameSite (путь до папки с сайтом)

    name WSGI_HANDLER values main.app (название файла с приложением main.py поэтому записываем main.app)

На этом настройка Windows Server 19 для приложения helloWorld завершена Таким образом можно настроить сайт с приложением Fast Api, Flask Для Flask нужно изменить web.config и main.py на соответствующие flask


Ответы (0 шт):