Publikowanie aplikacji internetowych w języku Python w usłudze aplikacja systemu Azure Service w systemie Linux

Program Visual Studio umożliwia publikowanie aplikacji internetowej w języku Python bezpośrednio w usłudze aplikacja systemu Azure Service w systemie Linux. Publikowanie w usłudze aplikacja systemu Azure w systemie Linux obejmuje kopiowanie niezbędnych plików na serwer i konfigurowanie odpowiedniego web.config pliku, który instruuje serwer internetowy, jak uruchomić aplikację.

Uwaga

Linux to jedyna opcja systemu operacyjnego do uruchamiania aplikacji języka Python w usłudze App Service. Język Python w systemie Windows nie jest już obsługiwany, zgodnie z opisem w artykule App Service Linux Docs — obsługa języka Python. W przypadku systemu Windows możesz utworzyć własny niestandardowy obraz kontenera systemu Windows i uruchomić go w usłudze App Service. Aby uzyskać więcej informacji, zobacz Używanie niestandardowego obrazu platformy Docker.

Wymagania wstępne

  • Visual Studio. Aby zainstalować produkt, wykonaj kroki opisane w temacie Instalowanie programu Visual Studio.

  • Projekt aplikacji internetowej w języku Python oparty na strukturze Bottle, Flask lub Django. Możesz utworzyć projekt testowy, aby wypróbować proces publikowania.

  • Aby opublikować na platformie Azure, potrzebujesz docelowej usługi aplikacja systemu Azure dla subskrypcji platformy Azure.

    Jeśli nie masz jeszcze subskrypcji platformy Azure, zacznij od bezpłatnego pełnego konta platformy Azure. Rozważ również zarejestrowanie się w programie Visual Studio Dev Essentials.

Wersje programu Visual Studio

Proces publikowania różni się między programem Visual Studio 2017 a nowszym a programem Visual Studio 2015. Oba podejścia zostały opisane w tym artykule.

  • Program Visual Studio 2015 automatyzuje niektóre kroki instalacji, w tym tworzenie web.config pliku, ale ta automatyzacja ogranicza długoterminową elastyczność i kontrolę.

  • Program Visual Studio 2017 lub nowszy wymaga bardziej ręcznych kroków instalacji, ale zapewnia dokładniejszą kontrolę nad środowiskiem języka Python.

Aby uzyskać więcej informacji na temat zmian w programach Visual Studio 2015 i Visual Studio 2017 i nowszych, zobacz wpis w blogu Publikowanie na platformie Azure w programie Visual Studio 2017.

Tworzenie projektu testowego

Jeśli nie masz istniejącego projektu do opublikowania, możesz utworzyć projekt testowy, aby wypróbować ten proces.

  1. W programie Visual Studio wybierz pozycję Plik nowy projekt z menu paska narzędzi, aby otworzyć okno dialogowe Tworzenie nowego projektu.>>

  2. W oknie dialogowym wprowadź butelkę w polu Wyszukaj , wybierz szablon Bottle Web Project , a następnie wybierz przycisk Dalej.

    Szablon Bottle Web Project jest dołączony do obciążenia programowanie w języku Python. Aby uzyskać więcej informacji, zobacz Szablony projektów aplikacji internetowych języka Python.

  3. Wprowadź nazwę i lokalizację ścieżki dla projektu, a następnie wybierz pozycję Utwórz.

  4. Postępuj zgodnie z monitami, aby zainstalować pakiety zewnętrzne, wybierz pozycję Zainstaluj w środowisku wirtualnym i wybierz preferowany interpreter podstawowy dla środowiska wirtualnego.

    Środowisko wirtualne jest zwykle zgodne z wersją języka Python zainstalowaną w usłudze App Service.

Gdy wszystko będzie gotowe, możesz przetestować projekt lokalnie, wybierając pozycję Debuguj > rozpocznij debugowanie lub używając skrótu klawiaturowego F5.

Tworzenie docelowej usługi aplikacja systemu Azure

Publikowanie na platformie Azure wymaga docelowej usługi aplikacja systemu Azure dla subskrypcji platformy Azure.

