Share via


Esercitazione: Uso di Service Connessione or per creare un'app Django con Postgres nel servizio app Azure

Nota

In questa esercitazione si usa Service Connessione or che semplifica il processo di connessione di un'app Web a un servizio di database. Questa esercitazione è una modifica dell'esercitazione servizio app, pertanto è possibile che vengano visualizzate alcune analogie. Esaminare la sezione Configurare le variabili di ambiente per connettere il database per vedere dove entra in gioco Service Connessione or e semplifica il processo di connessione indicato nell'esercitazione servizio app.

Questa esercitazione illustra come distribuire un'app Web Python Django basata sui dati in app Azure Servizio e connetterla a un database server flessibile Database di Azure per PostgreSQL.

In questa esercitazione verrà usata l'interfaccia della riga di comando di Azure per completare le attività seguenti:

  • Configurare l'ambiente iniziale con Python e l'interfaccia della riga di comando di Azure
  • Creare un database server flessibile Database di Azure per PostgreSQL
  • Distribuire il codice nel servizio app Azure e connettersi al server flessibile PostgreSQL
  • Aggiornare il codice e ridistribuire
  • Visualizzare i log di diagnostica
  • Gestire l'app Web nel portale di Azure

Configurare l'ambiente iniziale

  1. Installare Python 3.8 o versione successiva. Per verificare se la versione di Python è 3.8 o successiva, eseguire il codice seguente in una finestra del terminale:

    python3 --version
    
  2. Installare l'interfaccia della riga di comando di Azure 2.30.0 o versione successiva. Per verificare se la versione dell'interfaccia della riga di comando di Azure è 2.30.0 o successiva, eseguire il az --version comando . Se è necessario eseguire l'aggiornamento, eseguire az upgrade (richiede la versione 2.30.0+).

  3. Accedere ad Azure usando l'interfaccia della riga di comando con az login. Questo comando apre un browser per raccogliere le credenziali. Al termine dell'esecuzione del comando, viene visualizzato un output JSON contenente informazioni sulle sottoscrizioni. Dopo aver eseguito l'accesso, è possibile eseguire i comandi di Azure con l'interfaccia della riga di comando di Azure per usare le risorse nella sottoscrizione.

Clonare o scaricare l'app di esempio

Clonare il repository di esempio:

git clone https://github.com/Azure-Samples/serviceconnector-webapp-postgresql-django.git

Passare alla cartella seguente:

cd serviceconnector-webapp-postgresql-django

Usare il ramo flexible-server dell'esempio, che contiene alcune modifiche necessarie, ad esempio il modo in cui viene impostato l'URL del server di database e l'aggiunta 'OPTIONS': {'sslmode': 'require'} alla configurazione del database Django come richiesto dal server flessibile di Azure PostgreSQL.

git checkout flexible-server

l'esempio djangoapp contiene l'app di sondaggi Django basata sui dati che si ottiene seguendo l'esercitazione Scrivere la prima app Django nella documentazione di Django. Per praticità qui viene fornita l'app completata.

L'esempio è stato anche modificato per l'esecuzione in un ambiente di produzione come il Servizio app:

  • Le impostazioni di produzione si trovano nel file azuresite/production.py. Le impostazioni di sviluppo si trovano in azuresite/settings.py.
  • L'app usa le impostazioni di produzione quando la variabile di ambiente WEBSITE_HOSTNAME è impostata. Il Servizio app di Azure imposta automaticamente questa variabile sull'URL dell'app Web, come msdocs-django.azurewebsites.net.

Le impostazioni di produzione sono specifiche per la configurazione di Django per l'esecuzione in qualsiasi ambiente di produzione e non sono peculiari del Servizio app. Per altre informazioni, vedere l'elenco di controllo per la distribuzione di Django. Vedere anche Impostazioni di produzione per le app Django per informazioni dettagliate su alcune delle modifiche.

Problemi? Segnalarli.

