Esercitazione: Creare un'app PHP (Laravel) e Database di Azure per MySQL - Server flessibile nel servizio app Azure

SI APPLICA A: Database di Azure per MySQL - Server flessibile

Il Servizio app di Azure offre un servizio di hosting Web con scalabilità elevata e applicazione automatica di patch basato sul sistema operativo Linux. Questa esercitazione illustra come creare un'app PHP sicura in app Azure Servizio connesso a un database MySQL (usando Database di Azure per MySQL server flessibile). Al termine, sarà disponibile un'app Laravel in esecuzione nel Servizio app di Azure in Linux.

Screenshot of the Azure app example titled Task List showing new tasks added.

In questa esercitazione apprenderai a:

  • Creare un'app PHP e MySQL sicura per impostazione predefinita in Azure
  • Configurare i segreti di connessione a MySQL usando le impostazioni dell'app
  • Distribuire il codice dell'applicazione usando GitHub Actions
  • Aggiornare e ridistribuire l'app
  • Eseguire migrazioni di database in modo sicuro
  • Eseguire lo streaming dei log di diagnostica in Azure
  • Gestire l'app nel portale di Azure

Prerequisiti

  • Una sottoscrizione di Azure Se non si ha una sottoscrizione di Azure, creare un account Azure gratuito prima di iniziare. Attualmente, con un account gratuito di Azure, è possibile provare Database di Azure per MySQL - Server flessibile gratuito per 12 mesi. Per altre informazioni, vedere Provare gratuitamente Database di Azure per MySQL - Server flessibile.

Applicazione di esempio

Per seguire questa esercitazione, clonare o scaricare l'applicazione di esempio dal repository:

git clone https://github.com/Azure-Samples/laravel-tasks.git

Se si vuole eseguire l'applicazione in locale, eseguire le operazioni seguenti:

  • In .env configurare le impostazioni del database (ad esempio DB_DATABASE, DB_USERNAMEe DB_PASSWORD) usando le impostazioni nel database del server flessibile Database di Azure per MySQL locale. Per eseguire questo esempio, è necessaria un'istanza del server flessibile Database di Azure per MySQL locale.

  • Dalla radice del repository avviare Laravel con i comandi seguenti:

    composer install
    php artisan migrate
    php artisan key:generate
    php artisan serve
    

1 - Creare servizio app e Database di Azure per MySQL risorse server flessibili

In questo passaggio si creano le risorse di Azure. I passaggi usati in questa esercitazione creano una configurazione server flessibile servizio app e Database di Azure per MySQL sicura per impostazione predefinita. Per il processo di creazione, specificare:

  • Nome dell'app Web. È il nome usato come parte del nome DNS per l'app Web sotto forma di https://<app-name>.azurewebsites.net.
  • Runtime per l'app. È qui che si seleziona la versione di PHP da usare per l'app.
  • Gruppo di risorse per l'app. Un gruppo di risorse consente di raggruppare (in un contenitore logico) tutte le risorse di Azure necessarie per l'applicazione.

Accedere al portale di Azure e seguire questa procedura per creare le risorse del servizio app Azure.

Istruzioni Schermata
Nel portale di Azure:
  1. Immettere "database dell'app Web" nella barra di ricerca nella parte superiore del portale di Azure.
  2. Selezionare l'elemento con etichetta App Web e database sotto l'intestazione Marketplace .
È anche possibile passare direttamente alla creazione guidata .
A screenshot showing how to use the search box in the top tool bar to find the Web App + Database creation wizard.
Nella pagina Crea app Web e database compilare il modulo come indicato di seguito.
  1. Gruppo di risorse → Selezionare Crea nuovo e usare un nome msdocs-laravel-mysql-tutorial.

  2. Area → Qualsiasi area di Azure nelle vicinanze.

  3. Nomemsdocs-laravel-mysql-XYZ dove XYZ è costituito da tre caratteri casuali. Il nome deve essere univoco in Azure

  4. Stack di runtime → PHP 8.0.

    MySQL : il server flessibile è selezionato per impostazione predefinita come motore di database. Database di Azure per MySQL è un database MySQL come servizio completamente gestito in Azure, compatibile con le edizioni community più recenti.

  5. Prendere nota del nome del database generato automaticamente (app-name-database>).< in quanto sarà necessario più avanti.

  6. Fare clic su Rivedi e crea.

