Вы сказали:
Как установить язык питон для сервера IIS Для разных сайтов на IIS через web.config
Загружать библиотеки для использования
Для того чтобы использовать Python на сервере IIS (Internet Information Services) и запускать разные сайты с Python-кодом (например, Flask, Django и др.), нужно выполнить несколько шагов. Ниже приведён пошаговый процесс с акцентом на использование web.config для настройки разных сайтов.
Скачайте Python с официального сайта: https://www.python.org/downloads/windows/
Установите его, отметив опцию "Add Python to PATH".
Убедитесь, что Python работает:
cmdpython --version
Установите IIS (если ещё не установлен) через "Включение и отключение компонентов Windows".
Обязательно установите:
CGI
ISAPI Extensions
ISAPI Filters
Обычно FastCGI уже установлен с IIS, но вы можете убедиться в этом, проверив наличие iisfcgi.dll.
Откройте IIS Manager.
Перейдите в раздел "FastCGI Settings".
Добавьте новое приложение:
Полный путь к python.exe, например:
makefileC:\Python311\python.exe
Добавьте переменную среды:
iniPYTHONPATH=[путь к вашим модулям, например, site-packages]
web.config для каждого сайтаСоздайте или отредактируйте web.config в корне сайта:
xml<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<handlers>
<add name="PythonHandler"
path="*.py"
verb="*"
modules="FastCgiModule"
scriptProcessor="C:\Python311\python.exe|C:\Python311\Lib\site-packages\wfastcgi.py"
resourceType="Unspecified"
requireAccess="Script" />
</handlers>
<defaultDocument>
<files>
<add value="index.py" />
</files>
</defaultDocument>
<rewrite>
<rules>
<rule name="Rewrite to Python app">
<match url=".*" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="index.py" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
Замените python.exe и wfastcgi.py на актуальные пути.
Убедитесь, что файл index.py существует в корне.
wfastcgiУстановите пакет через pip:
bashpip install wfastcgi
Инициализируйте FastCGI:
bashwfastcgi-enable
Он добавит запись в IIS для обработки .py файлов через FastCGI.
Каждый сайт может использовать свою виртуальную среду:
bashpython -m venv venv
venv\Scripts\activate
pip install flask # или django и т.д.
В web.config вы можете указать переменную окружения для PYTHONPATH, указывающую на venv\Lib\site-packages.
index.pypythondef application(environ, start_response):
status = '200 OK'
headers = [('Content-type', 'text/html')]
start_response(status, headers)
return [b"Hello from Python via IIS and FastCGI!"]
Если вы хотите использовать разные библиотеки и конфигурации на разных сайтах, то используйте отдельные виртуальные среды и указывайте свои пути через web.config или FastCGI Settings в IIS.
Хочешь, я помогу создать конкретный web.config и структуру проекта для Flask или Django? Выбери нужный фреймворк и я подготовлю пример.
Отлично! Давайте рассмотрим настройку IIS для Flask и Django, с акцентом на раздельную работу сайтов через web.config и виртуальные среды.
Создайте отдельную папку для каждого сайта.
Создайте виртуальную среду в каждой из них:
bashpython -m venv venv
venv\Scripts\activate
pip install flask wfastcgi # или django wfastcgi
Активируйте wfastcgi:
bashwfastcgi-enable
arduinoC:\inetpub\flasksite\ │ ├── venv\ ├── app.py ├── web.config └── wfastcgi.py ← можно скопировать из site-packages
app.pypythonfrom flask import Flask
app = Flask(__name__)
@app.route('/')
def hello():
return "Hello from Flask via IIS!"
if __name__ == '__main__':
app.run()
web.configxml<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<handlers>
<add name="PythonHandler"
path="*"
verb="*"
modules="FastCgiModule"
scriptProcessor="C:\inetpub\flasksite\venv\Scripts\python.exe|C:\inetpub\flasksite\venv\Lib\site-packages\wfastcgi.py"
resourceType="Unspecified"
requireAccess="Script" />
</handlers>
<defaultDocument>
<files>
<add value="app.py" />
</files>
</defaultDocument>
<rewrite>
<rules>
<rule name="FlaskRewrite" stopProcessing="true">
<match url=".*" />
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="app.py" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
arduinoC:\inetpub\djangosite\ │ ├── venv\ ├── mysite\ │ ├── manage.py │ └── mysite\ │ ├── settings.py │ ├── urls.py │ └── wsgi.py ├── web.config └── wfastcgi.py
Django проект создаётся командой:
bashdjango-admin startproject mysite
В mysite/wsgi.py, добавьте:
pythonimport os
from django.core.wsgi import get_wsgi_application
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings")
application = get_wsgi_application()
web.config для Djangoxml<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<handlers>
<add name="PythonHandler"
path="*"
verb="*"
modules="FastCgiModule"
scriptProcessor="C:\inetpub\djangosite\venv\Scripts\python.exe|C:\inetpub\djangosite\venv\Lib\site-packages\wfastcgi.py"
resourceType="Unspecified"
requireAccess="Script" />
</handlers>
<defaultDocument>
<files>
<add value="mysite\wsgi.py" />
</files>
</defaultDocument>
</system.webServer>
<appSettings>
<add key="WSGI_HANDLER" value="mysite.wsgi.application" />
<add key="PYTHONPATH" value="C:\inetpub\djangosite" />
</appSettings>
</configuration>
В каждой виртуальной среде:
bashvenv\Scripts\activate pip install -r requirements.txt
Для Flask:
bashpip install flask wfastcgi
Для Django:
bashpip install django wfastcgi
Хочешь, я подготовлю шаблон проекта и web.config под Flask или Django как zip-архив? Выбери — и я соберу пример для скачивания.