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.
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
- Als u geen Azure-abonnement hebt, maakt u een gratis Azure-account voordat u begint. Op dit moment kunt u met een gratis Azure-account Azure Database for MySQL - Flexible Server 12 maanden gratis proberen. Zie Azure Database for MySQL - Flexible Server gratis uitproberen voor meer informatie.
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_USERNAME
enDB_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:
|
|
Vul op de pagina Web-app en database maken het formulier als volgt in.
|
|
Het uitvoeren van de implementatie duurt enkele minuten en maakt de volgende resources:
|
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. | |||||||||||
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.
|
|||||||||||
Maak een nieuwe MYSQL_ATTR_SSL_CA database-instelling:
|
|||||||||||
Maak de volgende extra app-instellingen door dezelfde stappen te volgen en klik vervolgens op Opslaan.
|
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:
|
|
Open Visual Studio Code op de GitHub-pagina in de browser door op de . toets te drukken. |
|
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_DATABASE DB_USERNAME , , DB_PASSWORD , ). MYSQL_ATTR_SSL_CA |
|
Selecteer Implementatiecentrum in het linkermenu op de pagina App Service. | |
Op de pagina Implementatiecentrum:
.github/workflows map. |
|
Op de pagina Implementatiecentrum:
|
|
Als u wijzigingen in uw code wilt aanbrengen, gaat u naar Visual Studio Code in de browser:
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. |
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:
https://<app-name>.scm.azurewebsites.net/webssh/host navigeren. |
|
In de SSH-terminal:
|
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.
6 - Blader naar de app
7 - Diagnostische logboeken streamen
Resources opschonen
Wanneer u klaar bent, kunt u alle resources uit uw Azure-abonnement verwijderen door de resourcegroep te verwijderen.
Veelgestelde vragen
- Hoeveel kost dit instellen?
- Hoe kan ik verbinding maken met een flexibele Azure Database for MySQL-serverdatabase die is beveiligd achter een virtueel netwerk?
- Hoe werkt het ontwikkelen van lokale apps met GitHub Actions?
- Waarom is de Implementatie van GitHub Actions zo traag?
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.
- Gebruik de
- 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.
- SSH-tunneling gebruiken met Azure CLI:
- Azure Cloud Shell-integratie:
- Integreer Azure Cloud Shell met het virtuele netwerk voor directe toegang.
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:
- Upload bestanden als artefacten aan het einde van de
build
taak. - Download de artefacten aan het begin van de
deploy
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