Creare un database Postgres in Azure

  1. Abilitare la memorizzazione nella cache dei parametri con l'interfaccia della riga di comando di Azure in modo da non dover fornire questi parametri con ogni comando. I valori memorizzati nella cache vengono salvati nella cartella .azure .

    az config param-persist on 
    
  2. Creare un gruppo di risorse (è possibile modificare il nome, se necessario). Il nome del gruppo di risorse viene memorizzato nella cache e applicato automaticamente ai comandi successivi.

    az group create --name ServiceConnector-tutorial-rg --location eastus
    
  3. Creare il server di database (il processo richiede alcuni minuti):

    az postgres flexible-server create --sku-name Standard_B1ms --public-access all
    

    Se il comando az non viene riconosciuto, verificare di aver installato l'interfaccia della riga di comando di Azure come descritto in Configurare l'ambiente iniziale.

    Il comando az postgres flexible-server create esegue le azioni seguenti, che richiedono alcuni minuti:

    • Creare un gruppo di risorse predefinito se non è già presente un nome memorizzato nella cache.
    • Creare un server flessibile PostgreSQL:
      • Per impostazione predefinita, il comando usa un nome generato come server383813186. È possibile specificare il proprio nome con il --name parametro . Il nome deve essere univoco in Azure.
      • Il comando usa il piano tariffario più basso Standard_B1ms . Omettere l'argomento --sku-name per usare il livello predefinito Standard_D2s_v3 .
      • Il comando usa il gruppo di risorse e la posizione memorizzati nella cache dal comando precedente az group create , che in questo esempio è il gruppo ServiceConnector-tutorial-rg di risorse nell'area eastus .
    • Creare un account amministratore con nome utente e password. È possibile specificare questi valori direttamente con i --admin-user parametri e --admin-password .
    • Creare un database denominato flexibleserverdb per impostazione predefinita. È possibile specificare un nome di database con il --database-name parametro .
    • Abilita l'accesso pubblico completo, che è possibile controllare usando il --public-access parametro .
  4. Al termine del comando, copiare l'output JSON del comando in un file in base ai valori necessari dall'output più avanti in questa esercitazione, in particolare l'host, il nome utente e la password, insieme al nome del database.

Problemi? Segnalarli.

Distribuire il codice nel Servizio app di Azure

In questa sezione si crea l'host delle app nell'app del Servizio app, si connette questa app al database Postgres e quindi si distribuisce il codice in tale host.

