Szybki start: wdrażanie aplikacji internetowej w języku Python (Django lub Flask) w celu Azure App Service

W tym przewodniku Szybki start wdrożysz aplikację internetową w języku Python (Django lub Flask), aby Azure App Service. Azure App Service to w pełni zarządzana usługa hostingu sieci Web, która obsługuje aplikacje języka Python 3.7 i nowsze hostowane w środowisku serwera z systemem Linux.

Do wykonania czynności opisanych w tym przewodniku Szybki start potrzebne są następujące elementy:

  1. Konto platformy Azure z aktywną subskrypcją. Utwórz bezpłatne konto.
  2. Środowisko Python w wersji 3.9 lub nowszej jest zainstalowane lokalnie.

1 — Przykładowa aplikacja

Ten przewodnik Szybki start można ukończyć przy użyciu platformy Flask lub Django. Udostępniono przykładową aplikację w każdej strukturze, która pomoże Ci wykonać czynności opisane w tym przewodniku Szybki start. Pobierz lub sklonuj przykładową aplikację do lokalnej stacji roboczej.

git clone https://github.com/Azure-Samples/msdocs-python-flask-webapp-quickstart

Aby uruchomić aplikację lokalnie:

  1. Przejdź do folderu aplikacji:

    cd msdocs-python-flask-webapp-quickstart
    
  2. Utwórz środowisko wirtualne dla aplikacji:

    py -m venv .venv
    .venv\scripts\activate
    
  3. Zainstaluj zależności:

    pip install -r requirements.txt
    
  4. Uruchom aplikację:

    flask run
    
  5. Przejdź do przykładowej aplikacji w http://localhost:5000 przeglądarce internetowej.

    Zrzut ekranu przedstawiający aplikację Platformy Flask uruchomioną lokalnie w przeglądarce

Masz problemy? Daj nam znać.

2 — Tworzenie aplikacji internetowej na platformie Azure

Aby hostować aplikację na platformie Azure, musisz utworzyć aplikację internetową Azure App Service na platformie Azure. Aplikację internetową można utworzyć przy użyciu Azure Portal, programu VS Code przy użyciu pakietu rozszerzeń narzędzi platformy Azure lub interfejsu wiersza polecenia platformy Azure.

Polecenia interfejsu wiersza polecenia platformy Azure można uruchamiać na komputerze z zainstalowanym interfejsem wiersza polecenia platformy Azure.

Interfejs wiersza polecenia platformy Azure zawiera polecenie az webapp up , które spowoduje utworzenie niezbędnych zasobów i wdrożenie aplikacji w jednym kroku.

W razie potrzeby zaloguj się do platformy Azure przy użyciu polecenia az login.

az login

Utwórz aplikację internetową i inne zasoby, a następnie wdróż kod na platformie Azure przy użyciu polecenia az webapp up.

az webapp up --runtime PYTHON:3.9 --sku B1 --logs
  • Parametr --runtime określa, jaka wersja języka Python jest uruchomiona. W tym przykładzie użyto języka Python 3.9. Aby wyświetlić listę wszystkich dostępnych środowisk uruchomieniowych, użyj polecenia az webapp list-runtimes --os linux --output table.
  • Parametr --sku definiuje rozmiar (procesor, pamięć) i koszt planu usługi App Service. W tym przykładzie użyto planu usługi B1 (podstawowa), który spowoduje niewielkie koszty w ramach subskrypcji platformy Azure. Aby uzyskać pełną listę planów App Service, wyświetl stronę cennika App Service.
  • Flaga --logs konfiguruje domyślne rejestrowanie wymagane do włączenia wyświetlania strumienia dziennika bezpośrednio po uruchomieniu aplikacji internetowej.
  • Opcjonalnie możesz określić nazwę z argumentem --name <app-name>. Jeśli go nie podasz, nazwa zostanie wygenerowana automatycznie.
  • Opcjonalnie możesz uwzględnić argument --location <location-name> , w którym <location_name> znajduje się dostępny region świadczenia usługi Azure. Listę dozwolonych regionów dla konta platformy Azure można pobrać, uruchamiając az account list-locations polecenie .

