Avvio rapido: Distribuire un'app Web Python (Django, Flask o FastAPI) nel servizio app di Azure

In questa guida introduttiva si distribuisce un'app Web Python (Django, Flask o FastAPI) nel servizio app di Azure. Il Servizio app di Azure è un servizio di hosting Web completamente gestito che supporta app Python ospitate in un ambiente server Linux.

Per completare l'esercitazione introduttiva, sono necessari gli elementi seguenti:

Note

Questo articolo contiene istruzioni aggiornate per la distribuzione di un'app Web Python con il Servizio app di Azure. Python non è più supportato in Windows.

Passare alla fine

È possibile distribuire rapidamente l'app di esempio in questa esercitazione usando l'interfaccia della riga di comando per sviluppatori di Azure e visualizzarla in esecuzione in Azure. È sufficiente eseguire i comandi seguenti in Azure Cloud Shelle seguire il prompt:

mkdir flask-quickstart
cd flask-quickstart
azd init --template https://github.com/Azure-Samples/msdocs-python-flask-webapp-quickstart
azd up

E per eliminare le risorse:

azd down

Applicazione di esempio

Questo avvio rapido può essere completato usando Flask, Django o FastAPI. Viene fornita un'applicazione di esempio in ogni framework che facilita l’uso di questo avvio rapido. Scaricare o clonare l'applicazione di esempio nella propria workstation locale.

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

Per eseguire l'applicazione in locale:

  1. Passare alla cartella dell'applicazione:

    cd msdocs-python-flask-webapp-quickstart
    
  2. Creare un ambiente virtuale per l’app:

    py -m venv .venv
    .venv\scripts\activate
    
  3. Installare le dipendenze:

    pip install -r requirements.txt
    
  4. Eseguire l'app:

    flask run
    
  5. Passare all'applicazione di esempio in http://localhost:5000 un Web browser.

    Screenshot dell'app Flask in esecuzione in locale in un browser

Problemi? Fateci sapere.

Creare un'app Web in Azure

Per ospitare l'applicazione in Azure, è necessario creare un'app Web del servizio app di Azure in Azure. È possibile creare un'app Web usando l'interfaccia della riga di comando di Azure, VS Code, il pacchetto di estensione Strumenti di Azure o il portale di Azure.

I comandi dell'interfaccia della riga di comando di Azure possono essere eseguiti in un computer con l'interfaccia della riga di comando di Azure installata.

Crea le risorse Azure e poi distribuisci la tua applicazione usando comandi separati per interfaccia della riga di comando di Azure.

Se necessario, accedere ad Azure usando az login.

az login

Sostituisci <app-name> con un nome unico a livello globale. Crea un gruppo di risorse e un piano di App Service, poi crea l'app web usando az webapp create.

az group create --name myResourceGroup --location eastus
az appservice plan create --name myAppServicePlan --resource-group myResourceGroup --sku P0v3 --is-linux
az webapp create --name <app-name> --resource-group myResourceGroup --plan myAppServicePlan --runtime "PYTHON:3.14"
az webapp config appsettings set --name <app-name> --resource-group myResourceGroup --settings SCM_DO_BUILD_DURING_DEPLOYMENT=true
  • Usa il parametro --runtime per specificare la versione di Python su cui viene eseguita la tua app. Questo esempio utilizza Python 3.14. Per elencare i runtime Python supportati, usa az webapp list-runtimes --os-type linux --runtime python --output table.
  • Usa il --sku parametro per definire la dimensione (CPU e memoria) e il costo del piano App Service. Questo esempio utilizza il piano di servizio P0v3 (Premium v3), che comporta un costo nel tuo abbonamento Azure. Per un elenco completo dei piani di servizio app, vedere Prezzi del servizio app.
  • Sostituisci eastus con la tua regione preferita. Per elencare le regioni disponibili, esegui az account list-locations con --output table.
  • L'impostazione SCM_DO_BUILD_DURING_DEPLOYMENT consente la build di Oryx, inclusa l'installazione delle dipendenze in requirements.txt, quando si distribuisce l'archivio sorgente.

Crea un file ZIP con i file dell'applicazione, incluso requirements.txt, alla radice dell'archivio. Escludere file locali come .venv, .git e .env. Per istruzioni specifiche per la piattaforma, vedi Crea un file ZIP della tua applicazione nella scheda Deploy usando un file ZIP. Poi distribuisci l'archivio usando az webapp deploy:

