Zelfstudie: Een PHP-app (Laravel) en Azure Database for MySQL - Flexible Server bouwen op Azure-app Service

VAN TOEPASSING OP: Azure Database for MySQL - Flexibele server

Azure App Service biedt een uiterst schaalbare webhostingservice met self-patchfunctie via het Linux-besturingssysteem. Deze zelfstudie laat zien hoe u een beveiligde PHP-app maakt in Azure-app Service die is verbonden met een MySQL-database (met behulp van een flexibele Azure Database for MySQL-server). Wanneer u klaar bent, hebt u een Laravel-app die in Azure App Service op Linux wordt uitgevoerd.

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

In deze zelfstudie leert u het volgende:

  • Een secure-by-default PHP- en MySQL-app maken in Azure
  • Verbindingsgeheimen met MySQL configureren met behulp van app-instellingen
  • Toepassingscode implementeren met Behulp van GitHub Actions
  • De app bijwerken en opnieuw implementeren
  • Databasemigraties veilig uitvoeren
  • Logboeken met diagnostische gegevens vanaf Azure streamen
  • De app in Azure Portal beheren

Vereisten

Voorbeeldtoepassing

Als u deze zelfstudie wilt volgen, kloont of downloadt u de voorbeeldtoepassing uit de opslagplaats:

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

Ga als volgt te werk als u de toepassing lokaal wilt uitvoeren:

  • Configureer in .env de database-instellingen (zoals DB_DATABASE, DB_USERNAMEen DB_PASSWORD) met behulp van instellingen in uw lokale flexibele Azure Database for MySQL-serverdatabase. U hebt een lokaal exemplaar van een flexibele Azure Database for MySQL-server nodig om dit voorbeeld uit te voeren.

  • Start Laravel vanuit de hoofdmap van de opslagplaats met de volgende opdrachten:

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

1 - Flexibele Server-resources voor App Service en Azure Database for MySQL maken

In deze stap maakt u de Azure-resources. Met de stappen die in deze zelfstudie worden gebruikt, maakt u een App Service- en Azure Database for MySQL-configuratie voor flexibele servers die standaard beveiligd zijn. Voor het aanmaakproces geeft u het volgende op:

  • De naam voor de web-app. Dit is de naam die wordt gebruikt als onderdeel van de DNS-naam voor uw web-app in de vorm van https://<app-name>.azurewebsites.net.
  • De runtime voor de app. Hier selecteert u de versie van PHP die u voor uw app wilt gebruiken.
  • De resourcegroep voor de app. Met een resourcegroep kunt u alle Azure-resources die nodig zijn voor de toepassing groeperen (in een logische container).

Meld u aan bij Azure Portal en volg deze stappen om uw Azure-app Service-resources te maken.

Instructies Schermafbeelding
In Azure Portal:
  1. Voer 'web-app-database' in de zoekbalk boven aan Azure Portal in.
  2. Selecteer het item met het label Web App + Database onder de kop Marketplace .
U kunt ook rechtstreeks naar de wizard voor het maken navigeren.
A screenshot showing how to use the search box in the top tool bar to find the Web App + Database creation wizard.
Vul op de pagina Web-app en database maken het formulier als volgt in.
  1. Resourcegroep → Nieuwe maken selecteren en een naam van msdocs-laravel-mysql-tutorial gebruiken.

  2. Regio → Elke Azure-regio bij u in de buurt.

  3. Naammsdocs-laravel-mysql-XYZ waarbij XYZ uit drie willekeurige tekens bestaat. Deze naam moet uniek zijn binnen Azure.

  4. RuntimestackPHP 8.0.

    MySQL - Flexible Server is standaard voor u geselecteerd als database-engine. Azure Database for MySQL is een volledig beheerde MySQL-database als een service in Azure, die compatibel is met de nieuwste community-edities.

  5. Noteer de databasenaam die voor u wordt gegenereerd (<app-naam-database>). U hebt deze later nodig.

  6. Klik op Controleren + maken.

