Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
При использовании служб IIS в качестве веб-сервера на компьютере Windows (включая виртуальных машинах Windows в Azure), необходимо настроить веб-приложение Python для правильной обработки кода Python. Конфигурация выполняется с помощью параметров в файлеweb.config для веб-приложения Python. В этой статье описывается настройка необходимых параметров.
Необходимые условия
Python в Windows установлен. Чтобы запустить веб-приложение, сначала установите требуемую версию Python непосредственно на хост-компьютере Windows, как описано в разделе "Установка интерпретаторов Python".
- Определите расположение интерпретатора python.exe . Для удобства можно добавить это расположение в переменную среды PATH.
Необходимые пакеты установлены. Для выделенного узла можно использовать глобальную среду Python для запуска приложения, а не виртуальной среды. Соответственно, все требования приложения можно установить в глобальную среду, выполнив команду
pip install -r requirements.txt.
Задайте web.config, чтобы указать интерпретатор Python
Файлweb.config для приложения Python указывает веб-серверу IIS (версии 7 или более поздней версии), работающему в Windows, о том, как он должен обрабатывать запросы Python через HttpPlatformHandler (рекомендуется) или FastCGI. Visual Studio версии 2015 и более ранних версий автоматически вносят эти изменения. Для Visual Studio 2017 и более поздних версий необходимо вручную изменить файлweb.config .
Если проект еще не содержит файлweb.config , его можно добавить, щелкнув правой кнопкой мыши каталог проекта, выбрав "Добавить > новый элемент " и выполнив поиск web.config или создав пустой XML-файл web.config .
Вариант 1. Настройка HttpPlatformHandler
Модуль HttpPlatform передает подключения сокета непосредственно к автономному Python-процессу. Эта сквозная передача позволяет запускать любой веб-сервер, который вам нравится, но для этого требуется скрипт запуска, на котором выполняется локальный веб-сервер. Этот подход обычно выполняется с помощью веб-платформы Python, например Flask или Django. Скрипт указывается в элементе <httpPlatform> файла web.config . Атрибут processPath указывает на интерпретатор Python расширения сайта. Атрибут arguments указывает на скрипт запуска, на котором выполняется локальный веб-сервер, в данном случае runserver.py и любые аргументы, которые вы хотите предоставить:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<handlers>
<add name="PythonHandler" path="*" verb="*" modules="httpPlatformHandler" resourceType="Unspecified"/>
</handlers>
<httpPlatform processPath="c:\python36-32\python.exe"
arguments="c:\home\site\wwwroot\runserver.py --port %HTTP_PLATFORM_PORT%"
stdoutLogEnabled="true"
stdoutLogFile="c:\home\LogFiles\python.log"
startupTimeLimit="60"
processesPerApplication="16">
<environmentVariables>
<environmentVariable name="SERVER_PORT" value="%HTTP_PLATFORM_PORT%" />
</environmentVariables>
</httpPlatform>
</system.webServer>
</configuration>
В этом примере переменная среды HTTP_PLATFORM_PORT содержит порт, который должен прослушивать локальный сервер для подключений из localhost. В этом примере также показано, как создать другую переменную среды, SERVER_PORT. При необходимости можно создавать и назначать переменные среды.
Вариант 2. Настройка обработчика FastCGI
Кроме того, вы можете использовать FastCGI для настройки приложений. FastCGI — это интерфейс, который работает на уровне запроса. IIS получает входящие подключения и пересылает каждый запрос в приложение интерфейса шлюза веб-сервера (WSGI), работающего в одном или нескольких долговременных процессах Python.
Заметка
Хотя вы можете настроить проект с помощью FastCGI, рекомендуется использовать HttpPlatformHandler для настройки приложений, так как проект WFastCGI больше не поддерживается и может привести к ошибкам.
Чтобы использовать FastCGI, сначала установите и настройте пакет wfastcgi, как описано в pypi.org/project/wfastcgi/.
Затем измените файлweb.config приложения, чтобы включить полные пути к исполняемому файлу python.exe и файлу wfastcgi.py в ключе PythonHandler . В следующих шагах предполагается, что Python установлен в папке c:\python36-32, а код приложения находится в папке c:\home\site\wwwroot. Настройте эти значения для путей соответствующим образом.
Измените
PythonHandlerзапись в файлеweb.config , чтобы путь соответствовал расположению установки Python. Дополнительные сведения см. в справочнике по конфигурации IIS на iis.net.<system.webServer> <handlers> <add name="PythonHandler" path="*" verb="*" modules="FastCgiModule" scriptProcessor="c:\python36-32\python.exe|c:\python36-32\wfastcgi.py" resourceType="Unspecified" requireAccess="Script"/> </handlers> </system.webServer><appSettings>В разделе файла web.config добавьте ключи дляWSGI_HANDLER,WSGI_LOG(необязательно) иPYTHONPATH:<appSettings> <add key="PYTHONPATH" value="c:\home\site\wwwroot"/> <!-- The handler here is specific to Bottle; see the next section. --> <add key="WSGI_HANDLER" value="app.wsgi_app()"/> <add key="WSGI_LOG" value="c:\home\LogFiles\wfastcgi.log"/> </appSettings>Эти
<appSettings>значения доступны приложению в качестве переменных среды:- Значение ключа
PYTHONPATHможет быть свободно расширено, но оно должно содержать основную директорию вашего приложения. - Ключ
WSGI_HANDLERдолжен указывать на приложение WSGI, импортируемое из приложения. - Ключ
WSGI_LOGявляется необязательным, но этот ключ рекомендуется для отладки приложения.
- Значение ключа
WSGI_HANDLERЗадайте запись в файле web.config соответствующим образом для используемого фреймворка:бутылки: добавьте скобки после значения
app.wsgi_app, как показано в этом примере. Скобки необходимы, так как объект является функцией, а не переменной. Синтаксис можно увидеть в файле app.py .<!-- Bottle apps only --> <add key="WSGI_HANDLER" value="app.wsgi_app()"/>Flask: измените значение
WSGI_HANDLERна<project_name>.app, где<project_name>совпадает с именем проекта. Точный идентификатор можно найти, просмотрев инструкциюfrom <project_name> import appв файле runserver.py . Например, если проект называется FlaskAzurePublishExample, запись отображается следующим образом:<!-- Flask apps only: Change the project name to match your app --> <add key="WSGI_HANDLER" value="FlaskAzurePublishExample.app"/>Django: два изменения необходимы для web.config-файла для проектов Django.
Измените значение
WSGI_HANDLERнаdjango.core.wsgi.get_wsgi_application(). Объект находится в файле wsgi.py .<!-- Django apps only --> <add key="WSGI_HANDLER" value="django.core.wsgi.get_wsgi_application()"/>Добавьте следующую запись сразу после записи для ключа
WSGI_HANDLER. Замените значениеDjangoAzurePublishExampleименем проекта:<add key="DJANGO_SETTINGS_MODULE" value="django_iis_example.settings" />
Приложения Django: только в файле settings.py проекта Django добавьте домен или IP-адрес сайта в
ALLOWED_HOSTSзапись. Замените "1.2.3.4" URL-адресом или IP-адресом:# Change the URL or IP address to your specific site ALLOWED_HOSTS = ['1.2.3.4']Если вы не добавляете URL-адрес в результаты массива, вы увидите следующую ошибку:
DisallowedHost at / Invalid HTTP_HOST header: '<site URL>'. You might need to add '<site URL>' to ALLOWED_HOSTS.
Если массив пуст, Django автоматически разрешает 'localhost' и '127.0.0.1' в качестве узлов. Если вы добавите рабочий URL-адрес, узловые сайты не допускаются автоматически. По этой причине может потребоваться сохранить отдельные копии файла settings.py или использовать переменные среды для управления значениями среды выполнения.
Развертывание в IIS или виртуальной машине Windows
Если в проекте есть правильный web.config файл, можно опубликовать на компьютере под управлением IIS из обозревателя решений. Щелкните проект правой кнопкой мыши, выберите Опубликовать, а затем выберите IIS, FTP и т. д.. В этом случае Visual Studio копирует только файлы проекта на сервер. Вы отвечаете за всю конфигурацию на стороне сервера.