Utwórz usługę App Service z pustą aplikacją internetową w następujący sposób:

  1. Zaloguj się do Azure Portal.

  2. Przejdź do strony usługi App Services .

  3. Wybierz pozycję Utwórz i wybierz pozycję Aplikacja internetowa z menu rozwijanego. Zostanie otwarta strona Tworzenie aplikacji internetowej.

  4. Na karcie Podstawowe skonfiguruj następujące ustawienia:

    Ustawienie opis
    Grupa zasobów Zignoruj to pole. System aktualizuje tę wartość po wybraniu ustawienia środowiska uruchomieniowego.
    Nazwa/nazwisko Wprowadź nazwę aplikacji internetowej.
    Publikowanie Wybierz pozycję Kod.
    Stos środowiska uruchomieniowego Wybierz odpowiednie środowisko uruchomieniowe języka Python z menu rozwijanego. Po wybraniu elementu system aktualizuje pole Grupa zasobów.
    Region Wybierz dowolny region świadczenia usługi Azure w pobliżu.
    Plan cenowy Wybierz plan Bezpłatna F1 .

    Przykłady w tym artykule można zignorować ustawienia na innych kartach.

  5. Wybierz pozycję Przejrzyj i utwórz. Przejrzyj wybrane opcje, a następnie wybierz pozycję Utwórz.

  6. (Opcjonalnie) Gdy usługa App Service będzie gotowa, możesz przejść do zasobu, wybrać pozycję Pobierz profil publikowania i zapisać plik lokalnie.

Konfigurowanie języka Python w usłudze aplikacja systemu Azure

Po utworzeniu usługi App Service z pustą aplikacją internetową uruchomioną w ramach subskrypcji zainstaluj żądaną wersję języka Python. W przypadku publikowania z programu Visual Studio 2017 i nowszych zapisz dokładną ścieżkę do interpretera języka Python zainstalowanego z rozszerzeniem witryny. Aby uzyskać więcej informacji, zobacz Instalowanie interpreterów języka Python.

W razie potrzeby możesz również zainstalować bottle pakiet. Ten pakiet jest jednak instalowany w późniejszym kroku w tym przewodniku.

Publikowanie w usłudze App Service — Visual Studio 2017 i nowsze