az webapp deploy --name <app-name> --resource-group myResourceGroup --src-path <zip-file-path> --type zip

La distribuzione può richiedere alcuni minuti. Naviga fino a https://<app-name>.azurewebsites.net per visualizzare la tua app. Per visualizzare i log in streaming, abilitali eseguendo az webapp log config --name <app-name> --resource-group myResourceGroup --docker-container-logging filesystem, quindi esegui az webapp log tail --name <app-name> --resource-group myResourceGroup.

Problemi? Fateci sapere.

Distribuire il codice dell'applicazione in Azure

Il servizio app di Azure supporta più metodi per distribuire il codice dell'applicazione in Azure, tra cui GitHub Actions e tutti i principali strumenti di integrazione continua e recapito continuo (CI/CD). Questo articolo è incentrato su come distribuire il codice da una workstation locale in Azure.

I comandi interfaccia della riga di comando di Azure nel passaggio precedente hanno creato le risorse e distribuito la tua applicazione. Puoi passare al passo successivo.


Problemi? Fare riferimento prima alla guida alla risoluzione dei problemi. Se questo non ci aiuta, fateci sapere.

Configurare lo script di avvio

In base alla presenza di determinati file in una distribuzione, il Servizio app rileva automaticamente se un'app è un'app Django o Flask ed esegue i passaggi predefiniti per eseguire l'app. Per le app basate su altri framework web come FastAPI, potresti dover configurare uno script di avvio per App Service per far girare la tua app. Altrimenti, App Service esegue un'app predefinita di sola lettura situata nella cartella opt/defaultsite .

  • Python 3.14 e versioni successive: App Service rileva e esegue automaticamente le app FastAPI. Non è necessario alcun comando di avvio.
  • Python 3.13 e precedenti: devi configurare un comando di avvio personalizzato.

Per altre informazioni su come il servizio app esegue app Python e su come configurare e personalizzarne il comportamento con l'app, vedere Configurare un'app Python Linux per il servizio app di Azure.

Il Servizio app rileva automaticamente la presenza di un'app Flask. Per questo avvio rapido non è necessaria alcuna configurazione aggiuntiva.

Passare all'app

Accedere all'applicazione distribuita nel browser. È possibile seguire un collegamento dal portale di Azure. Passare alla pagina Panoramica e selezionare Dominio predefinito. Se viene visualizzata una pagina dell'app predefinita, attendere un minuto e aggiornare il browser.

Il codice di esempio Python esegue un contenitore Linux nel Servizio app usando un'immagine predefinita.

Screenshot dell’applicazione in esecuzione in Azure

Congratulazioni! La distribuzione dell'app Python nel Servizio app di Azure è stata completata.

Problemi? Fare riferimento prima alla guida alla risoluzione dei problemi. Se questo non ci aiuta, fateci sapere.

Eseguire lo streaming dei log

Il servizio app di Azure acquisisce tutto l’output dei messaggi nella console per facilitare la diagnosi dei problemi con l'applicazione. Le app di esempio includono istruzioni print() per illustrare questa funzionalità.

@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)
       return render_template('hello.html', name = name)
   else:
       print('Request for hello page received with no name or blank name -- redirecting')
       return redirect(url_for('index'))

È possibile esaminare il contenuto dei log di diagnostica del servizio app usando l'interfaccia della riga di comando di Azure, VS Code o il portale di Azure.

Prima di tutto, devi configurare il Servizio App di Azure per l'output dei log nel file system del Servizio App usando il comando az webapp log config.

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

Per trasmettere i log, usare il comando az webapp log tail .

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

Aggiornare la home page nell'app o tentare altre richieste per la generazione di alcuni messaggi di log. L'output dovrebbe avere un aspetto simile al seguente.

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"

Problemi? Fare riferimento prima alla guida alla risoluzione dei problemi. Se questo non ci aiuta, fateci sapere.

Pulire le risorse

Al termine dell'app di esempio, è possibile rimuovere da Azure tutte le risorse per l'app. La rimozione del gruppo di risorse consente di evitare addebiti aggiuntivi e di mantenere in ordine la sottoscrizione di Azure. La rimozione del gruppo di risorse rimuove anche tutte le risorse nel gruppo di risorse ed è il modo più rapido per rimuovere tutte le risorse di Azure per l'app.

Eliminare il gruppo di risorse usando il comando az group delete .

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

Con l'argomento --no-wait, il comando restituisce il risultato prima del completamento dell'operazione.

Problemi? Fateci sapere.

Passaggi successivi