Deploy FastApi Flask python в IIS Windows Server 19
Настроить IIS в Windows Server оказалось нелегким делом. Много материалов но все они не работают по отдельности. Предлагаю Вашему вниманию краткое руководство по настройке приложения HelloWold для FastApi.
- создайте папку C/nameSite
- Поместите тестовое приложение с именем 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)
- Поместите файл 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>
Установите 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
После установки IIS и CGI дайте прова доступа к папке IUSR права для пользователей сайта посещать папку IIS_IUSRS права серверу c IIS на пользование сожержимыми папки
Откройте панель IIS и создайте новый сайт Add_Website откроется диалоговое окно в котором нужно ввести следующие данные: SiteName: произвольное название сайта Physical path: укажите путь к папке где лежит скрипт main.py IP address: адрес сайта например 43.88.102.160 Host name: адрес в строке браузера например fishki.com
По этим настройкам Ваш сайт будет найден в сети интернет
Перейдите в диспетчер IIS Перейдите на Application Poolsвкладку вашего сервера Нажмите Set Application Pool Defaults... Установите значение IdentityLocalSystemProcess Model
без этой настройки сервер не сможет получить доступ к файлу web.config
заходим в файл C:\Windows\System32\inetsrv\Config\applicationHost.config и изменяем разрешения
без этой настройки сервер не сможет получить доступ к файлу web.config
Устанавливаем pip install wfastcgi
Включаем wfastcgi wfastcgi-enable
В панели 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
В панели 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