Konfigurowanie aplikacji internetowych języka Python dla usług IIS
W przypadku korzystania z usług Internet Information Services (IIS) jako serwera internetowego na komputerze z systemem Windows (w tym maszyn wirtualnych z systemem Windows na platformie Azure), należy skonfigurować aplikację internetową w języku Python, aby umożliwić usługom IIS prawidłowe przetwarzanie kodu języka Python. Konfiguracja jest realizowana za pomocą ustawień w web.config
pliku aplikacji internetowej w języku Python. W tym artykule opisano sposób konfigurowania niezbędnych ustawień.
Wymagania wstępne
Zainstalowany język Python w systemie Windows. Aby uruchomić aplikację internetową, najpierw zainstaluj wymaganą wersję języka Python bezpośrednio na maszynie hosta z systemem Windows, zgodnie z opisem w temacie Instalowanie interpreterów języka Python.
- Zidentyfikuj lokalizację interpretera
python.exe
. Dla wygody możesz dodać lokalizację do zmiennej środowiskowej PATH.
- Zidentyfikuj lokalizację interpretera
Zainstalowane wymagane pakiety. W przypadku dedykowanego hosta możesz użyć globalnego środowiska języka Python do uruchamiania aplikacji, a nie środowiska wirtualnego. W związku z tym można zainstalować wszystkie wymagania aplikacji w środowisku globalnym, uruchamiając
pip install -r requirements.txt
polecenie .
Ustaw plik web.config, aby wskazywał interpreter języka Python
Plik web.config
dla aplikacji języka Python instruuje serwer internetowy usług IIS (wersja 7 lub nowsza) uruchomiony w systemie Windows o tym, jak powinien obsługiwać żądania języka Python za pośrednictwem programu HttpPlatformHandler (zalecane) lub FastCGI. Program Visual Studio w wersji 2015 lub starszej automatycznie wprowadza te modyfikacje. W przypadku programu Visual Studio 2017 lub nowszego web.config
należy ręcznie zmodyfikować plik.
Jeśli projekt nie zawiera web.config
jeszcze pliku, możesz go dodać, klikając prawym przyciskiem myszy katalog projektu, wybierając polecenie Dodaj > nowy element i wyszukując web.config
lub tworząc pusty web.config
plik XML.
Opcja 1. Konfigurowanie programu HttpPlatformHandler
Moduł HttpPlatform przekazuje połączenia gniazd bezpośrednio do autonomicznego procesu języka Python. To przekazywanie umożliwia uruchamianie dowolnego serwera internetowego, ale wymaga skryptu uruchamiania, który uruchamia lokalny serwer internetowy. Takie podejście jest często wykonywane przy użyciu platformy internetowej języka Python, takiej jak Flask lub Django. Skrypt należy określić w elemecie <httpPlatform>
web.config
pliku. Atrybut processPath
wskazuje interpreter języka Python rozszerzenia witryny. Atrybut arguments
wskazuje skrypt uruchamiania, który uruchamia lokalny serwer internetowy, w tym przypadku runserver.py
i wszelkie argumenty, które chcesz podać:
<?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>
W tym przykładzie zmienna HTTP_PLATFORM_PORT
środowiskowa zawiera port, na którym serwer lokalny powinien nasłuchiwać połączeń z programu localhost
. W tym przykładzie pokazano również, jak utworzyć inną zmienną środowiskową . SERVER_PORT
W razie potrzeby można tworzyć i przypisywać zmienne środowiskowe.
Opcja 2. Konfigurowanie programu obsługi FastCGI
Alternatywnie możesz użyć usługi FastCGI do skonfigurowania aplikacji. FastCGI to interfejs, który działa na poziomie żądania. Usługi IIS odbierają połączenia przychodzące i przekazują każde żądanie do aplikacji WSGI działającej w co najmniej jednym trwałym procesie języka Python.
Uwaga
Mimo że projekt można skonfigurować przy użyciu standardu FastCGI, zalecamy skonfigurowanie aplikacji przy użyciu programu HttpPlatformHandler , ponieważ projekt WFastCGI nie jest już utrzymywany i może powodować błędy.
Aby użyć rozwiązania FastCGI, najpierw zainstaluj i skonfiguruj pakiet wfastcgi zgodnie z opisem w pypi.org/project/wfastcgi/.
Następnie zmodyfikuj plik aplikacji web.config
, aby uwzględnić pełne ścieżki do python.exe
pliku wykonywalnego i wfastcgi.py
pliku w kluczu PythonHandler
. W poniższych krokach założono, że język Python jest zainstalowany w folderze c:\python36-32 , a kod aplikacji znajduje się w folderze c:\home\site\wwwroot . Odpowiednio dostosuj te wartości dla ścieżek.
Zmodyfikuj
PythonHandler
web.config
wpis w pliku, tak aby ścieżka odpowiadała lokalizacji instalacji języka Python. Aby uzyskać więcej informacji, zobacz Dokumentacja konfiguracji usług 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>
W sekcjiweb.config
pliku dodaj klucze dlaWSGI_HANDLER
elementu ,WSGI_LOG
(opcjonalnie) iPYTHONPATH
:<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>
Te
<appSettings>
wartości są dostępne dla aplikacji jako zmienne środowiskowe:- Wartość
PYTHONPATH
klucza może być bezpłatnie rozszerzona, ale musi zawierać katalog główny aplikacji. - Klucz
WSGI_HANDLER
musi wskazywać aplikację WSGI importowalne z aplikacji. - Klucz
WSGI_LOG
jest opcjonalny, ale klucz jest zalecany do debugowania aplikacji.
- Wartość
WSGI_HANDLER
Ustaw wpis wweb.config
pliku zgodnie z potrzebami dla używanej platformy:Butelka: dodaj nawiasy po
app.wsgi_app
wartości, jak pokazano w tym przykładzie. Nawiasy są niezbędne, ponieważ obiekt jest funkcją, a nie zmienną. Składnię można zobaczyć wapp.py
pliku.<!-- Bottle apps only --> <add key="WSGI_HANDLER" value="app.wsgi_app()"/>
Flask: zmień wartość na
WSGI_HANDLER
<project_name>.app
gdzie<project_name>
jest zgodna z nazwą projektu. Dokładny identyfikator można znaleźć, przeglądając instrukcjęfrom <project_name> import app
runserver.py
w pliku. Jeśli na przykład projekt ma nazwęFlaskAzurePublishExample
, wpis pojawia się w następujący sposób:<!-- Flask apps only: Change the project name to match your app --> <add key="WSGI_HANDLER" value="FlaskAzurePublishExample.app"/>
Django: do pliku dla projektów Django potrzebne
web.config
są dwie zmiany.Zmień wartość na
WSGI_HANDLER
django.core.wsgi.get_wsgi_application()
. Obiekt znajduje się wwsgi.py
pliku.<!-- Django apps only --> <add key="WSGI_HANDLER" value="django.core.wsgi.get_wsgi_application()"/>
Dodaj następujący wpis bezpośrednio po wpisie
WSGI_HANDLER
klucza. Zastąp wartośćDjangoAzurePublishExample
nazwą projektu:<add key="DJANGO_SETTINGS_MODULE" value="django_iis_example.settings" />
Tylko aplikacje Django: w pliku projektu
settings.py
Django dodaj domenę adresu URL witryny lub adres IP doALLOWED_HOSTS
wpisu. Zastąp ciąg "1.2.3.4" adresem URL lub adresem IP:# Change the URL or IP address to your specific site ALLOWED_HOSTS = ['1.2.3.4']
Jeśli nie dodasz adresu URL do wyników tablicy, zostanie wyświetlony następujący błąd:
DisallowedHost at / Invalid HTTP_HOST header: '\<site URL\>'. You might need to add '\<site URL\>' to ALLOWED_HOSTS.
Gdy tablica jest pusta, platforma Django automatycznie zezwala 'localhost'
na hosty i '127.0.0.1'
jako hosty. Jeśli dodasz adres URL środowiska produkcyjnego, te witryny hosta nie będą automatycznie dozwolone. Z tego powodu możesz chcieć zachować oddzielne kopie settings.py
programistyczne i produkcyjne pliku lub użyć zmiennych środowiskowych do kontrolowania wartości środowiska uruchomieniowego.
Wdrażanie w usługach IIS lub maszynie wirtualnej z systemem Windows
Jeśli masz prawidłowy web.config
plik w projekcie, możesz opublikować go na komputerze z uruchomionymi usługami IIS z Eksplorator rozwiązań. Kliknij prawym przyciskiem myszy projekt, wybierz pozycję Publikuj, a następnie wybierz pozycję IIS, FTP itp. W takiej sytuacji program Visual Studio kopiuje tylko pliki projektu na serwer. Odpowiadasz za całą konfigurację po stronie serwera.
Powiązana zawartość
- Dokumentacja konfiguracji usług IIS (iis.net)
- Zainstaluj interpretery języka Python
- Maszyny wirtualne z systemem Windows na platformie Azure