Configurare l'ambiente locale per la distribuzione di app Web Python in Azure
Questo articolo illustra come configurare l'ambiente locale per sviluppare app Web python e distribuirle in Azure. L'app Web può essere pura python o usare uno dei framework Web comuni basati su Python, ad esempio Django, Flasko FastAPI.
Le app Web Python sviluppate localmente possono essere distribuite in servizi come Servizio app di Azure, App per contenitori di Azure, o App Web statiche di Azure. Sono disponibili molte opzioni per la distribuzione. Ad esempio, per la distribuzione del servizio app, è possibile scegliere di eseguire la distribuzione dal codice, da un contenitore Docker o da un'app Web statica. Se si esegue la distribuzione dal codice, è possibile eseguire la distribuzione con Visual Studio Code con l'interfaccia della riga di comando di Azure, da un repository Git locale o con GitHub actions. Se si esegue la distribuzione in un contenitore Docker, è possibile farlo da Registro Azure Container, dall'hub Docker o da qualsiasi registro privato.
Prima di continuare con questo articolo, è consigliabile esaminare il Configurare l'ambiente di sviluppo per indicazioni sulla configurazione dell'ambiente di sviluppo per Python e Azure. Di seguito verrà descritta l'installazione e la configurazione specifiche per lo sviluppo di app Web Python.
Dopo aver configurato l'ambiente locale per lo sviluppo di app Web Python, si sarà pronti per affrontare questi articoli:
- Avvio rapido: Creare un'app Web Python (Django o Flask) nel servizio app di Azure.
- Esercitazione: Distribuire un'app Web Python (Django o Flask) con PostgreSQL in Azure
- Creare e distribuire un'app Web Flask in Azure con un'identità gestita assegnata dal sistema
Uso di Visual Studio Code
Il Visual Studio Code ambiente di sviluppo integrato (IDE) è un modo semplice per sviluppare app Web Python e usare le risorse di Azure usate dalle app Web.
Suggerimento
Assicurati di avere installata l'estensione Python. Per una panoramica dell'uso di Python in VS Code, vedere Introduzione a Python in VS Code.
In VS Code si lavora con le risorse di Azure tramite le estensioni di VS Code . È possibile installare le estensioni dalla Estensioni Visualizzazione o dalla combinazione di tasti CTRL+MAIUSC+X. Per le app Web Python, è probabile che si stia usando una o più delle estensioni seguenti:
L'estensione Azure App Service consente di interagire con Azure App Service all'interno di Visual Studio Code. Il servizio app offre un hosting completamente gestito per le applicazioni Web, inclusi siti Web e API Web.
L'estensione
App Web statiche di Azure consente di creare app Web statiche di Azure direttamente da VS Code. Static Web Apps è serverless e un'ottima scelta per l'hosting di contenuti statici. Se si prevede di usare i contenitori, installare:
L'estensione Docker per costruire e usare i container in locale. Ad esempio, è possibile eseguire un'app Web Python in contenitori nel servizio app di Azure usando App Web per contenitori.
L'estensione Azure Container Apps per creare e distribuire applicazioni containerizzate direttamente da Visual Studio Code.
Sono disponibili altre estensioni, ad esempio Archiviazione di Azure, Database di Azuree estensioni risorse di Azure. È sempre possibile aggiungere queste estensioni e altre estensioni in base alle esigenze.
Le estensioni in Visual Studio Code sono accessibili come previsto in un'interfaccia IDE tipica e con supporto di parole chiave avanzate usando il riquadro comandi VS Code. Per accedere al riquadro comandi, usare la combinazione di tasti CTRL+MAIUSC+P. Il riquadro comandi è un buon modo per visualizzare tutte le possibili azioni che è possibile eseguire su una risorsa di Azure. L'immagine sottostante mostra alcune delle azioni per il Servizio App.
Uso dei contenitori di sviluppo in Visual Studio Code
Gli sviluppatori Python spesso si basano su ambienti virtuali per creare un ambiente isolato e autonomo per un progetto specifico. Gli ambienti virtuali consentono agli sviluppatori di gestire separatamente dipendenze, pacchetti e versioni python per ogni progetto, evitando conflitti tra progetti diversi che potrebbero richiedere versioni di pacchetti diverse.
Anche se ci sono opzioni popolari in Python per la gestione di ambienti come
Ad esempio, uno sviluppatore può configurare un singolo contenitore di sviluppo in modo da includere tutti gli elementi necessari per lavorare in un progetto, inclusi un server di database PostgreSQL insieme al database di progetto e ai dati di esempio, un server Redis, Nginx, codice front-end, librerie client come React e così via. Inoltre, il contenitore conterrà il codice del progetto, il runtime Python e tutte le dipendenze del progetto Python con le versioni corrette. Infine, il contenitore può specificare le estensioni di Visual Studio Code da installare in modo che l'intero team disponga dello stesso strumento disponibile. Quindi, quando un nuovo sviluppatore si unisce al team, l'intero ambiente, inclusi strumenti, dipendenze e dati, è pronto per essere clonato nel computer locale e può iniziare subito a lavorare.
Vedere Sviluppo all'interno di un contenitore.
Uso di Visual Studio 2022
Visual Studio 2022 è un ambiente di sviluppo integrato completo con supporto per lo sviluppo di applicazioni Python e molte estensioni e strumenti predefiniti per accedere e distribuire alle risorse di Azure. Anche se la maggior parte della documentazione per lo sviluppo di app Web Python in Azure è incentrata sull'uso di Visual Studio Code, Visual Studio 2022 è un'ottima opzione se lo hai già installato, ti trovi a tuo agio nell'utilizzarlo e lo stai usando per progetti .NET o C++.
In generale, vedere Visual Studio | La documentazione di Python per tutta la documentazione relativa all'uso di Python in Visual Studio 2022.
Per la procedura di installazione, vedere Installare il supporto python in Visual Studio che illustra i passaggi dell'installazione del carico di lavoro Python in Visual Studio 2022.
Per un flusso di lavoro generale sull'uso di Python per lo sviluppo Web, vedere Avvio rapido: Creare la prima app Web Python con Visual Studio. Questo articolo è utile per comprendere come creare un'applicazione Web Python da zero , ma non include la distribuzione in Azure.
Per usare Visual Studio 2022 per gestire le risorse di Azure e distribuirlo in Azure, vedere Sviluppo di Azure con Visual Studio. Anche se gran parte della documentazione qui descrive in modo specifico .NET, gli strumenti per la gestione delle risorse di Azure e la distribuzione in Azure funzionano allo stesso modo indipendentemente dal linguaggio di programmazione.
Quando non è disponibile uno strumento predefinito in Visual Studio 2022 per una determinata attività di gestione o distribuzione di Azure, è sempre possibile usare comandi dell'interfaccia della riga di comando di Azure.
Uso di altri IDE
Se si usa un altro IDE che non ha supporto esplicito per Azure, è possibile usare l'interfaccia della riga di comando di Azure per gestire le risorse di Azure. Nello screenshot seguente viene aperta una semplice app Web Flask nell'IDE PyCharm. L'app Web può essere distribuita in un servizio app di Azure usando il comando az webapp up
. Nel screenshot, il comando CLI viene eseguito nel terminale emulatore integrato di PyCharm. Se l'IDE non ha un emulatore incorporato, è possibile usare qualsiasi terminale e lo stesso comando. L'interfaccia della riga di comando di Azure deve essere installata nel computer ed essere accessibile in entrambi i casi.
Comandi CLI di Azure
Quando si lavora in locale con le app Web usando i comandi dell'interfaccia a riga di comando di Azure , in genere si useranno i comandi seguenti:
Comando | Descrizione |
---|---|
az webapp | Gestisce le app Web. Include i sottocomandi creare per creare un'app Web e il up per creare e distribuire da un'area di lavoro locale |
az container app | Gestisce le app di container di Azure. |
az staticwebapp | Gestisce app Web statiche di Azure. |
az group | Gestisce gruppi di risorse e distribuzioni di modelli. Usare il sottocomando create per creare un gruppo di risorse per inserire le risorse di Azure. |
az appservice | Gestisce i piani di servizio app. |
az config | Configurazione CLI di Azure gestita. Per salvare le sequenze di tasti, è possibile definire un percorso predefinito o un gruppo di risorse usato automaticamente da altri comandi. |
Di seguito è riportato un comando di esempio di Azure CLI per creare un'app Web e le relative risorse associate e distribuirla su Azure in un unico passaggio utilizzando az webapp up. Eseguire il comando nella directory radice della tua app web.
az webapp up \
--runtime PYTHON:3.9 \
--sku B1 \
--logs
Per altre informazioni su questo esempio, vedere Avvio rapido: Distribuire un'app Web Python (Django o Flask) nel servizio app di Azure.
Tieni presente che puoi anche usare l'interfaccia della riga di comando di Azure da un Azure Cloud Shellper alcuni dei tuoi flussi di lavoro di Azure. Azure Cloud Shell è una shell interattiva, autenticata e accessibile dal browser per la gestione delle risorse di Azure.
Pacchetti chiave di Azure SDK
Nelle app Web Python è possibile fare riferimento a livello di codice ai servizi di Azure usando Azure SDK per Python. Questo SDK è illustrato in modo approfondito nella sezione Usare le librerie di Azure (SDK) per Python. In questa sezione verranno brevemente menzionati alcuni pacchetti chiave dell'SDK che verranno usati nello sviluppo Web. Verrà inoltre illustrato un esempio della procedura consigliata per l'autenticazione del codice con le risorse di Azure.
Di seguito sono riportati alcuni dei pacchetti comunemente usati nello sviluppo di app Web. È possibile installare i pacchetti nell'ambiente virtuale direttamente con pip
. In alternativa, inserire il nome dell'indice del pacchetto Python (Pypi) nel file requirements.txt.
Documentazione dell'SDK | Installare | Indice del pacchetto Python |
---|---|---|
Azure Identity | pip install azure-identity |
azure-identity |
BLOB di Archiviazione di Azure | pip install azure-storage-blob |
archiviazione-blob-di-azure |
Azure Cosmos DB | pip install azure-cosmos |
azure-cosmos |
segreti di Azure Key Vault | pip install azure-keyvault-secrets |
azure-keyvault-secrets |
Il pacchetto azure-identity consente alla web app di eseguire l'autenticazione con Microsoft Entra ID. Per l'autenticazione nel codice dell'applicazione web, si raccomanda di usare il DefaultAzureCredential nel pacchetto azure-identity
. Ecco un esempio di come accedere ad Azure Storage. Il modello è simile per altre risorse di Azure.
from azure.identity import DefaultAzureCredential
from azure.storage.blob import BlobServiceClient
azure_credential = DefaultAzureCredential()
blob_service_client = BlobServiceClient(
account_url=account_url,
credential=azure_credential)
Il DefaultAzureCredential
cercherà nelle posizioni predefinite le informazioni sull'account, ad esempio nelle variabili di ambiente o nell'accesso dalla CLI di Azure. Per informazioni approfondite sulla logica di DefaultAzureCredential
, vedere Autenticare le app Python nei servizi di Azure usando Azure SDK per Python.
Framework basati su Python per il web
Nello sviluppo di app Web Python si usano spesso framework Web basati su Python. Questi framework forniscono funzionalità quali modelli di pagina, gestione delle sessioni, accesso al database e facile accesso agli oggetti richiesta e risposta HTTP. I framework consentono di evitare la necessità di reinventare la rotellina per le funzionalità comuni.
Tre framework Web Python comuni sono Django, Flasko FastAPI. Questi e altri framework Web possono essere usati con Azure.
Di seguito è riportato un esempio di come iniziare rapidamente a usare questi framework in locale. Eseguendo questi comandi, si otterrà un'applicazione, anche se semplice che potrebbe essere distribuita in Azure. Eseguire questi comandi all'interno di un ambiente virtuale .
Passaggio 1: Scaricare i framework con pip.
Passaggio 2: Creare un'app Hello World.
- Django
- Flask
- FastAPI
Creare un progetto di esempio utilizzando il comando django-admin startproject . Il progetto include un file manage.py che rappresenta il punto di ingresso per l'esecuzione dell'app.
django-admin startproject hello_world
Passaggio 3: Eseguire il codice in locale.
- Django
- flask
- FastAPI
Django usa WSGI per eseguire l'app.
python hello_world\manage.py runserver
Passaggio 4: Esplorare l'app hello world.
- Django
- Flask
- FastAPI
http://127.0.0.1:8000/
A questo punto, aggiungere un file requirements.txt e quindi distribuire l'app Web in Azure o containerizzarla con Docker.