Nadat de validatie is voltooid, klikt u op Maken.
A screenshot showing how to configure a new app and database in the Web App + Database wizard.
Het uitvoeren van de implementatie duurt enkele minuten en maakt de volgende resources:
  • Resourcegroep → De container voor alle gemaakte resources.
  • App Service-plan → Definieert de rekenresources voor App Service. Er wordt een Linux-plan in de P1v2-laag gemaakt.
  • App Service → Vertegenwoordigt uw app en wordt uitgevoerd in het App Service-plan.
  • Virtueel netwerk → geïntegreerd met de App Service-app en isoleert back-endnetwerkverkeer.
  • Azure Database for MySQL - Flexible Server → alleen toegankelijk vanuit het virtuele netwerk. Er worden een database en een gebruiker voor u gemaakt op de server.
  • Privé-DNS zone → Maakt DNS-omzetting van de MySQL-databaseserver in het virtuele netwerk mogelijk.
Zodra de implementatie is voltooid, klikt u op de knop Naar de resource gaan. U wordt rechtstreeks naar de App Service-app gebracht.
A screenshot showing the form to fill out to create a web app in Azure.

2 - Databaseconnectiviteit instellen

De wizard maken heeft app-instellingen gegenereerd die u kunt gebruiken om verbinding te maken met de database, maar niet in een indeling die nog kan worden gebruikt voor uw code. In deze stap bewerkt en werkt u app-instellingen bij naar de indeling die uw app nodig heeft.

Instructies Schermafbeelding
Selecteer Configuratie in het linkermenu op de pagina App Service. A screenshot showing how to open the configuration page in App Service.
Klik op het tabblad Toepassingsinstellingen van de pagina Configuratie voor elk van de volgende instellingen op Bewerken, werk het veld Naam bij met nieuwe waarden en klik op OK.
Huidige naam Nieuwe naam
AZURE_MYSQL_DBNAME DB_DATABASE
AZURE_MYSQL_HOST DB_HOST
AZURE_MYSQL_USERNAME DB_USERNAME
AZURE_MYSQL_PASSWORD DB_PASSWORD
A screenshot showing how to see the autogenerated connection string.
Maak een nieuwe MYSQL_ATTR_SSL_CA database-instelling:
  1. Klik op Nieuwe toepassingsinstelling.

  2. Voer in het veld Naam MYSQL_ATTR_SSL_CA in.

  3. Voer in het veld Waarde /home/site/wwwroot/ssl/DigiCertGlobalRootCA.crt.pem in.

    Deze app-instelling verwijst naar het pad van het TLS/SSL-certificaat dat u nodig hebt voor toegang tot de MySQL-server. Deze is voor het gemak opgenomen in de voorbeeldopslagplaats.

  4. Klik op OK.

A screenshot showing how to create an app setting.
Maak de volgende extra app-instellingen door dezelfde stappen te volgen en klik vervolgens op Opslaan.
  • APP_DEBUG: Gebruik waar als waarde. Dit is een Laravel-foutopsporingsvariabele.

  • APP_KEY: Gebruik base64:Dsz40HWwbCqnq0oxMsjq7fItmKIeBfCBGORfspaI1Kw= als de waarde. Dit is een Laravel-versleutelingsvariabele.

    Belangrijk

    Deze APP_KEY waarde wordt hier voor het gemak gebruikt. Voor productiescenario's moet deze specifiek worden gegenereerd voor uw implementatie met behulp van php artisan key:generate --show de opdrachtregel.

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

3 - Voorbeeldcode implementeren