Creare l'app del Servizio app

  1. Nel terminale assicurarsi di trovarsi nella cartella del repository djangoapp che contiene il codice dell'app.

  2. Passare al ramo dell'app di flexible-server esempio. Questo ramo contiene una configurazione specifica necessaria per il server flessibile PostgreSQL:

    git checkout flexible-server
    
  3. Eseguire il comando seguente az webapp up per creare l'host servizio app per l'app:

    az webapp up --name <app-name> --sku B1 
    

    Questo comando esegue le azioni seguenti, che possono richiedere alcuni minuti, usando il gruppo di risorse e la posizione memorizzati nella cache dal comando precedente az group create (il gruppo Python-Django-PGFlex-rg nell'area eastus in questo esempio).

    • Creare un piano servizio app nel piano tariffario Basic (B1). È possibile omettere --sku l'uso dei valori predefiniti.
    • Creare l'app servizio app.
    • Abilitare la registrazione predefinita per l'app.
    • Carica il repository usando la distribuzione ZIP con l'automazione della compilazione abilitata.

Al completamento della distribuzione, il comando genera un output JSON simile a quello dell'esempio seguente:

Screenshot del terminale, che mostra un output di esempio per il comando az webapp up.

Problemi? Per prima cosa, vedere la guida alla risoluzione dei problemi. Se i problemi persistono, segnalarli.

Configurare le variabili di ambiente per la connessione del database

Con il codice ora distribuito nel Servizio app, il passaggio successivo consiste nel connettere l'app al database Postgres in Azure.

Il codice dell'app prevede di trovare informazioni sul database in quattro variabili di ambiente denominate AZURE_POSTGRESQL_HOST, AZURE_POSTGRESQL_NAME, AZURE_POSTGRESQL_USER e AZURE_POSTGRESQL_PASS.

Per impostare le variabili di ambiente in servizio app, creare "impostazioni app" con il comando seguenteaz connection create.

az webapp connection create postgres-flexible --client-type django

Il gruppo di risorse, il nome dell'app e il nome del database vengono estratti dai valori memorizzati nella cache. È necessario specificare la password amministratore del database postgres durante l'esecuzione di questo comando.

  • Il comando crea impostazioni denominate "AZURE_POSTGRESQL_HOST", "AZURE_POSTGRESQL_NAME", "AZURE_POSTGRESQL_U edizione Standard R", "AZURE_POSTGRESQL_PASS" come previsto dal codice dell'app.
  • Se si dimenticano le credenziali di amministratore, il comando consente di reimpostarlo.

Nota

Se viene visualizzato il messaggio di errore "La sottoscrizione non è registrata per l'uso di Microsoft.ServiceLinker", eseguire az provider register -n Microsoft.ServiceLinker per registrare il provider di risorse service Connessione or ed eseguire di nuovo il comando di connessione.

Nel codice Python è possibile accedere a queste impostazioni come variabili di ambiente con istruzioni come os.environ.get('AZURE_POSTGRESQL_HOST'). Per altre informazioni, vedere Accedere alle variabili di ambiente.

Problemi? Per prima cosa, vedere la guida alla risoluzione dei problemi. Se i problemi persistono, segnalarli.

Eseguire le migrazioni del database Django

Le migrazioni di database Django assicurano che lo schema in PostgreSQL nel database di Azure corrisponda al codice.

  1. Eseguire az webapp ssh per aprire una sessione SSH per l'app Web nel browser:

    az webapp ssh
    
  2. Nella sessione SSH eseguire questo comando:

    # Run database migrations
    python manage.py migrate
    
    # Create the super user (follow prompts)
    python manage.py createsuperuser
    

    Se si verificano errori relativi alla connessione al database, verificare i valori delle impostazioni dell'applicazione create nella sezione precedente.

  3. Il comando createsuperuser chiede di immettere le credenziali di utente con privilegi avanzati. Ai fini di questa esercitazione, usare il nome utente predefinito root, premere INVIO per l'indirizzo di posta elettronica per lasciarlo vuoto e immettere Pollsdb1 per la password.

  4. Se viene visualizzato un errore che segnala il blocco del database, assicurarsi di aver eseguito il comando az webapp settings nella sezione precedente. Senza queste impostazioni, il comando migrate non può comunicare con il database, generando l'errore.

Problemi? Per prima cosa, vedere la guida alla risoluzione dei problemi. Se i problemi persistono, segnalarli.

Creare una domanda del sondaggio nell'app

  1. Aprire il sito Web dell'app. L'app dovrebbe visualizzare un messaggio che indica che non sono disponibili sondaggi perché nel database non sono ancora presenti sondaggi specifici.

    az webapp browse
    

    Se viene visualizzato "Errore applicazione", è probabile che non siano state create le impostazioni necessarie nel passaggio precedente "Configurare le variabili di ambiente per connettere il database" o che questi valori contengano errori. Eseguire il comando az webapp config appsettings list per controllare le impostazioni.

    Dopo aver aggiornato le impostazioni per correggere gli errori, attendere un minuto che l'app venga riavviata, quindi aggiornare il browser.

  2. Passare alla pagina di amministrazione dell'app Web aggiungendo /admin all'URL, http://<app-name>.azurewebsites.net/adminad esempio . Accedere usando le credenziali di utente con privilegi avanzati di Django della sezione precedente (root e Pollsdb1). In Polls (Sondaggi) selezionare Add (Aggiungi) accanto a Questions (Domande) e creare una domanda del sondaggio con alcune scelte.

  3. Tornare al sito Web principale (http://<app-name>.azurewebsites.net) per verificare che le domande siano ora presentate all'utente. Rispondere alle domande come desiderato per generare alcuni dati nel database.

Complimenti. Un'app Web Python Django è ora in esecuzione nel Servizio app di Azure per Linux, con un database Postgres attivo.

Nota

Il Servizio app rileva un progetto Django cercando in ogni sottocartella un file wsgi.py, che viene creato da manage.py startproject per impostazione predefinita. Quando trova tale file, il servizio app carica l'app Web Django. Per altre informazioni, vedere Configurare l'immagine Python predefinita.

Pulire le risorse

Se vuoi mantenere l'app o continuare con altre esercitazioni, vai a Passaggi successivi. In caso contrario, per evitare addebiti in corso, eliminare il gruppo di risorse creato per questa esercitazione:

az group delete --name ServiceConnector-tutorial-rg --no-wait

Eliminando il gruppo di risorse, vengono inoltre deallocate ed eliminate tutte le risorse in esso contenute. Assicurarsi che non siano più necessarie le risorse nel gruppo prima di usare il comando .

L'eliminazione di tutte le risorse può richiedere tempo. Con l'argomento --no-wait, il comando restituisce immediatamente il risultato.

Problemi? Segnalarli.

Passaggio successivo