Wykonanie polecenia może potrwać kilka minut. Gdy polecenie jest uruchomione, udostępnia komunikaty dotyczące tworzenia grupy zasobów, planu App Service oraz zasobu aplikacji, konfigurowania rejestrowania i wdrażania zip. Następnie zostanie wyświetlony komunikat "Możesz uruchomić aplikację pod adresem http://< app-name.azurewebsites.net>", czyli adres URL aplikacji na platformie Azure.

The webapp '<app-name>' doesn't exist
Creating Resource group '<group-name>' ...
Resource group creation complete
Creating AppServicePlan '<app-service-plan-name>' ...
Creating webapp '<app-name>' ...
Configuring default logging for the app, if not already enabled
Creating zip with contents of dir /home/cephas/myExpressApp ...
Getting scm site credentials for zip deployment
Starting zip deployment. This operation can take a while to complete ...
Deployment endpoint responded with status code 202
You can launch the app at http://<app-name>.azurewebsites.net
{
  "URL": "http://<app-name>.azurewebsites.net",
  "appserviceplan": "<app-service-plan-name>",
  "location": "centralus",
  "name": "<app-name>",
  "os": "<os-type>",
  "resourcegroup": "<group-name>",
  "runtime_version": "python|3.9",
  "runtime_version_detected": "0.0",
  "sku": "FREE",
  "src_path": "<your-folder-location>"
}

Uwaga

Polecenie az webapp up wykonuje następujące akcje:

Masz problemy? Daj nam znać.

3 — Wdrażanie kodu aplikacji na platformie Azure

usługa aplikacja systemu Azure obsługuje wiele metod wdrażania kodu aplikacji na platformie Azure, w tym obsługę GitHub Actions i wszystkich głównych narzędzi ciągłej integracji/ciągłego wdrażania. W tym artykule opisano sposób wdrażania kodu z lokalnej stacji roboczej na platformie Azure.

Ponieważ poprzedni krok utworzył niezbędne zasoby i wdrożono aplikację w jednym kroku, możesz przejść do 4 — przejdź do aplikacji.


Masz problemy? Najpierw zapoznaj się z przewodnikiem rozwiązywania problemów. W przeciwnym razie daj nam znać.

4 — Przechodzenie do aplikacji

Przejdź do wdrożonej aplikacji w przeglądarce internetowej pod adresem URL http://<app-name>.azurewebsites.net. Jeśli zostanie wyświetlona domyślna strona aplikacji, zaczekaj minutę i odśwież przeglądarkę.

Przykładowy kod języka Python uruchamia kontener systemu Linux w App Service przy użyciu wbudowanego obrazu.

Zrzut ekranu przedstawiający aplikację działającą na platformie Azure

Gratulacje! Aplikacja języka Python została wdrożona w celu App Service.

Masz problemy? Najpierw zapoznaj się z przewodnikiem rozwiązywania problemów. W przeciwnym razie daj nam znać.

5 — Dzienniki strumienia

Azure App Service przechwytuje wszystkie komunikaty wyjściowe do konsoli, aby ułatwić diagnozowanie problemów z aplikacją. Przykładowe aplikacje zawierają print() instrukcje, aby zademonstrować tę funkcję.

@app.route('/')
def index():
   print('Request for index page received')
   return render_template('index.html')

@app.route('/favicon.ico')
def favicon():
    return send_from_directory(os.path.join(app.root_path, 'static'),
                               'favicon.ico', mimetype='image/vnd.microsoft.icon')

@app.route('/hello', methods=['POST'])
def hello():
   name = request.form.get('name')

   if name:
       print('Request for hello page received with name=%s' % name)

