Для настройки Python на сервере IIS (Internet Information Services) для разных сайтов с использованием файла web.config и загрузки необходимых библиотек, следуйте этим шагам. Инструкция основана на использовании модуля HttpPlatformHandler (рекомендуемый подход) для передачи запросов к Python-приложениям, таким как Flask или Django, а также на установке библиотек для каждого сайта. Вот пошаговое руководство:
1. Убедитесь, что необходимые компоненты установлены
Перед настройкой убедитесь, что на сервере установлены следующие компоненты:
- IIS: Убедитесь, что IIS установлен с поддержкой CGI и других необходимых компонентов:
- Откройте Диспетчер сервера → Управление → Добавить роли и компоненты.
- Выберите роль Веб-сервер (IIS).
- Убедитесь, что включены компоненты:
- Веб-сервер → Разработка приложений → CGI.
- Веб-сервер → Службы ролей → HTTPPlatformHandler (если доступно, для новых версий IIS).
- Установите их, если они отсутствуют.

- Python: Установите требуемую версию Python на сервер (например, Python 3.9 или новее):
- Загрузите установщик с официального сайта python.org.
- Установите Python, выбрав опцию "Add Python to PATH" и установку для всех пользователей.
- Проверьте установку, выполнив в командной строке:
text
python --version
- Web Deploy: Установите Web Deploy (версия 2.1 или новее) для упрощения развертывания приложений.

2. Настройка сайта в IIS
Для каждого сайта, который будет использовать Python, настройте отдельный сайт в IIS:
- Создайте сайт в IIS:
- Откройте Диспетчер служб IIS (IIS Manager).
- В разделе Сайты щелкните правой кнопкой мыши и выберите Добавить веб-сайт.
- Укажите:
- Имя сайта (например, PythonSite1).
- Физический путь (папка, где будут размещены файлы сайта, например, C:\inetpub\PythonSite1).
- Привязка (IP-адрес, порт, например, 80, и имя узла, если требуется).
- Повторите для каждого сайта (например, PythonSite2 с папкой C:\inetpub\PythonSite2).
- Создайте структуру папок:
- В корневой папке каждого сайта (например, C:\inetpub\PythonSite1) создайте:
- Файл Python-приложения (например, app.py для Flask или Django).
- Файл web.config для настройки IIS.
- Папку для виртуального окружения (например, venv).
- В корневой папке каждого сайта (например, C:\inetpub\PythonSite1) создайте:
3. Настройка файла web.config для каждого сайта
Файл web.config определяет, как IIS будет обрабатывать запросы Python. Создайте или отредактируйте web.config в корневой папке каждого сайта (например, C:\inetpub\PythonSite1\web.config).
Пример web.config для Python-приложения (на примере Flask):
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<handlers>
<add name="PythonHandler" path="*" verb="*" modules="httpPlatformHandler" resourceType="Unspecified" />
</handlers>
<httpPlatform processPath="C:\Python39\python.exe"
arguments="C:\inetpub\PythonSite1\app.py"
stdoutLogEnabled="true"
stdoutLogFile="C:\inetpub\PythonSite1\logs\stdout.log"
startupTimeLimit="60"
processesPerApplication="1">
<environmentVariables>
<add name="PYTHONPATH" value="C:\inetpub\PythonSite1" />
</environmentVariables>
</httpPlatform>
</system.webServer>
</configuration>Объяснение параметров:
- processPath: Путь к интерпретатору Python (например, C:\Python39\python.exe).
- arguments: Путь к основному скрипту приложения (например, app.py).
- stdoutLogEnabled и stdoutLogFile: Включают логирование вывода в указанную папку для отладки.
- PYTHONPATH: Указывает путь к папке приложения, чтобы Python мог находить модули.
Для другого сайта (например, PythonSite2) создайте аналогичный web.config в его корневой папке (например, C:\inetpub\PythonSite2\web.config), изменив пути к processPath, arguments, stdoutLogFile и PYTHONPATH соответственно.
4. Установка библиотек Python для каждого сайта
Для изоляции библиотек используйте виртуальные окружения для каждого сайта:
- Создайте виртуальное окружение:
- Перейдите в папку сайта:
text
cd C:\inetpub\PythonSite1 - Создайте виртуальное окружение:
text
python -m venv venv - Активируйте виртуальное окружение:
text
.\venv\Scripts\activate
- Перейдите в папку сайта:
- Установите библиотеки:
- Установите необходимые библиотеки (например, Flask, Django) с помощью pip:
text
pip install flask - Для Django, если требуется:
text
pip install django - Убедитесь, что библиотеки установлены в виртуальное окружение (в папке venv).
- Установите необходимые библиотеки (например, Flask, Django) с помощью pip:
- Настройте web.config для использования виртуального окружения:
Измените processPath в web.config, чтобы использовать интерпретатор из виртуального окружения:
xml
<httpPlatform processPath="C:\inetpub\PythonSite1\venv\Scripts\python.exe" arguments="C:\inetpub\PythonSite1\app.py" ...> - Повторите для других сайтов: Для PythonSite2 создайте аналогичное виртуальное окружение в C:\inetpub\PythonSite2\venv и установите нужные библиотеки. Обновите web.config с соответствующими путями.
5. Настройка Django (если используется)
Если вы используете Django, добавьте дополнительные настройки:
- Обновите settings.py:
- Настройте запуск Django:
- В web.config укажите запуск Django через wsgi.py:
xml
<httpPlatform processPath="C:\inetpub\PythonSite1\venv\Scripts\python.exe" arguments="C:\inetpub\PythonSite1\myproject\wsgi.py" ...>
- В web.config укажите запуск Django через wsgi.py:
6. Проверка и отладка
- Проверьте права доступа:
- Убедитесь, что у пула приложений IIS (например, IIS_IUSRS) есть права на чтение/запись для папок сайта и логов.
- Перезапустите IIS:
- Выполните команду в командной строке:
text
iisreset
- Выполните команду в командной строке:
- Проверьте сайт:
- Откройте браузер и перейдите по адресу сайта (например, http://localhost или настроенное имя узла).
- Проверьте логи в папке, указанной в stdoutLogFile, для диагностики ошибок.
- Добавьте имена узлов (если требуется):
7. Дополнительные рекомендации
- Обновления Python: Регулярно обновляйте Python и библиотеки через pip install --upgrade <package>.
- Безопасность:
- Логирование: Настройте ротацию логов, чтобы избежать переполнения диска.
- Производительность: Для нескольких сайтов используйте разные пулы приложений в IIS, чтобы изолировать процессы.
Пример структуры для двух сайтов
C:\inetpub\
├── PythonSite1\
│ ├── app.py
│ ├── web.config
│ ├── venv\
│ └── logs\
└── PythonSite2\
├── app.py
├── web.config
├── venv\
└── logs\Эти шаги позволяют настроить Python на IIS для нескольких сайтов с использованием web.config и изолированных виртуальных окружений для загрузки библиотек. Если вы столкнулись с ошибками, проверьте логи в указанной папке stdoutLogFile или обратитесь за дополнительной информацией к документации Microsoft или сообществам разработчиков.

.png)

.png)
.png)