Publikowanie w usłudze aplikacja systemu Azure z programu Visual Studio 2017 lub nowszego kopiuje tylko pliki w projekcie na serwer. Aby skonfigurować środowisko serwera, należy utworzyć niezbędne pliki.

  1. W programie Visual Studio Eksplorator rozwiązań kliknij prawym przyciskiem myszy projekt i wybierz polecenie Dodaj > nowy element. W oknie dialogowym wybierz szablon Azure web.config (Fast CGI), a następnie wybierz pozycję Dodaj. Ten krok tworzy web.config plik w katalogu głównym projektu.

  2. Zmodyfikuj PythonHandler wpis w web.config pliku, tak aby ścieżka odpowiadała instalacji języka Python na serwerze, zgodnie z opisem w temacie Dokumentacja konfiguracji usług IIS (iis.net). Na przykład w przypadku języka Python 3.6.1 x64 wpis powinien wyglądać następująco:

    <system.webServer>
      <handlers>
        <add name="PythonHandler" path="*" verb="*" modules="FastCgiModule"
            scriptProcessor="D:\home\Python361x64\python.exe|D:\home\Python361x64\wfastcgi.py"
            resourceType="Unspecified" requireAccess="Script"/>
      </handlers>
    </system.webServer>
    
  3. WSGI_HANDLER Ustaw wpis w web.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ć w app.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 apprunserver.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_HANDLERdjango.core.wsgi.get_wsgi_application(). Obiekt znajduje się w wsgi.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" />
        
  4. Tylko aplikacje Django: w pliku projektu settings.py Django dodaj domenę adresu URL witryny lub adres IP do ALLOWED_HOSTS wpisu. Zastąp ciąg "vspython-test-02.azurewebsites.net" adresem URL:

    # Change the URL to your specific site
    ALLOWED_HOSTS = ['vspython-test-02.azurewebsites.net']
    

    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 jako host. Jeśli dodasz adres URL środowiska produkcyjnego, 'localhost' nie będzie automatycznie dozwolony jako host. 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.

  5. Wybieranie szablonu.

    1. W Eksplorator rozwiązań rozwiń folder projektu.
    2. Kliknij prawym przyciskiem myszy folder statyczny, a następnie wybierz polecenie Dodaj > nowy element.
    3. Wybierz szablon web.config usługi Azure Static Files, a następnie wybierz pozycję Dodaj.

    Ta akcja powoduje utworzenie innego web.config pliku w folderze statycznym, który wyłącza przetwarzanie języka Python dla tego folderu. Ta konfiguracja wysyła żądania dotyczące plików statycznych do domyślnego serwera internetowego, zamiast korzystać z aplikacji Python.

  6. W Eksplorator rozwiązań zapisz projekt, a następnie kliknij prawym przyciskiem myszy projekt i wybierz pozycję Publikuj.

    Zrzut ekranu przedstawiający sposób uzyskiwania dostępu do polecenia Publikuj dla projektu w programie Visual Studio.

  7. W oknie Publikowanie określ docelowy element docelowy publikowania:

    1. W polu Cel wybierz pozycję Azure, a następnie wybierz pozycję Dalej.

    2. W polu Określony element docelowy wybierz pozycję aplikacja systemu Azure Service (Windows), a następnie wybierz przycisk Dalej.

      • Jeśli okno dialogowe wskazuje, że inne wymagane składniki są niezbędne do ukończenia instalacji, wybierz przycisk Zakończ. Zostanie otwarty Instalator programu Visual Studio. Potwierdź opcje i wybierz pozycję Zainstaluj.
    3. W polu App Service wybierz odpowiednią usługę App Service dla subskrypcji, a następnie wybierz pozycję Zakończ.

      Zrzut ekranu przedstawiający sposób przygotowania procesu publikowania na platformę Azure w programie Visual Studio 2017 lub nowszym przy użyciu istniejącej subskrypcji.

      Po zakończeniu procesu tworzenia publikowania wybierz pozycję Zamknij.

  8. Program Visual Studio wyświetla stan w oknie "Działanie publikowania w internecie", a także w oknie Postęp tworzenia profilu publikowania. Po wyświetleniu komunikatu "Gotowe do opublikowania" dla aplikacji internetowej wybierz pozycję Publikuj.

    Zrzut ekranu przedstawiający sposób publikowania aplikacji internetowej w programie Visual Studio.

  9. Po pomyślnym opublikowaniu domyślna przeglądarka zostanie otwarta pod adresem URL witryny. Adres URL witryny jest również wyświetlany w oknie Publikowanie .

    Zrzut ekranu przedstawiający przeglądarkę otwartą pod adresem URL witryny dla opublikowanej aplikacji internetowej.

    Jeśli adres URL witryny nie zostanie otwarty automatycznie, wybierz pozycję Otwórz witrynę , aby wyświetlić aplikację internetową w przeglądarce:

    Zrzut ekranu przedstawiający sposób otwierania adresu URL witryny dla opublikowanej aplikacji internetowej w przeglądarce.

  10. Po otwarciu przeglądarki może zostać wyświetlony komunikat "Nie można wyświetlić strony, ponieważ wystąpił wewnętrzny błąd serwera". Ten komunikat wskazuje, że środowisko języka Python na serwerze nie jest w pełni skonfigurowane, w takim przypadku wykonaj następujące czynności:

    1. Upewnij się, że masz zainstalowane odpowiednie rozszerzenie witryny języka Python. Aby uzyskać więcej informacji, zobacz Szybki start: wdrażanie aplikacji internetowej w języku Python (Django lub Flask) w usłudze aplikacja systemu Azure Service.

    2. Dokładnie sprawdź ścieżkę do interpretera języka Python w web.config pliku. Ścieżka musi być dokładnie zgodna z lokalizacją instalacji wybranego rozszerzenia lokacji.

    3. Użyj konsoli Kudu, aby uaktualnić wszystkie pakiety wymienione w pliku aplikacji requirements.txt . Przejdź do tego samego folderu języka Python używanego web.config w pliku, na przykład /home/python361x64. Uruchom następujące polecenie, zgodnie z opisem w sekcji konsoli Kudu:

      python -m pip install --upgrade -r /home/site/wwwroot/requirements.txt
      

      Jeśli podczas uruchamiania tego polecenia są wyświetlane błędy uprawnień, upewnij się, że uruchamiasz polecenie w folderze rozszerzenia witryny. Nie uruchamiaj polecenia w folderze, który ma jedną z domyślnych instalacji języka Python usługi App Service. Ponieważ nie można modyfikować tych środowisk domyślnych, próba zainstalowania pakietów z pewnością kończy się niepowodzeniem.

    4. Aby uzyskać szczegółowe dane wyjściowe błędu, dodaj następujący wiersz do web.config pliku w węźle <system.webServer> , który zapewnia bardziej szczegółowe dane wyjściowe błędu:

      <httpErrors errorMode="Detailed"></httpErrors>
      
    5. Spróbuj ponownie uruchomić usługę App Service po zainstalowaniu nowych pakietów. Ponowne uruchomienie nie jest konieczne podczas zmieniania web.config pliku, ponieważ usługa App Service wykonuje automatyczne ponowne uruchomienie za każdym razem, gdy web.config plik ulegnie zmianie.

      Napiwek

      Jeśli wprowadzisz jakiekolwiek zmiany w pliku requirements.txt aplikacji, zainstaluj ponownie wszystkie pakiety wymienione w tym pliku, używając konsoli Kudu.

  11. Po pełnym skonfigurowaniu środowiska serwera odśwież stronę w przeglądarce, aby wyświetlić aplikację internetową:

    Zrzut ekranu przedstawiający wyniki publikowania aplikacji Bottle, Flask i Django w celu aplikacja systemu Azure Service w programie Visual Studio.