Al termine della convalida, fare clic su Crea.
A screenshot showing how to configure a new app and database in the Web App + Database wizard.
Il completamento della distribuzione richiede alcuni minuti e crea le risorse seguenti:
  • Gruppo di risorse → Contenitore per tutte le risorse create.
  • servizio app piano → Definisce le risorse di calcolo per servizio app. Viene creato un piano Linux nel livello P1v2 .
  • servizio app → Rappresenta l'app ed è in esecuzione nel piano di servizio app.
  • Rete virtuale → Integrata con l'app servizio app e isola il traffico di rete back-end.
  • Database di Azure per MySQL - Server flessibile → Accessibile solo dalla rete virtuale. Nel server vengono creati un database e un utente.
  • DNS privato zona → Abilita la risoluzione DNS del server di database MySQL nella rete virtuale.
Al termine della distribuzione, fare clic sul pulsante Vai alla risorsa . Si accede direttamente all'app servizio app.
A screenshot showing the form to fill out to create a web app in Azure.

2 - Configurare la connettività del database

La creazione guidata ha generato le impostazioni dell'app da usare per connettersi al database, ma non in un formato ancora utilizzabile per il codice. In questo passaggio modifichi e aggiorni le impostazioni dell'app in base al formato necessario per l'app.

Istruzioni Schermata
Nel menu a sinistra della pagina servizio app selezionare Configurazione. A screenshot showing how to open the configuration page in App Service.
Nella scheda Impostazioni applicazione della pagina Configurazione fare clic su Modifica per ognuna delle impostazioni seguenti, aggiornare il campo Nome con nuovi valori e fare clic su OK.
Nome corrente Nuovo nome
AZURE_MYSQL_DBNAME DB_DATABA edizione Standard
AZURE_MYSQL_HOST DB_HOST
AZURE_MYSQL_U edizione Standard RNAME DB_U edizione Standard RNAME
AZURE_MYSQL_PASSWORD DB_PASSWORD
A screenshot showing how to see the autogenerated connection string.
Creare una nuova MYSQL_ATTR_SSL_CA impostazione del database:
  1. Fare clic su Nuova impostazione dell'applicazione.

  2. Nel campo Nome immettere MYSQL_ATTR_SSL_CA.

  3. Nel campo Valore immettere /home/site/wwwroot/ssl/DigiCertGlobalRootCA.crt.pem.

    Questa impostazione dell'app punta al percorso del certificato TLS/SSL necessario per accedere al server MySQL. È incluso nel repository di esempio per praticità.

  4. Fare clic su OK.

A screenshot showing how to create an app setting.
Creare le impostazioni aggiuntive seguenti dell'app seguendo la stessa procedura, quindi fare clic su Salva.
  • APP_DEBUG: usare true come valore. Si tratta di una variabile di debug Laravel.

  • APP_KEY: usare base64:Dsz40HWwbCqnq0oxMsjq7fItmKIeBfCBGORfspaI1Kw= come valore. Si tratta di una variabile di crittografia Laravel.

    Importante

    Questo APP_KEY valore viene usato qui per praticità. Per gli scenari di produzione, deve essere generato in modo specifico per la distribuzione usando php artisan key:generate --show nella riga di comando.

A screenshot showing all the required app settings in the configuration page.

3 - Distribuire il codice di esempio

In questo passaggio si configurerà la distribuzione di GitHub usando GitHub Actions. È solo uno dei molti modi per eseguire la distribuzione in servizio app, ma anche un ottimo modo per avere l'integrazione continua nel processo di distribuzione. Per impostazione predefinita, ogni git push repository GitHub avvia l'azione di compilazione e distribuzione. Verranno apportate alcune modifiche alla codebase con Visual Studio Code direttamente nel browser, quindi si consente la distribuzione automatica di GitHub Actions.

Istruzioni Schermata
In una nuova finestra del browser:
  1. Accedi all'account GitHub.

  2. Accedere a https://github.com/Azure-Samples/laravel-tasks.

  3. Fare clic su Fork.

  4. Fare clic su Crea fork.

A screenshot showing how to create a fork of the sample GitHub repository.
Nella pagina GitHub aprire Visual Studio Code nel browser premendo il . tasto . A screenshot showing how to open the Visual Studio Code browser experience in GitHub.
In Visual Studio Code nel browser aprire config/database.php nell'elenco delle cartelle. mysql Nella connessione vedere che le impostazioni dell'app create in precedenza per la connessione MySQL sono già usate (DB_HOST, DB_DATABASE, DB_PASSWORDDB_USERNAME, , MYSQL_ATTR_SSL_CA). A screenshot showing Visual Studio Code in the browser and an opened file.
Tornare alla pagina servizio app, nel menu a sinistra selezionare Centro distribuzione. A screenshot showing how to open the deployment center in App Service.
Nella pagina Centro distribuzione:
  1. In Origine selezionare GitHub. Per impostazione predefinita, GitHub Actions è selezionato come provider di compilazione.

  2. Accedere all'account GitHub e seguire la richiesta di autorizzare Azure.

  3. In Organizzazione selezionare l'account.

  4. In Repository selezionare laravel-tasks.

  5. In Ramo selezionare main.

  6. Nel menu in alto fare clic su Salva.

servizio app esegue il commit di un file del flusso di lavoro nel repository GitHub selezionato, nella .github/workflows directory .
A screenshot showing how to configure CI/CD using GitHub Actions.
Nella pagina Centro distribuzione:
  1. Selezionare Log. È già stata avviata un'esecuzione di distribuzione.

  2. Nell'elemento di log per l'esecuzione della distribuzione selezionare Compila/Distribuisci log.

    Si viene visualizzati nel repository GitHub e si noterà che l'azione GitHub è in esecuzione. Il file del flusso di lavoro definisce due fasi separate, compilare e distribuire.

A screenshot showing how to open deployment logs in the deployment center.
Per apportare modifiche al codice, passare a Visual Studio Code nel browser:
  1. Selezionare l'estensione Controllo del codice sorgente.

  2. Accanto al file modificato, ad esempio database.php, selezionare + per preparare le modifiche.

  3. Nella casella di testo digitare un messaggio di commit, ad esempio add certificate.

  4. Selezionare il segno di spunta per eseguire il commit e il push in GitHub.

Se si torna alla pagina Centro distribuzione, verrà visualizzata una nuova voce di log perché viene avviata un'altra esecuzione. Attendi il completamento dell'esecuzione. Sono necessari circa 15 minuti.

Suggerimento

L'azione GitHub è definita dal file nel repository GitHub, in .github/workflow. È possibile velocizzare la personalizzazione del file.

A screenshot showing how to commit your changes in the Visual Studio Code browser experience.

4 - Generare lo schema del database

La creazione guidata inserisce l'istanza del server flessibile Database di Azure per MySQL dietro un endpoint privato, quindi è accessibile solo dalla rete virtuale. Poiché l'app servizio app è già integrata con la rete virtuale, il modo più semplice per eseguire le migrazioni di database con il database è direttamente dall'interno del contenitore servizio app.

Istruzioni Schermata
Nella pagina servizio app:
  1. Nel menu a sinistra selezionare SSH.

  2. Selezionare Vai.

Nel browser viene aperta una sessione SSH con il contenitore servizio app. Se si vuole, è possibile passare direttamente a https://<app-name>.scm.azurewebsites.net/webssh/host .
A screenshot showing how to open the SSH shell for your app from the Azure portal.
Nel terminale SSH:
  1. CD nella radice del codice dell'applicazione:

    cd /home/site/wwwroot
    
  2. Eseguire migrazioni di database dalla radice dell'applicazione.

    php artisan migrate --force
    

    Nota

    Solo le modifiche apportate ai file in /home possono essere mantenute oltre i riavvii dell'app. Le modifiche al di fuori di /home non sono persistenti.

A screenshot showing the commands to run in the SSH shell and their output.

5 - Modificare la radice del sito

Il ciclo di vita dell'applicazione Laravel inizia invece nella directory /public . Il contenitore PHP 8.0 predefinito per servizio app usa Nginx, che inizia nella directory radice dell'applicazione. Per modificare la radice del sito, è necessario modificare il file di configurazione Nginx nel contenitore PHP 8.0 (/etc/nginx/sites-available/default). Per praticità, il repository di esempio contiene un file di configurazione personalizzato denominato default. Come indicato in precedenza, non si vuole sostituire questo file usando la shell SSH, perché le modifiche andranno perse dopo il riavvio dell'app.

Istruzioni Schermata
Nella pagina servizio app:
  1. Nel menu a sinistra selezionare Configurazione.

  2. Seleziona la scheda Impostazioni generali.

A screenshot showing how to open the general settings tab in the configuration page of App Service.
Nella scheda Impostazioni generali:
  1. Nella casella Comando di avvio immettere il comando seguente: cp /home/site/wwwroot/default /etc/nginx/sites-available/default && service nginx reload.

    Sostituisce il file di configurazione Nginx nel contenitore PHP 8.0 e riavvia Nginx. Questa configurazione garantisce che questa modifica venga apportata al contenitore ogni volta che viene avviata.

  2. Seleziona Salva.

A screenshot showing how to configure a startup command in App Service.

6 - Passare all'app

Istruzioni Schermata
Nella pagina servizio app:
  1. Nel menu a sinistra selezionare Panoramica.

  2. Selezionare l'URL dell'app.

    È anche possibile passare direttamente a https://<app-name>.azurewebsites.net.

A screenshot showing how to launch an App Service from the Azure portal.
Aggiungere alcune attività all'elenco. Congratulazioni, si sta eseguendo un'app PHP guidata dai dati in app Azure Servizio. A screenshot of the Laravel app running in App Service.

7 - Trasmettere i log di diagnostica

Istruzioni Schermata
Nella pagina servizio app:
  1. Nel menu a sinistra selezionare servizio app log.

  2. In Registrazione applicazioni selezionare File System.

A screenshot showing how to enable native logs in App Service in the Azure portal.
Scegliere Flusso di log dal menu a sinistra. Vengono visualizzati i log per l'app, inclusi i log e i log della piattaforma dall'interno del contenitore. A screenshot showing how to view the log stream in the Azure portal.

Pulire le risorse

Al termine, è possibile eliminare tutte le risorse dalla sottoscrizione di Azure eliminando il gruppo di risorse.

Istruzioni Schermata
Nella barra di ricerca nella parte superiore del portale di Azure:
  1. Immettere il nome del gruppo di risorse.

  2. Selezionare il gruppo di risorse.

A screenshot showing how to search for and navigate to a resource group in the Azure portal.
Nella pagina del gruppo di risorse fare clic su Elimina gruppo di risorse. A screenshot showing the location of the Delete Resource Group button in the Azure portal.
  1. Immettere il nome del gruppo di risorse per confermare l'eliminazione.

  2. Fai clic su Elimina.

A screenshot of the confirmation dialog for deleting a resource group in the Azure portal.

Domande frequenti

Quanto costa questa configurazione?

I prezzi per le risorse di creazione sono i seguenti:

  • Il piano di servizio app viene creato nel livello Premium V2 e può essere ridimensionato verso l'alto o verso il basso. Vedere Prezzi del servizio app.
  • L'istanza del server flessibile Database di Azure per MySQL viene creata nel livello B1ms e può essere ridimensionata o ridotta. Con un account gratuito di Azure, il livello B1ms è gratuito per 12 mesi, fino ai limiti mensili. Vedere Database di Azure per MySQL prezzi flessibili del server.
  • La rete virtuale non comporta alcun addebito a meno che non si configurino funzionalità aggiuntive, ad esempio il peering. Vedere Prezzi di Azure Rete virtuale.
  • La zona DNS privata comporta un piccolo addebito. Vedere Prezzi di DNS di Azure.

Ricerca per categorie connettersi a un database di server flessibile Database di Azure per MySQL protetto da una rete virtuale?

Per connettersi a un database di server flessibile Database di Azure per MySQL, è possibile usare diversi metodi basati su strumenti e ambienti a disposizione:

  • Accesso agli strumenti da riga di comando:
    • Usare il mysql comando dal terminale SSH dell'app per l'accesso di base.
  • Strumenti desktop (ad esempio, MySQL Workbench):
    • Uso del tunneling SSH con l'interfaccia della riga di comando di Azure:
      • Creare una sessione SSH per l'app Web usando l'interfaccia della riga di comando di Azure.
      • Usare la sessione SSH per eseguire il tunneling del traffico verso MySQL.
    • Uso della VPN da sito a sito o macchina virtuale di Azure:
      • Il computer deve far parte della rete virtuale.
      • Prendere in considerazione l'uso di:
        • Una macchina virtuale di Azure collegata a una delle subnet.
        • Un computer in una rete locale con una connessione VPN da sito a sito alla rete virtuale di Azure.
  • Integrazione di Azure Cloud Shell:

Come funziona lo sviluppo di app locali con GitHub Actions?

Prendere il file del flusso di lavoro generato automaticamente da servizio app come esempio, ogni git push avvia una nuova esecuzione di compilazione e distribuzione. Da un clone locale del repository GitHub si effettua il push degli aggiornamenti desiderati in GitHub. Ad esempio:

git add .
git commit -m "<some-message>"
git push origin main

Perché la distribuzione di GitHub Actions è così lenta?

Il file del flusso di lavoro generato automaticamente da servizio app definisce l'esecuzione di due processi, build-then-deploy. Poiché ogni processo viene eseguito nel proprio ambiente pulito, il file del flusso di lavoro garantisce che il deploy processo abbia accesso ai file dal build processo:

La maggior parte del tempo impiegato dal processo a due processi viene impiegato per caricare e scaricare gli artefatti. Se si vuole, è possibile semplificare il file del flusso di lavoro combinando i due processi in uno, eliminando così la necessità di eseguire i passaggi di caricamento e download.

Riepilogo

Questa esercitazione ha descritto come:

  • Creare un'app server flessibile PHP e Database di Azure per MySQL sicura per impostazione predefinita in Azure
  • Configurare i segreti di connessione per Database di Azure per MySQL server flessibile usando le impostazioni dell'app
  • Distribuire il codice dell'applicazione usando GitHub Actions
  • Aggiornare e ridistribuire l'app
  • Eseguire migrazioni di database in modo sicuro
  • Eseguire lo streaming dei log di diagnostica in Azure
  • Gestire l'app nel portale di Azure

Passaggi successivi