Zawartość dzienników diagnostycznych App Service można przejrzeć w Azure Portal, VS Code lub przy użyciu interfejsu wiersza polecenia platformy Azure.

Najpierw należy skonfigurować Azure App Service w celu wyprowadzania dzienników do systemu plików App Service przy użyciu polecenia az webapp log config.

az webapp log config \
    --web-server-logging filesystem \
    --name $APP_SERVICE_NAME \
    --resource-group $RESOURCE_GROUP_NAME

Aby przesłać strumieniowo dzienniki, użyj polecenia az webapp log tail .

az webapp log tail \
    --name $APP_SERVICE_NAME \
    --resource-group $RESOURCE_GROUP_NAME

Odśwież stronę główną w aplikacji lub spróbuj wygenerować niektóre komunikaty dziennika. Dane wyjściowe powinny wyglądać podobnie do poniższych.

Starting Live Log Stream ---

2021-12-23T02:15:52.740703322Z Request for index page received
2021-12-23T02:15:52.740740222Z 169.254.130.1 - - [23/Dec/2021:02:15:52 +0000] "GET / HTTP/1.1" 200 1360 "https://msdocs-python-webapp-quickstart-123.azurewebsites.net/hello" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0"
2021-12-23T02:15:52.841043070Z 169.254.130.1 - - [23/Dec/2021:02:15:52 +0000] "GET /static/bootstrap/css/bootstrap.min.css HTTP/1.1" 200 0 "https://msdocs-python-webapp-quickstart-123.azurewebsites.net/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0"
2021-12-23T02:15:52.884541951Z 169.254.130.1 - - [23/Dec/2021:02:15:52 +0000] "GET /static/images/azure-icon.svg HTTP/1.1" 200 0 "https://msdocs-python-webapp-quickstart-123.azurewebsites.net/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0"
2021-12-23T02:15:53.043211176Z 169.254.130.1 - - [23/Dec/2021:02:15:53 +0000] "GET /favicon.ico HTTP/1.1" 404 232 "https://msdocs-python-webapp-quickstart-123.azurewebsites.net/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0"

2021-12-23T02:16:01.304306845Z Request for hello page received with name=David
2021-12-23T02:16:01.304335945Z 169.254.130.1 - - [23/Dec/2021:02:16:01 +0000] "POST /hello HTTP/1.1" 200 695 "https://msdocs-python-webapp-quickstart-123.azurewebsites.net/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0"
2021-12-23T02:16:01.398399251Z 169.254.130.1 - - [23/Dec/2021:02:16:01 +0000] "GET /static/bootstrap/css/bootstrap.min.css HTTP/1.1" 304 0 "https://msdocs-python-webapp-quickstart-123.azurewebsites.net/hello" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0"
2021-12-23T02:16:01.430740060Z 169.254.130.1 - - [23/Dec/2021:02:16:01 +0000] "GET /static/images/azure-icon.svg HTTP/1.1" 304 0 "https://msdocs-python-webapp-quickstart-123.azurewebsites.net/hello" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0"

Masz problemy? Najpierw zapoznaj się z przewodnikiem rozwiązywania problemów. W przeciwnym razie daj nam znać.

Czyszczenie zasobów

Po zakończeniu pracy z przykładową aplikacją możesz usunąć wszystkie zasoby aplikacji z platformy Azure. Nie będą naliczane dodatkowe opłaty i nie będą naliczane opłaty za subskrypcję platformy Azure. Usunięcie grupy zasobów spowoduje również usunięcie wszystkich zasobów w grupie zasobów i jest najszybszym sposobem usunięcia wszystkich zasobów platformy Azure dla aplikacji.

Usuń grupę zasobów przy użyciu polecenia az group delete .

az group delete \
    --name msdocs-python-webapp-quickstart \
    --no-wait

Argument --no-wait umożliwia zwracanie polecenia przed ukończeniem operacji.

Masz problemy? Daj nam znać.

Następne kroki