Publikowanie w usłudze App Service — Visual Studio 2015

Wykonaj następujące kroki, aby opublikować aplikację internetową w języku Python w usłudze aplikacja systemu Azure w programie Visual Studio 2015.

  1. W Eksploratorze rozwiązań kliknij prawym przyciskiem myszy projekt i wybierz polecenie Opublikuj.

  2. W oknie dialogowym Publikowanie wybierz pozycję Microsoft aplikacja systemu Azure Service:

    Zrzut ekranu przedstawiający sposób publikowania na platformie Azure w programie Visual Studio i wybierania usługi aplikacja systemu Azure.

  3. Wybierz pozycję Microsoft aplikacja systemu Azure Service jako element docelowy publikowania. W następnym oknie dialogowym wybierz istniejącą usługę App Service lub wybierz pozycję Nowy , aby utworzyć nową.

  4. Szczegóły usługi App Service są wyświetlane na karcie Połączenie ion okna dialogowego Publikowanie:

    Zrzut ekranu przedstawiający sposób publikowania na platformie Azure w programie Visual Studio i wyświetlania połączenia usługi App Service.

  5. W razie potrzeby wybierz przycisk Dalej , aby przejrzeć inne ustawienia.

  6. Wybierz Publikuj. Po wdrożeniu aplikacji na platformie Azure domyślna przeglądarka zostanie otwarta pod adresem URL witryny.

W ramach tego procesu program Visual Studio wykonuje również następujące czynności:

  • web.config Tworzy plik na serwerze zawierający odpowiednie wskaźniki do funkcji aplikacji wsgi_app i domyślnego interpretera języka Python 3.4 usługi App Service.
  • Wyłącza przetwarzanie plików w folderze statycznym projektu. (Reguły tej akcji znajdują się w web.config pliku).
  • Publikuje środowisko wirtualne na serwerze.
  • web.debug.config Dodaje plik i narzędzia do debugowania w celu włączenia zdalnego debugowania. W przypadku programu Visual Studio 2019 w wersji 16.4 lub starszej narzędzia debugowania są ptvsd. W przypadku programu Visual Studio 2019 w wersji 16.5 lub nowszej narzędzia debugowania są debugowane.

Jak wspomniano wcześniej, te automatyczne kroki upraszczają proces publikowania, ale mogą utrudnić kontrolowanie środowiska języka Python. Na przykład plik jest tworzony tylko na serwerze, web.config ale nie jest dodawany do projektu. Proces publikowania trwa również dłużej, ponieważ kopiuje całe środowisko wirtualne z komputera deweloperskiego, a nie polega na konfiguracji serwera.

W końcu możesz chcieć zachować własny web.config plik i użyć requirements.txt go do bezpośredniej obsługi pakietów na serwerze. W przypadku korzystania z requirements.txt pliku, w szczególności, można zagwarantować, że środowiska programistyczne i serwerowe są zawsze zgodne.