In deze stap configureert u gitHub-implementatie met behulp van GitHub Actions. Het is slechts een van de vele manieren om te implementeren in App Service, maar ook een uitstekende manier om continue integratie in uw implementatieproces te hebben. Standaard wordt met elke git push gitHub-opslagplaats de build- en implementatieactie gestart. U gaat enkele wijzigingen aanbrengen in uw codebase met Visual Studio Code rechtstreeks in de browser, waarna GitHub Actions automatisch voor u kan worden geïmplementeerd.

Instructies Schermafbeelding
In een nieuw browservenster:
  1. Meld u aan bij uw GitHub-account.

  2. Navigeer naar https://github.com/Azure-Samples/laravel-tasks.

  3. Klik op Fork.

  4. Klik op Fork maken.

A screenshot showing how to create a fork of the sample GitHub repository.
Open Visual Studio Code op de GitHub-pagina in de browser door op de . toets te drukken. A screenshot showing how to open the Visual Studio Code browser experience in GitHub.
Open in Visual Studio Code in de browser configuratie/database.php in de verkenner. In de mysql verbinding ziet u dat de app-instellingen die u eerder hebt gemaakt voor de MySQL-verbinding al worden gebruikt (DB_HOST, DB_DATABASEDB_USERNAME, , DB_PASSWORD, ). MYSQL_ATTR_SSL_CA A screenshot showing Visual Studio Code in the browser and an opened file.
Selecteer Implementatiecentrum in het linkermenu op de pagina App Service. A screenshot showing how to open the deployment center in App Service.
Op de pagina Implementatiecentrum:
  1. Selecteer GitHub in Bron. GitHub Actions is standaard geselecteerd als buildprovider.

  2. Meld u aan bij uw GitHub-account en volg de prompt om Azure te autoriseren.

  3. Selecteer uw account in Organisatie.

  4. Selecteer laravel-tasks in opslagplaats.

  5. Selecteer in Vertakking de hoofdmap.

  6. Klik in het bovenste menu op Opslaan.

App Service voert een werkstroombestand door in de geselecteerde GitHub-opslagplaats, in de .github/workflows map.
A screenshot showing how to configure CI/CD using GitHub Actions.
Op de pagina Implementatiecentrum:
  1. Selecteer Logboeken. Er is al een implementatieuitvoering gestart.

  2. Selecteer build-/deploy-logboeken in het logboekitem voor de implementatieuitvoering.

    U wordt naar uw GitHub-opslagplaats gebracht en u ziet dat de GitHub-actie wordt uitgevoerd. Het werkstroombestand definieert twee afzonderlijke fasen, bouwen en implementeren.

A screenshot showing how to open deployment logs in the deployment center.
Als u wijzigingen in uw code wilt aanbrengen, gaat u naar Visual Studio Code in de browser:
  1. Selecteer de extensie Broncodebeheer .

  2. Selecteer naast het gewijzigde bestand, bijvoorbeeld database.php, + om de wijzigingen in een fase te plaatsen.

  3. Typ in het tekstvak bijvoorbeeld een doorvoerbericht add certificate.

  4. Selecteer het vinkje om door te voeren en naar GitHub te pushen.

Als u teruggaat naar de pagina Implementatiecentrum, ziet u een nieuwe logboekvermelding omdat er een andere uitvoering is gestart. Wacht totdat de uitvoering is voltooid. Het duurt ongeveer 15 minuten.

Tip

De GitHub-actie wordt gedefinieerd door het bestand in uw GitHub-opslagplaats, in .github/workflow. U kunt het sneller maken door het bestand aan te passen.

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

4 - Databaseschema genereren

Met de wizard Maken wordt het exemplaar van de flexibele Azure Database for MySQL-server achter een privé-eindpunt opgeslagen, zodat deze alleen toegankelijk is vanuit het virtuele netwerk. Omdat de App Service-app al is geïntegreerd met het virtuele netwerk, is de eenvoudigste manier om databasemigraties uit te voeren met uw database rechtstreeks vanuit de App Service-container.

Instructies Schermafbeelding
Op de App Service-pagina:
  1. Selecteer SSH in het linkermenu.

  2. Selecteer Go.

Er wordt een SSH-sessie met uw App Service-container geopend in de browser. Als u wilt, kunt u rechtstreeks naartoe https://<app-name>.scm.azurewebsites.net/webssh/host navigeren.
A screenshot showing how to open the SSH shell for your app from the Azure portal.
In de SSH-terminal:
  1. Cd naar de hoofdmap van uw toepassingscode:

    cd /home/site/wwwroot
    
  2. Voer databasemigraties uit vanuit de hoofdmap van uw toepassing.

    php artisan migrate --force
    

    Notitie

    Alleen wijzigingen in bestanden in /home kunnen zich blijven voordoen na het opnieuw opstarten van de app. Wijzigingen buiten /home worden niet behouden.

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

5 - Hoofdmap van site wijzigen

De levenscyclus van laravel-toepassingen begint in plaats daarvan in de /public directory. De standaard PHP 8.0-container voor App Service maakt gebruik van Nginx, die begint in de hoofdmap van de toepassing. Als u de hoofdmap van de site wilt wijzigen, moet u het Nginx-configuratiebestand wijzigen in de PHP 8.0-container (/etc/nginx/sites-available/default). Voor uw gemak bevat de voorbeeldopslagplaats een aangepast configuratiebestand met de naam Standaard. Zoals eerder vermeld, wilt u dit bestand niet vervangen met behulp van de SSH-shell, omdat uw wijzigingen verloren gaan nadat de app opnieuw is opgestart.

Instructies Schermafbeelding
Op de App Service-pagina:
  1. Selecteer Configuratie in het linkermenu.

  2. Selecteer het tabblad Algemene instellingen.

A screenshot showing how to open the general settings tab in the configuration page of App Service.
Op het tabblad Algemene instellingen:
  1. Voer in het vak Opstartopdracht de volgende opdracht in: cp /home/site/wwwroot/default /etc/nginx/sites-available/default && service nginx reload.

    Het vervangt het Nginx-configuratiebestand in de PHP 8.0-container en start Nginx opnieuw op. Deze configuratie zorgt ervoor dat deze wijziging wordt aangebracht in de container telkens wanneer deze wordt gestart.

  2. Selecteer Opslaan.

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

6 - Blader naar de app

Instructies Schermafbeelding
Op de App Service-pagina:
  1. Selecteer Overzicht in het linkermenu.

  2. Selecteer de URL van uw app.

    U kunt ook rechtstreeks naar https://<app-name>.azurewebsites.net.

A screenshot showing how to launch an App Service from the Azure portal.
Voeg een paar taken toe aan de lijst. Gefeliciteerd, u voert een gegevensgestuurde PHP-app uit in Azure-app Service. A screenshot of the Laravel app running in App Service.

7 - Diagnostische logboeken streamen

Instructies Schermafbeelding
Op de App Service-pagina:
  1. Selecteer App Service-logboeken in het linkermenu.

  2. Selecteer Bestandssysteem onder Toepassingslogboek.

A screenshot showing how to enable native logs in App Service in the Azure portal.
Klik in het linkermenu op Logboekstream. U ziet de logboeken voor uw app, inclusief platformlogboeken en logboeken vanuit de container. A screenshot showing how to view the log stream in the Azure portal.

Resources opschonen

Wanneer u klaar bent, kunt u alle resources uit uw Azure-abonnement verwijderen door de resourcegroep te verwijderen.

Instructies Schermafbeelding
In de zoekbalk boven aan Azure Portal:
  1. Voer de naam van de resourcegroup in.

  2. Selecteer de resourcegroep.

A screenshot showing how to search for and navigate to a resource group in the Azure portal.
Klik in de pagina van de resourcegroep op Resourcegroep verwijderen. A screenshot showing the location of the Delete Resource Group button in the Azure portal.
  1. Voer de naam van de resourcegroep in om uw verwijdering te bevestigen.

  2. Klik op Verwijderen.

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

