Tutorial: Erstellen einer PHP (Laravel) und Azure Database for MySQL – Flexible Server-Anwendung auf Azure App Service
Azure App Service bietet einen hochgradig skalierbaren Webhostingdienst mit Self-Patching unter dem Linux-Betriebssystem. In diesem Tutorial wird gezeigt, wie Sie eine sichere PHP-App in Azure App Service erstellen, die mit einer MySQL-Datenbank verbunden ist (mit einem flexiblen Server von Azure Database for MySQL). Wenn Sie fertig sind, verfügen Sie über eine Laravel-App, die in Azure App Service für Linux ausgeführt wird.
In diesem Tutorial lernen Sie Folgendes:
- Erstellen einer sicheren standardmäßigen PHP- und MySQL-App in Azure
- Konfigurieren von Verbindungsschlüsseln in MySQL mithilfe von App-Einstellungen
- Bereitstellen von Anwendungscode mithilfe von GitHub Actions
- Aktualisieren und erneutes Bereitstellen der App
- Sichere Durchführung von Datenbankmigrationen
- Streamen von Diagnoseprotokollen aus Azure
- Verwalten der App im Azure-Portal
Voraussetzungen
- Ein Azure-Abonnement: Sollten Sie über kein Azure-Abonnement verfügen, können Sie ein kostenloses Azure-Konto erstellen, bevor Sie beginnen. Mit einem kostenlosen Azure-Konto können Sie Azure Database for MySQL – Flexibler Server derzeit 12 Monate lang kostenlos testen. Weitere Informationen finden Sie unter Verwenden eines kostenlosen Azure-Kontos, um Azure Database for MySQL – Flexible Server kostenlos zu testen.
Beispielanwendung
Führen Sie für dieses Tutorial das Klonen oder Herunterladen der Beispielanwendung aus dem Repository durch:
git clone https://github.com/Azure-Samples/laravel-tasks.git
Wenn Sie die Anwendung lokal ausführen möchten, gehen Sie wie folgt vor:
Konfigurieren Sie in .env die Datenbankeinstellungen (wie
DB_DATABASE
,DB_USERNAME
undDB_PASSWORD
) mithilfe von Einstellungen in Ihrer lokalen Azure Database for MySQL flexible Serverdatenbank. Sie benötigen eine lokale Azure Database for MySQL für die flexible Serverinstanz, um dieses Beispiel auszuführen.Starten Sie aus dem Stamm des Repositorys Laravel mit den folgenden Befehlen:
composer install php artisan migrate php artisan key:generate php artisan serve
1 - Erstellen von App Service und Azure Database for MySQL für flexible Serverressourcen
In diesem Schritt erstellen Sie die Azure-Ressourcen. Mit den Schritten in diesem Tutorial erstellen Sie eine flexible Serverkonfiguration für App Service und Azure Database for MySQL, die standardmäßig sicher ist. Für den Erstellungsprozess geben Sie Folgendes an:
- Den Namen für die Web-App. Dieser Name wird als Teil des DNS-Namens für Ihre Web-App im Format
https://<app-name>.azurewebsites.net
verwendet. - Die Runtime für die App. Hier wählen Sie die Version von PHP aus, die für Ihre App verwendet werden soll.
- Die Ressourcengruppe für die App. Mit einer Ressourcengruppe können Sie (in einem logischen Container) alle für die Anwendung benötigten Azure-Ressourcen gruppieren.
Melden Sie sich beim Azure-Portal an, und führen Sie die folgenden Schritte aus, um Ihre Azure App Service-Ressourcen zu erstellen.
Anweisungen | Screenshot |
---|---|
Im Azure-Portal:
|
|
Füllen Sie das Formular auf der Seite Web-App + Datenbank erstellen wie folgt aus.
|
|
Die Bereitstellung dauert einige Minuten, bis die Bereitstellung abgeschlossen ist, und erstellt die folgenden Ressourcen:
|
2 – Einrichten der Datenbankkonnektivität
Der Erstellungsassistent generierte App-Einstellungen, die Sie zum Herstellen einer Verbindung mit der Datenbank verwenden können, aber nicht in einem Format, das derzeit für Ihren Code brauchbar ist. In diesem Schritt bearbeiten und aktualisieren Sie App-Einstellungen in das Format, das Ihre App benötigt.
Anweisungen | Screenshot | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Wählen Sie im linken Menü auf der App Service-Seite Konfiguration aus. | |||||||||||
Klicken Sie auf der Registerkarte Anwendungseinstellungen der Seite Konfiguration bei jeder der folgenden Einstellungen auf Bearbeiten, aktualisieren Sie das Feld Name mit neuen Werten, und klicken Sie auf OK.
|
|||||||||||
Erstellen Sie eine neue MYSQL_ATTR_SSL_CA -Datenbankeinstellung:
|
|||||||||||
Erstellen Sie die folgenden zusätzlichen App-Einstellungen, indem Sie die gleichen Schritte durchführen, und klicken Sie dann auf Speichern.
|
3 – Bereitstellen von Beispielcode
In diesem Schritt konfigurieren Sie die GitHub-Bereitstellung mithilfe von GitHub Actions. Es ist nur eine der vielen Möglichkeiten, um App Service bereitzustellen, aber auch eine hervorragende Möglichkeit, eine kontinuierliche Integration in Ihren Bereitstellungsprozess zu haben. Standardmäßig startet jede git push
in Ihrem GitHub-Repository die Build- und Bereitstellungsaktion. Sie nehmen einige Änderungen an Ihrer Codebase mit Visual Studio Code direkt im Browser vor und lassen dann GitHub Actions automatisch für Sie bereitstellen.
Anweisungen | Screenshot |
---|---|
In einem neuen Browserfenster:
|
|
Öffnen Sie auf der GitHub-Seite Visual Studio Code im Browser, indem Sie die . -Taste drücken. |
|
Öffnen Sie in Visual Studio Code im Browser config/database.php im Explorer. Sehen Sie, dass in der mysql -Verbindung die App-Einstellungen, die Sie zuvor für die MySQL-Verbindung erstellt haben, bereits verwendet werden (DB_HOST , DB_DATABASE , DB_USERNAME , DB_PASSWORD , MYSQL_ATTR_SSL_CA ). |
|
Wählen Sie, wenn Sie wieder auf der App Service-Seite sind, im linken Menü Bereitstellungscenter aus. | |
Auf der Seite Bereitstellungscenter:
.github/workflows -Verzeichnis. |
|
Auf der Seite Bereitstellungscenter:
|
|
Um Änderungen an Ihrem Code vorzunehmen, gehen Sie im Browser zu Visual Studio Code:
Tipp Die GitHub-Aktion wird durch die Datei im GitHub-Repository in .github/workflow definiert. Sie können es schneller machen, indem Sie die Datei anpassen. |
4 – Generieren des Datenbankschemas
Der Erstellungsassistent stellt die flexible Serverinstanz von Azure Database for MySQL hinter einen privaten Endpunkt, sodass sie nur über das virtuelle Netzwerk zugänglich ist. Da die App Service-App bereits mit dem virtuellen Netzwerk integriert ist, ist die einfachste Möglichkeit, Datenbankmigrationen mit Ihrer Datenbank direkt im App Service-Container auszuführen.
Anweisungen | Screenshot |
---|---|
Auf der App Service-Seite:
https://<app-name>.scm.azurewebsites.net/webssh/host navigieren. |
|
Im SSH-Terminal:
|
5 – Ändern des Sitestammverzeichnisses
Der Lebenszyklus der Laravel-Anwendung beginnt im öffentlichen Verzeichnis anstatt im Stammverzeichnis der Anwendung. Der Standard-PHP 8.0-Container für App Service verwendet Nginx, das im Stammverzeichnis der Anwendung beginnt. Um den Websitestamm zu ändern, müssen Sie die Nginx-Konfigurationsdatei im PHP 8.0-Container (/etc/nginx/sites-available/default) ändern. Praktischerweise enthält das Beispiel-Repository eine benutzerdefinierte Konfigurationsdatei namens Standard. Wie zuvor erwähnt, sollten Sie diese Datei nicht mithilfe der SSH-Shell ersetzen, da Ihre Änderungen nach einem App-Neustart verloren gehen.
6 – Navigieren zur App
7. Streamen von Diagnoseprotokollen
Bereinigen von Ressourcen
Wenn Sie fertig sind, können Sie alle Ressourcen aus Ihrem Azure-Abonnement löschen, indem Sie die Ressourcengruppe löschen.
Häufig gestellte Fragen
- Wie viel kostet diese Einrichtung?
- Wie kann ich eine Verbindung mit einer flexiblen Azure Database for MySQL herstellen, die hinter einem virtuellen Netzwerk gesichert ist?
- Wie funktioniert die lokale App-Entwicklung mit GitHub Actions?
- Warum ist die GitHub Actions-Bereitstellung so langsam?
Wie viel kostet diese Einrichtung?
Die Preise für die Erstellungsressourcen sind wie folgt:
- Der App Service Plan wird auf Premium V2-Ebene erstellt und kann nach oben oder unten skaliert werden. Informationen dazu finden Sie unter App Service – Preise.
- Die flexible Serverinstanz von Azure Database for MySQL wird in der B1ms-Ebene erstellt und kann nach oben oder unten skaliert werden. Mit einem kostenlosen Azure-Konto ist die B1ms-Stufe für 12 Monate bis zu den monatlichen Grenzwerten kostenlos. Siehe Azure Database for MySQL flexible Serverpreise.
- Das virtuelle Netzwerk hat keine Gebühr, es sei denn, Sie konfigurieren zusätzliche Funktionen, z. B. Peering. Siehe Azure Virtual Network Preise.
- Die private DNS-Zone verursacht eine kleine Gebühr. Siehe Azure DNS-Preise.
Wie kann ich eine Verbindung mit einer flexiblen Azure-Serverdatenbank for MySQL herstellen, die hinter einem virtuellen Netzwerk gesichert ist?
Um eine Verbindung mit einer flexiblen Azure-Database for MySQL herzustellen, können Sie verschiedene Methoden basierend auf den Tools und Umgebungen verwenden, die Ihnen zur Verfügung stehen:
- Zugriff auf das Befehlszeilentool:
- Verwenden Sie den Befehl
mysql
über das SSH-Terminal der App für den einfachen Zugriff.
- Verwenden Sie den Befehl
- Desktoptools (z. B. MySQL Workbench):
- Verwenden von SSH-Tunneling mit der Azure CLI:
- Erstellen Sie mithilfe der Azure CLI eine SSH-Sitzung für die Web-App.
- Verwenden Sie die SSH-Sitzung, um den Datenverkehr zu MySQL zu tunneln.
- Verwenden von Site-to-Site-VPN oder Azure VM:
- Ihr Computer muss Teil des virtuellen Netzwerks sein.
- Mögliche Verwendung von:
- Eine Azure VM, die mit einem der Subnetze verknüpft ist.
- Ein Rechner in einem lokalen Netzwerk, der über eine Site-to-Site-VPN-Verbindung mit dem virtuellen Azure-Netzwerk verbunden ist.
- Verwenden von SSH-Tunneling mit der Azure CLI:
- Azure Cloud Shell-Integration:
- Integrieren der Azure Cloud Shell in das virtuelle Netzwerk.
Wie funktioniert die lokale App-Entwicklung mit GitHub Actions?
Nehmen Sie die automatisch generierte Workflowdatei von App Service als Beispiel; jede git push
startet eine neue Build- und Bereitstellungsausführung. Aus einem lokalen Klon des GitHub-Repositorys können Sie die gewünschten Updates zu GitHub pushen. Beispiel:
git add .
git commit -m "<some-message>"
git push origin main
Warum ist die GitHub Actions-Bereitstellung so langsam?
Die automatisch generierte Workflowdatei aus App Service definiert die Zwei-Aufträge-Ausführung „Erstellen, dann bereitstellen“. Da jeder Auftrag in einer eigenen sauberen Umgebung ausgeführt wird, stellt die Workflowdatei sicher, dass der deploy
-Auftrag Zugriff auf die Dateien aus dem build
-Auftrag hat:
- Laden Sie am Ende des
build
-Auftrags Dateien als Artefakte hoch. - Laden Sie am Anfang des
deploy
-Auftrags die Artefakte herunter.
Die meiste Zeit wird vom Zweiauftragsprozess darauf verwendet, Artefakte hoch- und herunterzuladen. Wenn Sie möchten, können Sie die Workflowdatei vereinfachen, indem Sie die beiden Aufträge in einen kombinieren, wodurch die Notwendigkeit für das Hochladen und Herunterladen entfernt wird.
Zusammenfassung
In diesem Tutorial haben Sie Folgendes gelernt:
- Erstellen einer sicheren standardmäßigen PHP- und Azure-Database for MySQL flexibler Server-App in Azure
- Konfigurieren von Verbindungsgeheimnissen mit Azure Database for MySQL flexiblen Server mithilfe von App-Einstellungen
- Bereitstellen von Anwendungscode mithilfe von GitHub Actions
- Aktualisieren und erneutes Bereitstellen der App
- Sichere Durchführung von Datenbankmigrationen
- Streamen von Diagnoseprotokollen aus Azure
- Verwalten der App im Azure-Portal