Esercitazione: Creare un'app PHP (Laravel) e Database di Azure per MySQL - Server flessibile nel servizio app Azure
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.
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 gratuito di Azure prima di iniziare. Attualmente, con un account gratuito di Azure, è possibile provare il server flessibile di Database MySQL di Azure gratuitamente per 12 mesi. Per altre informazioni, vedere Usare un account gratuito di Azure per 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_USERNAME
eDB_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.
Per creare risorse del Servizio app di Azure, accedere al portale di Azure e seguire questa procedura.
Istruzioni | Schermata |
---|---|
Nel portale di Azure:
|
|
Nella pagina Crea app Web e database compilare il modulo come indicato di seguito.
|
|
Il completamento della distribuzione richiede alcuni minuti e crea le risorse seguenti:
|
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. | |||||||||||
Nella scheda Impostazioni applicazione della pagina Configurazione selezionare Modifica, aggiornare il campo Nome con i nuovi valori e selezionare OK per ognuna delle impostazioni seguenti.
|
|||||||||||
Creare una nuova MYSQL_ATTR_SSL_CA impostazione del database:
|
|||||||||||
Creare le impostazioni aggiuntive seguenti dell'app seguendo la stessa procedura e quindi selezionare Salva.
|
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 nel servizio app, ma anche un ottimo modo per avere l'integrazione continua nel processo di distribuzione. Per impostazione predefinita, ogni git push
al 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:
|
|
Nella pagina GitHub aprire Visual Studio Code nel browser premendo il . tasto . |
|
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_PASSWORD DB_USERNAME , , MYSQL_ATTR_SSL_CA ). |
|
Tornare alla pagina servizio app, nel menu a sinistra selezionare Centro distribuzione. | |
Nella pagina Centro distribuzione:
.github/workflows directory . |
|
Nella pagina Centro distribuzione:
|
|
Per apportare modifiche al codice, passare a Visual Studio Code nel browser:
Suggerimento L'azione GitHub è definita dal file nel repository GitHub, in .github/workflow. È possibile velocizzare la personalizzazione del file. |
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:
https://<app-name>.scm.azurewebsites.net/webssh/host . |
|
Nel terminale SSH:
|
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.
6 - Passare all'app
7 - Trasmettere i log di diagnostica
Pulire le risorse
Al termine, è possibile eliminare tutte le risorse dalla sottoscrizione di Azure eliminando il gruppo di risorse.
Domande frequenti
- Quanto costa questa configurazione?
- Ricerca per categorie connettersi a un database di server flessibile Database di Azure per MySQL protetto da una rete virtuale?
- Come funziona lo sviluppo di app locali con GitHub Actions?
- Perché la distribuzione di GitHub Actions è così lenta?
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 della rete virtuale di Azure.
- 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.
- Usare il
- 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.
- Uso del tunneling SSH con l'interfaccia della riga di comando di Azure:
- Integrazione di Azure Cloud Shell:
- Integrare Azure Cloud Shell con la rete virtuale per l'accesso diretto.
Come funziona lo sviluppo di app locali con GitHub Actions?
Prendere il file del flusso di lavoro generato automaticamente dal servizio app come esempio, ognigit 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 dal 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 processo deploy
abbia accesso ai file dal processo build
:
- Al termine del processo
build
, caricare i file come artefatti. - All'inizio del processo
deploy
, scaricare gli artefatti.
La maggior parte del tempo impiegato dal processo a due processi viene impiegato per caricare ed effettuare il download degli artefatti. Se si desidera, è 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