Veelgestelde vragen

Hoeveel kost dit instellen?

De prijzen voor het maken van resources zijn als volgt:

  • Het App Service-plan wordt gemaakt in de Premium V2-laag en kan omhoog of omlaag worden geschaald. Zie Prijzen voor App Service.
  • Het exemplaar van de flexibele Azure Database for MySQL-server wordt gemaakt in de B1ms-laag en kan omhoog of omlaag worden geschaald. Met een gratis Azure-account is de B1ms-laag 12 maanden gratis, tot aan de maandelijkse limieten. Zie prijzen voor flexibele azure Database for MySQL-servers.
  • Voor het virtuele netwerk worden geen kosten in rekening gebracht, tenzij u extra functionaliteit configureert, zoals peering. Zie prijzen voor Azure Virtual Network.
  • Voor de privé-DNS-zone worden kleine kosten in rekening gebracht. Zie prijzen voor Azure DNS.

Hoe kan ik verbinding maken met een flexibele Azure Database for MySQL-serverdatabase die is beveiligd achter een virtueel netwerk?

Als u verbinding wilt maken met een flexibele Azure Database for MySQL-serverdatabase, kunt u verschillende methoden gebruiken op basis van de hulpprogramma's en omgevingen tot uw beschikking:

  • Toegang tot opdrachtregelprogramma's:
    • Gebruik de mysql opdracht vanuit de SSH-terminal van de app voor basistoegang.
  • Bureaubladhulpprogramma's (bijvoorbeeld MySQL Workbench):
    • SSH-tunneling gebruiken met Azure CLI:
      • Maak een SSH-sessie naar de web-app met behulp van de Azure CLI.
      • Gebruik de SSH-sessie om het verkeer naar MySQL te tunnelen.
    • Site-naar-site-VPN of Azure-VM gebruiken:
      • Uw machine moet deel uitmaken van het virtuele netwerk.
      • Overweeg het gebruik van:
        • Een Virtuele Azure-machine die is gekoppeld aan een van de subnetten.
        • Een machine in een on-premises netwerk met een site-naar-site-VPN-verbinding met het virtuele Azure-netwerk.
  • Azure Cloud Shell-integratie:

Hoe werkt het ontwikkelen van lokale apps met GitHub Actions?

Neem het automatisch gegenereerde werkstroombestand uit App Service als voorbeeld, elk git push start een nieuwe build- en implementatieuitvoering. Vanuit een lokale kloon van de GitHub-opslagplaats pusht u de gewenste updates naar GitHub. Voorbeeld:

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

Waarom is de Implementatie van GitHub Actions zo traag?

Het automatisch gegenereerde werkstroombestand van App Service definieert build-then-deploy, two-job run. Omdat elke taak wordt uitgevoerd in een eigen schone omgeving, zorgt het werkstroombestand ervoor dat de deploy taak toegang heeft tot de bestanden vanuit de build taak:

De meeste tijd die nodig is voor het proces met twee taken, wordt besteed aan het uploaden en downloaden van artefacten. Als u wilt, kunt u het werkstroombestand vereenvoudigen door de twee taken te combineren in één, waardoor de upload- en downloadstappen niet meer nodig zijn.

Samenvatting

In deze zelfstudie heeft u het volgende geleerd:

  • Een secure-by-default PHP- en Azure Database for MySQL Flexibele server-app maken in Azure
  • Verbindingsgeheimen configureren voor Azure Database for MySQL Flexibele server met behulp van app-instellingen
  • Toepassingscode implementeren met Behulp van GitHub Actions
  • De app bijwerken en opnieuw implementeren
  • Databasemigraties veilig uitvoeren
  • Logboeken met diagnostische gegevens vanaf Azure streamen
  • De app in Azure Portal beheren

Volgende stappen