Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Dieses Lernprogramm zeigt, wie Sie eine sichere PHP-App in Azure App Service erstellen, die eine Verbindung mit einer MySQL-Datenbank herstellt (mit Azure Database for MySQL Flexible Server). Darüber hinaus stellen Sie eine Azure Cache for Redis bereit, um den Zwischenspeicherungscode in Ihrer Anwendung zu aktivieren. Azure App Service ist ein hochgradig skalierbarer Webhostingdienst mit Self-Patching, der Apps problemlos unter Windows oder Linux bereitstellen kann. Wenn Sie fertig sind, verfügen Sie über eine Laravel-App, die in Azure App Service für Linux ausgeführt wird.
Voraussetzungen
- Ein Azure-Konto mit einem aktiven Abonnement. Falls Sie kein Azure-Konto besitzen, können Sie kostenlos eines erstellen.
- Ein GitHub-Konto. Sie können einen solchen Schlüssel auch kostenlos abrufen.
- Kenntnisse von PHP mit Laravel-Entwicklung.
- (Optional) Ein GitHub Copilot-Konto, um GitHub Copilot zu testen. Es ist eine kostenlose 30-Tage-Testversion verfügbar.
1. Ausführen des Beispiels
Zunächst richten Sie eine datengesteuerte Beispiel-App als Ausgangspunkt ein. Das Beispielrepository enthält zu Ihrem Komfort eine Entwicklercontainerkonfiguration. Der Entwicklercontainer verfügt über alles, was Sie zum Entwickeln einer Anwendung benötigen, einschließlich der Datenbank, des Caches und aller Umgebungsvariablen, die von der Beispielanwendung benötigt werden. Der Entwicklercontainer kann in einem GitHub-Codespace ausgeführt werden, was bedeutet, dass Sie das Beispiel auf jedem Computer mit einem Webbrowser ausführen können.
Schritt 1: In einem neuen Browserfenster:
- Melden Sie sich bei Ihrem GitHub-Konto an.
- Navigiere zu https://github.com/Azure-Samples/laravel-tasks/fork.
- Wählen Sie Fork erstellen aus.
Schritt 2: Im GitHub-Fork:
- Wählen Sie Code>Codespace im Mainbranch erstellen aus.
Das Einrichten des Codespace dauert einige Minuten. Außerdem enthält die bereitgestellte env-Datei bereits eine Dummyvariable
APP_KEY
, die Laravel lokal ausführen muss.
Schritt 3: Im Codespace-Terminal:
- Führen Sie
composer install
aus. - Führen Sie eine Datenbankmigration mit
php artisan migrate
aus. - Führen Sie die App mit
php artisan serve
aus. - Wenn die Benachrichtigung
Your application running on port 80 is available.
angezeigt wird, wählen Sie Im Browser öffnen aus. Die Beispielanwendung sollte in einem neuen Browsertab angezeigt werden. Um die Anwendung zu beenden, geben SieCtrl
+C
ein.
Treten Probleme auf? Sehen Sie sich den Abschnitt zur Problembehandlung an.
2 – Erstellen von App Service, Datenbank und Cache
In diesem Schritt erstellen Sie die Azure-Ressourcen. Die in diesem Lernprogramm verwendeten Schritte erstellen eine Reihe sicherer standardmäßiger Ressourcen, die App Service, Azure-Datenbank für MySQL und Azure Cache für Redis enthalten. Für den Erstellungsprozess geben Sie Folgendes an:
- Den Namen für die Web-App. Sie wird als Teil des DNS-Namens für Ihre App verwendet.
- Die Region, in der die App physisch weltweit ausgeführt wird. Sie wird auch als Teil des DNS-Namens für Ihre App verwendet.
- Der Ausführungsstapel für die App. Hier wählen Sie die Version von PHP aus, die für Ihre App verwendet werden soll.
- Der Hostingplan für die App. Dies ist der Tarif, der die Features und Skalierungskapazität für Ihre App enthält.
- 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.
Schritt 1: Im Azure-Portal:
- Geben Sie in der oberen Suchleiste App Service ein.
- Wählen Sie unter der Überschrift Dienste das Element mit der Bezeichnung App Service aus.
- Wählen Sie Erstellen>Web-App aus. Sie können auch direkt zum Erstellungsassistenten navigieren.
Schritt 2: Füllen Sie das Formular auf der Seite Web-App erstellen wie folgt aus.
- Name: msdocs-laravel-mysql-XYZ. Eine Ressourcengruppe namens "msdocs-laravel-mysql-XYZ_group " wird für Sie generiert.
- Laufzeitstapel: PHP 8.4.
- Betriebssystem: Linux.
- Region: Eine beliebige Azure-Region in Ihrer Nähe.
- Linux-Plan: Erstellen Sie neu und verwenden Sie den Namen msdocs-laravel-mysql-XYZ.
- Preisplan: Einfach. Wenn Sie bereit sind, können Sie auf einen anderen Tarif hochskalieren.
Schritt 3:
- Wählen Sie die Registerkarte "Datenbank " aus.
- Wählen Sie "Datenbank erstellen" aus.
- Wählen Sie in EngineMySQL - Flexible Server aus.
- Wählen Sie "Azure Cache für Redis erstellen" aus.
- Geben Sie unter "Name " (unter "Cache") einen Namen für den Cache ein.
- Wählen Sie in SKUBasic aus.
Schritt 4:
- Wählen Sie die Registerkarte "Bereitstellung " aus.
- Aktivieren Sie die kontinuierliche Bereitstellung.
- Wählen Sie in "Organisation" Ihren GitHub-Alias aus.
- Wählen Sie im Repositorydie Option Laravel-Aufgaben aus.
- Wählen Sie in Branch die Option Hauptbereich aus.
- Stellen Sie sicher, dass die Standardauthentifizierung deaktiviert ist.
- Klicken Sie auf Überprüfen + erstellen.
- Wenn die Überprüfung abgeschlossen ist, wählen Sie Erstellen aus.
Schritt 5: Die Durchführung der Bereitstellung dauert einige Minuten. Wählen Sie nach Abschluss der Bereitstellung die Schaltfläche Zu Ressource wechseln aus. Sie werden direkt zur App Service App weitergeleitet, aber die folgenden Ressourcen werden erstellt:
- Ressourcengruppe: Der Container für alle erstellten Ressourcen.
- App Service-Plan: Definiert die Berechnungsressourcen für App Service. Ein Linux-Plan im Basic-Tarif wird erstellt.
- App Service: Stellt Ihre App dar und wird im App Service Plan ausgeführt.
- Virtuelles Netzwerk: Integriert in die App Service-App und isoliert den Back-End-Netzwerkdatenverkehr.
- Private Endpunkte: Access-Endpunkte für den Datenbankserver und den Redis-Cache im virtuellen Netzwerk.
- Netzwerkschnittstellen: Stellt private IP-Adressen dar, eine für jeden privaten Endpunkt.
- Azure Database for MySQL – Flexibler Server: Nur von hinter seinem privaten Endpunkt aus zugänglich. Eine Datenbank und ein Benutzer werden für Sie auf dem Server erstellt.
- Azure Cache for Redis: Nur von hinter seinem privaten Endpunkt aus zugänglich.
- Private DNS-Zonen: Aktivieren der DNS-Auflösung des Datenbankservers und des Redis-Cache im virtuellen Netzwerk.
3 – Sichere Verbindungsgeheimnisse
Der Erstellungs-Assistent hat die Verbindungsvariablen für Sie bereits als App-Einstellungen generiert. Die bewährte Sicherheitsmethode besteht jedoch darin, Geheimnisse vollständig aus App Service herauszuhalten. Sie verschieben Ihre Geheimnisse in einen Schlüsseltresor und ändern Ihre App-Einstellung mithilfe von Dienstconnectors in einen Key Vault-Verweis.
Schritt 1: Abrufen der vorhandenen Verbindungszeichenfolge
- Wählen Sie im linken Menü der App Service-Seite Einstellungen > Umgebungsvariablen aus.
- Wählen Sie Connection strings (Verbindungszeichenfolgen).
- Wählen Sie AZURE_MYSQL_CONNECTIONSTRING.
- Kopieren Sie in der Einstellung "Anwendung hinzufügen/bearbeiten" im Feld "Wert " den Benutzernamen und das Kennwort für die spätere Verwendung. Mit der Verbindungszeichenfolge können Sie eine Verbindung mit der MySQL-Datenbank herstellen, die hinter privaten Endpunkten gesichert ist. Geheimnisse werden jedoch direkt in der App Service-App gespeichert, was nicht optimal ist. Sie werden dies ändern.
Schritt 2: Erstellen eines Schlüsselbunds für die sichere Verwaltung von geheimen Daten
- Geben Sie in der oberen Suchleiste key vault ein, und wählen Sie dann Marketplace>Key Vault aus.
- Wählen Sie in der Ressourcengruppe"msdocs-laravel-mysql-XYZ_group" aus.
- Geben Sie bei Key Vault Name einen Namen ein, der nur aus Buchstaben und Zahlen besteht.
- Legen Sie den Wert für Region auf den gleichen Standort wie für die Ressourcengruppe fest.
Schritt 3: Absichern des Key Vaults mit einem privaten Endpunkt
- Wählen Sie die Registerkarte Netzwerk aus.
- Deaktivieren SieÖffentlichen Zugriff aktivieren.
- Wählen sie Privaten Endpunkt erstellen aus.
- Wählen Sie in der Ressourcengruppe"msdocs-laravel-mysql-XYZ_group" aus.
- Wählen Sie im Dialogfeld unter Standort denselben Standort wie für Ihre App Service-App aus.
- Geben Sie im Namen"msdocs-laravel-mysql-XYZVaultEndpoint" ein.
- Wählen Sie im virtuellen Netzwerk das virtuelle Netzwerk in der Gruppe "msdocs-laravel-mysql-XYZ_group " aus.
- Wählen Sie im Subnetz das verfügbare kompatible Subnetz aus. Der Web-App-Assistent hat es zu Ihrer Bequemlichkeit erstellt.
- Klicken Sie auf OK.
- Klicken Sie aufÜberprüfen + erstellen und dann auf Erstellen. Warten Sie, bis die Bereitstellung des Schlüsseltresors abgeschlossen ist. Die Meldung „Ihre Bereitstellung wurde abgeschlossen.“ sollte angezeigt werden.
Schritt 4: Erstellen des MySQL-Connectors
- Geben Sie in der oberen Suchleiste "msdocs-laravel-mysql" ein, und wählen Sie dann die App-Dienstressource namens "msdocs-laravel-mysql-XYZ" aus.
- Wählen Sie auf der App Service-Seite im linken Menü Einstellungen > Dienst-Connector aus.
- Wählen Sie "Erstellen" aus.
- Wählen Sie für den DiensttypDB für den flexiblen MySQL-Server aus.
- Wählen Sie für den flexiblen MySQL-Server Ihren Server aus (z. B. msdocs-laravel-mysql-235-server).
- Wählen Sie für mySQL-Datenbank Ihre Datenbank aus (z. B. msdocs-laravel-mysql-235-database).
Schritt 5: Konfigurieren der Authentifizierung für den MySQL-Connector
- Wählen Sie die Registerkarte Authentifizierung aus.
- Wählen Sie Verbindungszeichenfolge aus.
- Fügen Sie unter Kennwort das Kennwort ein, das Sie zuvor kopiert haben.
- Wählen Sie Geheimnis in Key Vault speichern aus.
- Wählen Sie unter Key Vault-Verbindung die Option Neu erstellen aus. Über dem Bearbeitungsdialogfeld wird das Dialogfeld Verbindung erstellen geöffnet.
Schritt 6: Einrichten der Key Vault-Verbindung
- Wählen Sie im Dialogfeld Verbindung erstellen für die Key Vault-Verbindung unter Key Vault den zuvor erstellten Schlüsseltresor aus.
- Wählen Sie Überprüfen + Erstellen aus.
- Wenn die Überprüfung abgeschlossen ist, wählen Sie Erstellen.
Schritt 6: Abschließen der MySQL-Connectoreinstellungen
- Sie befinden sich wieder im MySQL-Connectordialogfeld. Warten Sie auf der Registerkarte Authentifizierung, bis der Schlüsseltresorconnector erstellt wurde. Nach Abschluss des Vorgangs wird er automatisch in der Dropdownliste Key Vault-Verbindung ausgewählt.
- Wählen Sie Überprüfen + Erstellen aus.
- Wählen Sie "Erstellen" aus. Warten Sie, bis die Benachrichtigung Update erfolgreich angezeigt wird.
Schritt 7: Konfigurieren des Redis-Connectors für die Verwendung von Key Vault-Geheimnissen
- Aktivieren Sie auf der Seite des Dienstconnectors das Kontrollkästchen neben dem Cache for Redis-Connector, und wählen Sie dann Bearbeiten aus.
- Wählen Sie die Registerkarte Authentifizierung aus.
- Wählen Sie Geheimnis in Key Vault speichern aus.
- Wählen Sie unter Key Vault Connection den von Ihnen erstellten Key Vault aus.
- Klicken Sie auf Weiter: Netzwerk.
- Wählen Sie Firewallregeln konfigurieren, um den Zugriff auf den Zieldienst zu aktivieren aus. Der App-Erstellungs-Assistent hat die SQL-Datenbank bereits mit einem privaten Endpunkt geschützt.
- Wählen Sie Speichern. Warten Sie, bis die Benachrichtigung Update erfolgreich angezeigt wird.
Schritt 8: Überprüfen der Key Vault-Integration
- Wählen Sie im linken Menü erneut Einstellungen > Umgebungsvariablen aus.
- Wählen Sie neben AZURE_MYSQL_PASSWORD " Wert anzeigen" aus. Der Wert sollte
@Microsoft.KeyVault(...)
lauten. Das bedeutet, dass es sich um einen Schlüsseltresorverweis handelt, da das Geheimnis jetzt im Schlüsseltresor verwaltet wird. - Um die Redis-Verbindungszeichenfolge zu überprüfen, wählen Sie neben AZURE_REDIS_CONNECTIONSTRING die Option Wert anzeigen aus.
Folgende Schritte sind zum Schützen Ihrer Verbindungsgeheimnisse erforderlich:
- Abrufen der Verbindungsgeheimnisse aus den Umgebungsvariablen der App Service-App
- Erstellen eines Schlüsseltresors.
- Erstellen einer Key Vault-Verbindung mit der systemseitig zugewiesenen verwalteten Identität
- Aktualisieren der Dienstconnectors zum Speichern der Geheimnisse in Key Vault
Treten Probleme auf? Sehen Sie sich den Abschnitt zur Problembehandlung an.
4 – Konfigurieren von Laravel-Variablen
Schritt 1: Als App-Einstellung erstellen CACHE_DRIVER
.
- Wählen Sie auf der Registerkarte App-Einstellungen die Option Hinzufügen aus.
- Geben Sie in das Feld Name den Namen CACHE_DRIVER ein.
- Geben Sie redis in das Feld Wert ein.
- Wählen Sie Übernehmen, anschließend erneut Übernehmen und dann Bestätigen aus.
Schritt 2: Erstellen Sie mit den gleichen Schritten in Schritt 1 die folgenden App-Einstellungen:
- MYSQL_ATTR_SSL_CA: Verwenden Sie /home/site/wwwroot/ssl/DigiCertGlobalRootCA.crt.pem als Wert. Diese App-Einstellung verweist auf den Pfad des TLS/SSL-Zertifikats, das Sie benötigen, um auf den MySQL-Server zuzugreifen. Es ist praktischerweise im Beispiel-Repository enthalten.
- LOG_CHANNEL: Verwenden Sie stderr als Wert. Diese Einstellung weist Laravel an, Protokolle an stderr zu übergeben, sodass sie für die App Service-Protokolle verfügbar sind.
- APP_DEBUG: Verwenden Sie true als Wert. Es handelt sich um eine Laravel-Debugvariable, die Debugmodusseiten aktiviert.
- APP_KEY: Verwenden Sie base64:Dsz40HWwbCqnq0oxMsjq7fItmKIeBfCBGORfspaI1Kw= als Wert. Dies ist eine Laravel-Verschlüsselungsvariable.
Wichtig
Der APP_KEY
-Wert wird hier praktischerweise verwendet. Für Produktionsszenarien sollte er speziell für Ihre Bereitstellung mit php artisan key:generate --show
in der Befehlszeile generiert werden.
Im Idealfall sollte die App-Einstellung APP_KEY
auch als Key Vault-Verweis konfiguriert werden. Dieser Prozess umfasst mehrere Schritte. Weitere Informationen finden Sie unter Wie ändere ich die APP_KEY-App-Einstellung zu einem Key Vault-Verweis?
5 – 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.
Schritt 1: Im GitHub-Codespace Ihres Beispiel-Forks, führen Sie git pull origin main
aus.
Dadurch wird die neu committete Workflowdatei in Ihren Codespace übertragen.
Schritt 2 (Option 1: mit GitHub Copilot):
- Starten Sie eine neue Chatsitzung, indem Sie die Ansicht Chat und dann die Option + auswählen.
- Frage: "@workspace Wie stellt die App eine Verbindung mit der Datenbank und Redis her?" Copilot gibt Ihnen möglicherweise einige Erläuterungen darüber, wie die Einstellungen in config/database.php konfiguriert sind.
- Fragen Sie " @workspace Im Produktionsmodus wird meine App in einer App Service Web App ausgeführt, die Azure Service Connector verwendet, um eine Verbindung mit einem flexiblen MySQL-Server herzustellen. Was sind die Namen der Umgebungsvariablen, die ich verwenden muss?" Copilot gibt Ihnen möglicherweise einen Codevorschlag ähnlich wie in der Option 2: ohne die nachstehenden Schritte von GitHub Copilot und weisen Sie sogar an, die Änderung in der Datei config/database.php vorzunehmen.
- Öffnen Sie config/database.php im Explorer, und fügen Sie den Codevorschlag hinzu.
- Fragen Sie „*@workspace Meine App Service-App verwendet auch den Azure-Dienstconnector, um eine Verbindung mit Cache for Redis mithilfe des Clienttyps Django herzustellen. Was sind die Namen der Umgebungsvariablen, die ich verwenden muss?*" Copilot gibt Ihnen möglicherweise einen Codevorschlag ähnlich wie in der Option 2: ohne GitHub Copilot Schritte unten und teilen Sie ihnen sogar mit, die Änderung in der Datei config/database.php vorzunehmen. Wenn Sie dazu aufgefordert werden, melden Sie sich bei GitHub Copilot für Azure an, um genauere Antworten zu erhalten.
- Fügen Sie den Codevorschlag ein. GitHub Copilot gibt Ihnen nicht jedes Mal die gleiche Antwort, und sie ist nicht immer richtig. Möglicherweise müssen Sie weitere Fragen stellen, um ihre Antwort zu optimieren. Tipps finden Sie unter Was kann ich mit GitHub Copilot in meinem Codespace machen?.
Schritt 2 (Option 2: ohne GitHub Copilot):
- Öffnen Sie config/database.php im Explorer. Finden Sie den Abschnitt
mysql
und nehmen Sie die folgenden Änderungen vor. - Ersetzen
DB_HOST
(Zeile 49) durchAZURE_MYSQL_HOST
. - Ersetzen
DB_DATABASE
(Zeile 51) durchAZURE_MYSQL_DBNAME
. - Ersetzen
DB_USERNAME
(Zeile 52) durchAZURE_MYSQL_USERNAME
. - Ersetzen
DB_PASSWORD
(Zeile 53) durchAZURE_MYSQL_PASSWORD
. - Ersetzen
DB_PORT
(Zeile 50) durchAZURE_MYSQL_PORT
. - Scrollen Sie zum Abschnitt "Redis
cache
", und nehmen Sie die folgenden Änderungen vor: - Ersetzen
REDIS_HOST
(Zeile 142) durchAZURE_REDIS_HOST
. - Ersetzen
REDIS_PASSWORD
(Zeile 144) durchAZURE_REDIS_PASSWORD
. - Ersetzen
REDIS_PORT
(Zeile 145) durchAZURE_REDIS_PORT
. - Ersetzen
REDIS_CACHE_DB
(Zeile 146) durchAZURE_REDIS_DATABASE
. - Fügen Sie im selben Abschnitt eine Zeile mit
'scheme' => 'tls',
hinzu. Diese Konfiguration weist Laravel an, die Verschlüsselung zu verwenden, um eine Verbindung mit Redis herzustellen.
Schritt 3:
- Wählen Sie die Quellsteuerungserweiterung aus.
- Geben Sie im Textfeld eine Commitnachricht ein, z. B.
Configure Azure database and cache connections
. Oder wählen Sieaus, und lassen Sie GitHub Copilot eine Commit-Nachricht für Sie generieren.
- Wählen Sie Commit aus, und bestätigen Sie dann mit Ja.
- Wählen Sie Änderungen synchronisieren 1 aus, und bestätigen Sie dann mit OK.
Schritt 4: Zurück auf der Seite "Deployment Center" im Azure-Portal:
- Wählen Sie die Registerkarte Protokolle und dann Aktualisieren aus, um die neue Bereitstellung anzuzeigen.
- Wählen Sie in dem Protokollelement für die Bereitstellungsausführung den Eintrag Build/Deploy Logs mit dem neuesten Zeitstempel aus.
Schritt 5: Sie werden zu Ihrem GitHub-Repository weitergeleitet und sehen, dass die GitHub-Aktion ausgeführt wird. Die Workflowdatei definiert zwei separate Phasen, Erstellen und Bereitstellen. Warten Sie, bis die GitHub-Ausführung den Status Erfolg anzeigt. Es dauert etwa 10 Minuten.
Treten Probleme auf? Sehen Sie sich den Abschnitt zur Problembehandlung an.
6 – Datenbankschema generieren
Der Erstellungs-Assistent legt den MySQL-Datenbankserver hinter einen privaten Endpunkt, sodass er 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.
Schritt 1: Zurück auf der App Service-Seite, im linken Menü,
- Wählen Sie Entwicklungstools>SSH aus.
- Klicken Sie auf Starten.
Schritt 2: Im SSH-Terminal:
- Führen Sie
cd /home/site/wwwroot
aus. Hier finden Sie alle Ihre bereitgestellten Dateien. - Führen Sie
php artisan migrate --force
aus. Wenn dies erfolgreich ist, stellt App Service erfolgreich eine Verbindung mit der MySQL-Datenbank her.
Tipp
In der SSH-Sitzung können nur Änderungen an Dateien in /home
über den Neustart der App hinaus bestehen bleiben. Änderungen außerhalb von /home
bleiben nicht erhalten.
7 – Websitestamm ändern
Der Lebenszyklus der Laravel-Anwendung beginnt im öffentlichen Verzeichnis anstatt im Stammverzeichnis der Anwendung. Der Standard-PHP-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-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 die Änderung außerhalb von /home
liegt und nach einem App-Neustart verloren gehen.
Schritt 1:
- Klicken Sie im linken Menü auf Konfiguration.
- Wählen Sie die Registerkarte Allgemeine Einstellungen aus.
Schritt 2: Auf der Registerkarte „Allgemeine Einstellungen“:
- Geben Sie im Feld Startbefehl den folgenden Befehl ein: cp /home/site/wwwroot/default /etc/nginx/sites-available/default && service nginx reload.
- Wählen Sie "Speichern" und dann " Weiter" aus. Der Befehl ersetzt die Nginx-Konfigurationsdatei im PHP-Container und startet Nginx neu. Diese Konfiguration stellt sicher, dass dieselbe Änderung jedes Mal am Container vorgenommen wird, wenn er gestartet wird.
8 – Zur App navigieren
Schritt 1: Auf der App Service-Seite:
- Wählen Sie im Menü auf der linken Seite die Option Übersicht aus.
- Wählen Sie die Standarddomäne Ihrer App aus.
Schritt 2: Fügen Sie der Liste einige Aufgaben hinzu. Glückwunsch! Sie führen eine sichere datengesteuerte PHP-App in Azure App Service aus.
Tipp
Die Beispielanwendung implementiert das Cache-Aside-Muster. Wenn Sie die Seite nach Datenänderungen erneut laden, wird die Antwortzeit auf der Webseite als viel schneller angezeigt, da die Daten aus dem Cache und nicht aus der Datenbank geladen werden.
9 – Stream-Diagnoseprotokolle
Azure App Service erfasst alle Nachrichten, die an der Konsole protokolliert werden, um Sie bei der Diagnose von Problemen mit Ihrer Anwendung zu unterstützen. Die Beispiel-App gibt Konsolenprotokollmeldungen an jedem ihrer Endpunkte aus, um diese Funktion zu veranschaulichen. Standardmäßig wird die Protokollierungsfunktion von Laravel (z. B. Log::info()
) in eine lokale Datei ausgegeben. Ihre frühere LOG_CHANNEL
App-Einstellung ermöglicht den Zugriff auf Protokolleinträge aus dem App Service-Protokolldatenstrom.
Schritt 1: Auf der App Service-Seite:
- Wählen Sie im linken Menü App Service-Protokolle aus.
- Wählen Sie unter Anwendungsprotokollierung die Option Dateisystem aus.
Schritt 2: Wählen Sie im Menü auf der linken Seite die Option Protokollstream aus. Sie sehen die Protokolle für Ihre App, einschließlich Plattformprotokolle und Protokolle innerhalb des Containers.
Bereinigen von Ressourcen
Wenn Sie fertig sind, können Sie alle Ressourcen aus Ihrem Azure-Abonnement löschen, indem Sie die Ressourcengruppe löschen.
Schritt 1: In der Suchleiste oben im Azure-Portal:
- Geben Sie den Ressourcengruppennamen ein.
- Wählen Sie die Ressourcengruppe aus.
Schritt 2: Wählen Sie auf der Seite „Ressourcengruppe“ die Option Ressourcengruppe löschen aus.
Schritt 3:
- Geben Sie den Namen der Ressourcengruppe ein, um Ihre Löschung zu bestätigen.
- Klicken Sie auf Löschen.
2. Erstellen von Azure-Ressourcen und Bereitstellen einer Beispiel-App
In diesem Schritt erstellen Sie die Azure-Ressourcen und stellen eine Beispiel-App für App Service für Linux bereit. Die in diesem Tutorial ausgeführten Schritte erstellen eine Reihe standardmäßig sicherer Ressourcen, die App Service und Azure Database for MySQL umfassen.
Der GitHub-Codespace verfügt bereits über die Azure Developer CLI (AZD).
Generieren Sie einen Laravel-Verschlüsselungsschlüssel mit
php artisan key:generate --show
:php artisan key:generate --show
Melden Sie sich mithilfe des Befehls
azd auth login
bei Azure an, und folgen Sie der Eingabeaufforderung:azd auth login
Führen Sie den
azd up
-Befehl aus, um die notwendigen Azure-Ressourcen zu erstellen und den App-Code bereitzustellen. Folgen Sie der Eingabeaufforderung, um das gewünschte Abonnement und den gewünschten Standort für die Azure-Ressourcen auszuwählen.azd up
Wenn Sie dazu aufgefordert werden, geben Sie die folgenden Antworten:
Frage Antwort Geben Sie einen neuen Umgebungsnamen ein. Geben Sie einen eindeutigen Namen ein. Die AZD-Vorlage verwendet diesen Namen als Teil des DNS-Namens Ihrer Web-App in Azure ( <app-name>-<hash>.azurewebsites.net
). Alphanumerische Zeichen und Bindestriche sind zulässig.Wählen Sie ein Azure-Abonnement aus, das Sie verwenden möchten. Wählen Sie Ihr Abonnement aus. Wählen Sie einen azure-Speicherort aus, der verwendet werden soll. Wählen Sie einen Standort aus. Geben Sie einen Wert für den gesicherten Parameter der "appKey"-Infrastruktur ein. Verwenden Sie die Ausgabe von php artisan key:generate --show
hier. Die AZD-Vorlage erstellt einen Key Vault-Geheimnis dafür, das Sie in Ihrer App verwenden können.Geben Sie einen Wert für den gesicherten Parameter „databasePassword“ der Infrastruktur ein. Datenbankkennwort für MySQL. Es muss mindestens 8 Zeichen lang sein und Großbuchstaben, Kleinbuchstaben, Zahlen und Sonderzeichen enthalten. Die Ausführung des Befehls
azd up
dauert etwa 15 Minuten. (Die meiste Zeit wird vom Redis-Cache beansprucht.) Außerdem wird Ihr Anwendungscode kompiliert und bereitgestellt. Sie ändern den Code jedoch später so, dass er mit App Service funktioniert. Während der Ausführung stellt der Befehl Nachrichten zum Bestimmungs- und Bereitstellungsprozess bereit, einschließlich eines Links zur Bereitstellung in Azure. Wenn er abgeschlossen ist, zeigt der Befehl auch einen Link zur Bereitstellungsanwendung an.Diese AZD-Vorlage enthält Dateien (azure.yaml und das Verzeichnis infra), die eine standardmäßig sichere Architektur mit den folgenden Azure-Ressourcen generieren:
- Ressourcengruppe: Der Container für alle erstellten Ressourcen.
- App Service-Plan: Definiert die Berechnungsressourcen für App Service. Ein Linux-Plan im B1-Tarif wird erstellt.
- App Service: Stellt Ihre App dar und wird im App Service Plan ausgeführt.
- Virtuelles Netzwerk: Integriert in die App Service-App und isoliert den Back-End-Netzwerkdatenverkehr.
- Azure Database for MySQL – Flexibler Server: Nur über das virtuelle Netzwerk durch die DNS-Zonenintegration zugänglich. Eine Datenbank wird für Sie auf dem Server erstellt.
- Azure Cache for Redis: Nur innerhalb des virtuellen Netzwerks zugänglich.
- Private Endpunkte: Zugriffsendpunkte für den Key Vault und den Redis-Cache im virtuellen Netzwerk.
- Private DNS-Zonen: Ermöglichen Sie die DNS-Auflösung für das Schlüsselarchiv, den Datenbankserver und den Redis-Cache im virtuellen Netzwerk.
- Log Analytics-Arbeitsbereich: Fungiert als Zielcontainer für Ihre App, um die Protokolle zu versenden. Dort können Sie auch die Protokolle abfragen.
- Key Vault: Wird verwendet, um das Datenbankkennwort beim erneuten Bereitstellen mit AZD beizubehalten.
Treten Probleme auf? Sehen Sie sich den Abschnitt zur Problembehandlung an.
3. Verwenden von Azure-Verbindungszeichenfolgen im Anwendungscode
Die von Ihnen verwendete AZD-Vorlage hat die Konnektivitätsvariablen für Sie bereits als App-Einstellungen generiert und gibt sie der Einfachheit halber im Terminal für Sie aus. App-Einstellungen sind eine Möglichkeit, um Verbindungsgeheimnisse aus Ihrem Coderepository herauszuhalten.
Suchen Sie in der AZD-Ausgabe die App-Einstellungen, die mit
AZURE_MYSQL_
undAZURE_REDIS_
anfangen. Nur die Einstellungsnamen werden angezeigt. Sie sehen in der AZD-Ausgabe wie folgt aus:App Service app has the following app settings: - AZURE_KEYVAULT_RESOURCEENDPOINT - AZURE_KEYVAULT_SCOPE - AZURE_MYSQL_DBNAME - AZURE_MYSQL_FLAG - AZURE_MYSQL_HOST - AZURE_MYSQL_PASSWORD - AZURE_MYSQL_PORT - AZURE_MYSQL_USERNAME - AZURE_REDIS_DATABASE - AZURE_REDIS_HOST - AZURE_REDIS_PASSWORD - AZURE_REDIS_PORT - AZURE_REDIS_SSL
Die Einstellungen, die mit
AZURE_MYSQL_
beginnen, sind Verbindungsvariablen für die MySQL-Datenbank, und die Einstellungen, die mitAZURE_REDIS_
beginnen, sind für den Redis-Cache. Sie müssen sie später in Ihrem Code verwenden. Die AZD-Vorlage zeigt Ihnen den direkten Link zur App-Einstellungsseite im Azure-Portal an.Öffnen Sie im Explorer config/database.php. Dies ist die Konfigurationsdatei für Datenbank- und Redis-Cacheverbindungen.
Suchen Sie den Teil, der die
mysql
Verbindung (Zeilen 46-64) definiert, und ersetzen SieDB_HOST
,DB_PORT
,DB_DATABASE
,DB_USERNAME
undDB_PASSWORD
durch dieAZURE_MYSQL_
App-Einstellungen aus der AZD-Ausgabe. Ihremysql
Verbindung sollte wie der folgende Code aussehen.'mysql' => [ 'driver' => 'mysql', 'url' => env('DATABASE_URL'), 'host' => env('AZURE_MYSQL_HOST', '127.0.0.1'), 'port' => env('AZURE_MYSQL_PORT', '3306'), 'database' => env('AZURE_MYSQL_DBNAME', 'forge'), 'username' => env('AZURE_MYSQL_USERNAME', 'forge'), 'password' => env('AZURE_MYSQL_PASSWORD', ''), 'unix_socket' => env('DB_SOCKET', ''), 'charset' => 'utf8mb4', 'collation' => 'utf8mb4_unicode_ci', 'prefix' => '', 'prefix_indexes' => true, 'strict' => true, 'engine' => null, 'options' => extension_loaded('pdo_mysql') ? array_filter([ PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), ]) : [], ],
Weitere Informationen zur Datenbankkonfiguration in Laravel finden Sie in der Dokumentation zu Laravel.
Suchen Sie den Teil, der die Redis-Cacheverbindung (Zeilen 140-147) definiert, und ersetzen Sie
REDIS_HOST
,REDIS_PASSWORD
,REDIS_PORT
undREDIS_CACHE_DB
mit denAzure_REDIS_
App-Einstellungen aus der AZD-Ausgabe. Fügen Sie außerdem der Verbindung'scheme' => 'tls',
hinzu. Die Cacheverbindung sollte wie der folgende Code aussehen:'cache' => [ 'scheme' => 'tls', 'url' => env('REDIS_URL'), 'host' => env('AZURE_REDIS_HOST', '127.0.0.1'), 'username' => env('REDIS_USERNAME'), 'password' => env('AZURE_REDIS_PASSWORD'), 'port' => env('AZURE_REDIS_PORT', '6379'), 'database' => env('AZURE_REDIS_DATABASE', '1'), ],
Weitere Informationen zur Redis-Cachekonfiguration in Laravel finden Sie in der Dokumentation zu Laravel.
Hinweis
Denken Sie daran, dass Ihre Änderungen noch nicht bereitgestellt werden. Sie stellen sie am Ende des nächsten Schritts bereit.
4. Konfigurieren von Laravel-Einstellungen in der Web-App
Öffnen Sie im Explorer infra/resources.bicep. Dies ist die Bicep-Datei, die die erstellten Azure-Ressourcen definiert.
Suchen Sie den Teil, der die App-Einstellungen definiert (Zeilen 510–514), und heben Sie die Auskommentierung auf. Diese App-Einstellungen sind:
Konfiguration BESCHREIBUNG CACHE_DRIVER
Teilt Laravel mit, Redis als Cache zu verwenden (siehe Laravel-Dokumentation). MYSQL_ATTR_SSL_CA
Erforderlich, um eine TLS-Verbindung mit MySQL in Azure zu öffnen. Die Zertifikatdatei ist aus Gründen der Einfachheit im Beispiel-Repository enthalten. Diese Variable wird von der Mysql-Verbindung in config/database.php verwendet. LOG_CHANNEL
Teilt Laravel mit, Protokolle an stderr
zu übermitteln, wodurch sie den Protokollen des App Service zur Verfügung gestellt werden (siehe Laravel-Dokumentation).APP_DEBUG
Aktivieren Von Debugmodusseiten in Laravel (siehe Dokumentation zu Laravel). APP_KEY
Laravel-Verschlüsselungsvariable. Die AZD-Vorlage hat bereits ein Key Vault-Geheimnis (Zeilen 212-217) erstellt, sodass Sie mit einem Key Vault-Verweis darauf zugreifen können. Suchen Sie in infra/resources.bicep die Ressourcendefinition für die App Service-App, und heben Sie die Auskommentierung in Zeile 315 auf:
appCommandLine: 'cp /home/site/wwwroot/default /etc/nginx/sites-available/default && service nginx reload'
Der Lebenszyklus der Laravel-Anwendung beginnt im Verzeichnis "/public " anstelle des Anwendungsstamms. Der Standard-PHP-Container für App Service verwendet Nginx, der im Anwendungsstamm beginnt. Um den Websitestamm zu ändern, müssen Sie die Nginx-Konfigurationsdatei im PHP-Container (/etc/nginx/sites-available/default) ändern. Aus Gründen der Einfachheit enthält das Beispielrepository eine Ersatzkonfigurationsdatei namens "Standard", die Nginx angibt, im /public-Verzeichnis zu suchen. Dieser benutzerdefinierte Befehl in
appCommandLine
wird jedes Mal ausgeführt, wenn die App beginnt, den Dateiersatz bei jedem erneuten Ladevorgang des Linux-Containers aus einem bereinigten Zustand anzuwenden.Kehren Sie zum Codespace-Terminal zurück und führen Sie
azd up
erneut aus.azd up
Tipp
azd up
betreibt azd package
, azd provision
und azd deploy
zusammen, was sinnvoll ist, da Sie sowohl Infrastruktur- als auch Anwendungsänderungen vornehmen. Führen Sie azd provision
aus, um nur Infrastrukturänderungen vorzunehmen. Führen Sie azd deploy
aus, um nur Änderungen am Anwendungscode bereitzustellen.
Treten Probleme auf? Sehen Sie sich den Abschnitt zur Problembehandlung an.
5. Generieren des Datenbankschemas
Mit der durch das virtuelle Netzwerk geschützten MySQL-Datenbank befindet sich die einfachste Möglichkeit zum Ausführen von Laravel-Datenbankmigrationen in einer SSH-Sitzung mit dem Linux-Container in App Service.
Suchen Sie in der AZD-Ausgabe die URL für die SSH-Sitzung, und navigieren Sie im Browser dorthin. Die Ausgabe sieht wie folgt aus:
Open SSH session to App Service container at: <URL>
Führen Sie in der SSH-Sitzung Datenbankmigrationen aus dem Verzeichnis "/home/site/wwwroot " aus:
cd /home/site/wwwroot php artisan migrate --force
Wenn dies erfolgreich ist, stellt App Service erfolgreich eine Verbindung mit der Datenbank her.
Hinweis
Nur Änderungen an Dateien in /home
können über den Neustart der App hinaus beibehalten werden.
Treten Probleme auf? Sehen Sie sich den Abschnitt zur Problembehandlung an.
6. Navigieren zur App
Suchen Sie in der AZD-Ausgabe die URL für Ihre App, und navigieren Sie im Browser dorthin. Die URL sieht in der AZD-Ausgabe wie folgt aus:
Deploying services (azd deploy) (✓) Done: Deploying service web - Endpoint: <URL>
Fügen Sie der Liste einige Aufgaben hinzu.
Glückwunsch! Sie führen eine Web-App in Azure App Service mit sicherer Konnektivität zu Azure Database for MySQL aus.
Treten Probleme auf? Sehen Sie sich den Abschnitt zur Problembehandlung an.
7. Übertragen von Diagnoseprotokollen
Azure App Service erfasst alle Nachrichten, die an der Konsole protokolliert werden, um Sie bei der Diagnose von Problemen mit Ihrer Anwendung zu unterstützen. Der Einfachheit halber sind für die AZD-Vorlage bereits die Protokollierung im lokalen Dateisystem sowie das Senden der Protokolle an einen Log Analytics-Arbeitsbereich aktiviert.
Die Beispiel-App gibt Konsolenprotokollmeldungen an jedem ihrer Endpunkte aus, um diese Funktion zu veranschaulichen. Standardmäßig wird die Protokollierungsfunktion von Laravel (z. B. Log::info()
) in eine lokale Datei ausgegeben. Ihre frühere LOG_CHANNEL
App-Einstellung ermöglicht den Zugriff auf Protokolleinträge aus dem App Service-Protokolldatenstrom.
Route::get('/', function () {
Log::info("Get /");
$startTime = microtime(true);
// Simple cache-aside logic
if (Cache::has('tasks')) {
$data = Cache::get('tasks');
} else {
$data = Task::orderBy('created_at', 'asc')->get();
Cache::add('tasks', $data);
}
return view('tasks', ['tasks' => $data, 'elapsed' => microtime(true) - $startTime]);
});
Suchen Sie in der AZD-Ausgabe den Link zum Streamen von App Service-Protokollen, und navigieren Sie im Browser dorthin. Der Link sieht in der AZD-Ausgabe wie folgt aus:
Stream App Service logs at: <URL>
Treten Probleme auf? Sehen Sie sich den Abschnitt zur Problembehandlung an.
8. Bereinigen von Ressourcen
Führen Sie azd down
aus, und folgen Sie den Eingabeaufforderungen, um alle Azure-Ressourcen in der aktuellen Bereitstellungsumgebung zu löschen.
azd down
Problembehandlung
Ich erhalte einen Fehler während Datenbankmigrationen. php_network_getaddresses: getaddrinfo for mysqldb failed: No address associated with hostname...
Es weist darauf hin, dass MySQL-Verbindungsvariablen nicht ordnungsgemäß konfiguriert sind. Stellen Sie sicher, dass die AZURE_MYSQL_
App-Einstellungen in 3 ordnungsgemäß konfiguriert sind . Verwenden Sie Azure-Verbindungszeichenfolgen im Anwendungscode.
Ich erhalte eine leere Seite im Browser.
Es weist darauf hin, dass der App-Dienst die PHP-Startdateien in /public nicht finden kann. Führen Sie die Schritte in 4 aus. Konfigurieren Sie die Laravel-Einstellungen in der Web-App.
Ich erhalte eine Debugseite im Browser, die sagt Unsupported cipher or incorrect key length.
Sie gibt an, dass die APP_KEY
Einstellung auf einen ungültigen Schlüssel festgelegt ist. Stellen Sie beim Ausführen von azd up
sicher, dass Sie appKey
für die Ausgabe von php artisan key:generate --show
festlegen.
Ich erhalte eine Debugseite im Browser, die sagt Uncaught Error: Class "Illuminate\..." not found.
Dieser Fehler und ähnliche Fehler deuten darauf hin, dass Sie composer install
nicht vor azd up
ausgeführt haben oder dass die Pakete im Verzeichnis /vendor veraltet sind. Führen Sie composer install
und azd deploy
erneut aus.
Ich erhalte eine Debugseite im Browser, die sagt php_network_getaddresses: getaddrinfo for redishost failed: Name or service not known.
Es weist darauf hin, dass Redis-Verbindungsvariablen nicht ordnungsgemäß konfiguriert sind. Stellen Sie sicher, dass die AZURE_REDIS_
App-Einstellungen in 3 ordnungsgemäß konfiguriert sind . Verwenden Sie Azure-Verbindungszeichenfolgen im Anwendungscode.
Ich erhalte eine Debugseite im Browser, die sagt SQLSTATE[42S02]: Base table or view not found: 1146 Table 'XXXX-XXXXXXXXX-mysql-database.tasks' doesn't exist
Dies bedeutet, dass Sie keine Datenbankmigrationen ausgeführt haben oder Datenbankmigrationen nicht erfolgreich waren. Führen Sie die Schritte unter 5 aus. Datenbankschema generieren.
Häufig gestellte Fragen
- Wie viel kostet diese Einrichtung?
- Wie kann ich eine Verbindung mit der MySQL-Datenbank herstellen, die hinter dem virtuellen Netzwerk mit anderen Tools gesichert ist?
- Wie ändere ich die APP_KEY-App-Einstellung in einen Key Vault-Verweis?
- Wie funktioniert die lokale App-Entwicklung mit GitHub Actions?
- Warum ist die GitHub Actions-Bereitstellung so langsam?
- Ich habe keine Berechtigungen zum Erstellen einer benutzerseitig zugewiesenen Identität.
- Was kann ich mit GitHub Copilot in meinem Codespace machen?
- Wie viel kostet diese Einrichtung?
- Wie kann ich eine Verbindung mit der MySQL-Datenbank herstellen, die hinter dem virtuellen Netzwerk mit anderen Tools gesichert ist?
- Wie funktioniert die lokale App-Entwicklung mit GitHub Actions?
- Warum ist die GitHub Actions-Bereitstellung so langsam?
- Ich habe keine Berechtigungen zum Erstellen einer benutzerseitig zugewiesenen Identität.
- Was kann ich mit GitHub Copilot in meinem Codespace machen?
Wie viel kostet diese Einrichtung?
Die Preise für die erstellte Ressourcen sind wie folgt:
- Der App Service-Plan wird im Tarif Basic erstellt und kann hoch- oder herunterskaliert werden. Informationen dazu finden Sie unter App Service – Preise.
- Der flexible MySQL-Server wird auf 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. Azure Database for MySQL: Preise
- Die Azure Cache for Redis wird in der Ebene Basic mit der minimalen Cachegröße erstellt. Diese Ebene ist mit geringen Kosten verbunden. Sie können sie auf leistungsstärkere Ebenen für eine höhere Verfügbarkeit, für Clustering und andere Features hochskalieren. Siehe Azure Cache for Redis: Preise.
- 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 der MySQL-Datenbank herstellen, die hinter dem virtuellen Netzwerk mit anderen Tools gesichert ist?
- Für den einfachen Zugriff aus einem Befehlszeilentool können Sie
mysql
über das SSH-Terminal der App ausführen. - Um eine Verbindung mit einem Desktoptool wie MySQL Workbench herzustellen, muss sich Ihr Computer innerhalb des virtuellen Netzwerks befinden. Es könnte beispielsweise eine Azure-VM sein, die mit einem der Subnetze verbunden ist, oder ein Computer in einem lokalen Netzwerk, das über eine Standort-zu-Standort-VPN-Verbindung mit dem virtuellen Azure-Netzwerk verfügt.
- Sie können Azure Cloud Shell auch in das virtuelle Netzwerk integrieren.
Wie ändere ich die APP_KEY-App-Einstellung in einen Key Vault-Verweis?
In den Portalschritten in 4 – Laravel-Variablen konfigurieren, können Sie zu einem Key Vault-Verweis wechseln APP_KEY
, indem Sie die folgenden Azure CLI-Befehle im GitHub-Codespace ausführen:
# Change the following variables to match your environment
SUBSCRIPTION_ID=<subscription-id>
RESOURCE_GROUP=<resource-group-name>
KEY_VAULT_NAME=<key-vault-name>
APP_SERVICE_NAME=<app-name>
SECRET_NAME=laravelAppKey
# Set the subscription ID
az account set --subscription $SUBSCRIPTION_ID
# Assign 'Key Vault Secrets Officer' role to your user at the scope of the key vault
az role assignment create \
--assignee $(az ad signed-in-user show --query id -o tsv) \
--role $(az role definition list --name "Key Vault Secrets Officer" --query "[].id" -o tsv) \
--scope $(az keyvault show --name $KEY_VAULT_NAME --resource-group $RESOURCE_GROUP --query id --output tsv)
# Add the secret to the key vault
az keyvault secret set \
--vault-name $KEY_VAULT_NAME \
--name $SECRET_NAME \
--value $(php artisan key:generate --show)
# Add Key Vault reference to the App Service configuration
az webapp config appsettings set \
--resource-group $RESOURCE_GROUP \
--name $APP_SERVICE_NAME \
--settings "APP_KEY=@Microsoft.KeyVault(SecretUri=https://$KEY_VAULT_NAME.vault.azure.net/secrets/$SECRET_NAME)"
Sie können dies auch im Portal ausführen. Weitere Informationen finden Sie unter:
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 Workflow-Datei von App Service definiert die Ausführung mit zwei Aufgaben: Zuerst 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.
Ich habe keine Berechtigungen zum Erstellen einer benutzerseitig zugewiesenen Identität.
Siehe Einrichten der Bereitstellung von GitHub Actions über das Bereitstellungscenter.
Was kann ich mit GitHub Copilot in meinem Codespace machen?
Möglicherweise haben Sie bemerkt, dass die GitHub Copilot-Chatansicht bereits verfügbar war, als Sie den Codespace erstellt haben. Zur Vereinfachung können Sie die GitHub Copilot-Chaterweiterung in die Containerdefinition einfügen (siehe .devcontainer/devcontainer.json). Sie benötigen jedoch ein GitHub Copilot-Konto (kostenlose 30-Tage-Testversion verfügbar).
Einige Tipps für die Unterhaltung mit GitHub Copilot:
- In einer einzelnen Chatsitzung bauen die Fragen und Antworten aufeinander auf, und Sie können Ihre Fragen anpassen, um die Antworten zu optimieren.
- Standardmäßig hat GitHub Copilot keinen Zugriff auf Dateien in Ihrem Repository. Um Fragen zu einer Datei zu stellen, öffnen Sie die Datei zuerst im Editor.
- Damit GitHub Copilot beim Vorbereiten der Antworten Zugriff auf alle Dateien im Repository hat, beginnen Sie Ihre Frage mit
@workspace
. Weitere Informationen finden Sie unter Use the @workspace agent. - Innerhalb der Chatsitzung kann GitHub Copilot Änderungen vorschlagen und (mit
@workspace
) auch angeben, wo die Änderungen vorgenommen werden sollen. Copilot darf jedoch die Änderungen nicht für Sie vornehmen. Sie müssen entscheiden, ob Sie die vorgeschlagenen Änderungen hinzufügen und testen.
Nächste Schritte
Fahren Sie mit dem nächsten Tutorial fort, um zu erfahren, wie Sie Ihre App mit einer benutzerdefinierten Domäne und einem Zertifikat schützen.
Oder sehen Sie sich weitere Ressourcen an: