Verwenden von CI/CD zum Bereitstellen einer Python-Web-App für Azure App Service unter Linux
Azure DevOps Services
Verwenden Sie Azure Pipelines Continuous Integration and Continuous Delivery (CI/CD), um eine Python-Web-App für Azure App Service unter Linux bereitzustellen. Ihre Pipeline erstellt den Code automatisch und stellt ihn auf dem App Service bereit, wenn ein Commit für das Repository vorhanden ist. Sie können ihrer Pipeline weitere Funktionen hinzufügen, z. B. Testskripts, Sicherheitsüberprüfungen, Bereitstellung mehrererStages usw.
Erstellen eines Repositorys für Ihren App-Code
Wenn Sie bereits über eine Python-Web-App verfügen, stellen Sie sicher, dass sie einem GitHub-Repository zugeordnet ist.
Hinweis
Wenn Ihre App Django und eine SQLite-Datenbank verwendet, funktioniert dies in diesem Tutorial nicht. Weitere Informationen finden Sie weiter unten in diesem Artikel unter Überlegungen zu Django . Wenn Ihre Django-App eine separate Datenbank verwendet, können Sie sie in diesem Tutorial verwenden.
Wenn Sie eine App zum Arbeiten benötigen, können Sie das Repository unter forkieren und klonen https://github.com/Microsoft/python-sample-vscode-flask-tutorial. Der Code stammt aus dem Tutorial Flask in Visual Studio Code.
Um die Beispiel-App lokal zu testen, führen Sie im Ordner mit dem Code die folgenden entsprechenden Befehle für Ihr Betriebssystem aus:
# Linux
sudo apt-get install python3-venv # If needed
python3 -m venv .env
source .env/bin/activate
python3 -m pip install --upgrade pip
python3 -m pip install -r ./requirements.txt
export set FLASK_APP=hello_app.webapp
python3 -m flask run
# Windows
py -3 -m venv .env
.env\scripts\activate
pip install --target="./.python_packages/lib/site-packages" -r ./requirements.txt
$env:FLASK_APP = "hello_app.webapp"
python -m flask run
Öffnen Sie einen Browser, und wechseln Sie zu http://localhost:5000 , um die App anzuzeigen. Vergewissern Sie sich, dass der Titel Visual Studio Flask Tutorial
angezeigt wird.
Wenn Sie fertig sind, schließen Sie den Browser, und beenden Sie den Flask-Server mit STRG+C.
Bereitstellen der Ziel-Azure App Service
Die schnellste Möglichkeit zum Erstellen einer App Service-Instanz besteht darin, die Azure-Befehlszeilenschnittstelle (CLI) über die interaktive Azure-Cloud Shell zu verwenden. In den folgenden Schritten verwenden Sie az webapp up, um die App Service bereitzustellen und die erste Bereitstellung Ihrer App durchzuführen.
Melden Sie sich unter https://portal.azure.com beim Azure-Portal an.
Öffnen Sie die Azure CLI, indem Sie auf der Symbolleiste des Portals die Schaltfläche Cloud Shell auswählen:
Die Cloud Shell wird unten im Browser angezeigt. Wählen Sie bash aus der Dropdownliste aus:
Klonen Sie im Cloud Shell Ihr Repository mithilfe von
git clone
. Verwenden Sie für die Beispiel-App Folgendes:git clone https://github.com/<your-alias>/python-sample-vscode-flask-tutorial
Hinweis
Die Cloud Shell wird durch ein Azure Storage-Konto in einer Ressourcengruppe namens cloud-shell-storage-your-region<> unterstützt. Dieses Speicherkonto enthält ein Image des Dateisystems der Cloud Shell, in dem das geklonte Repository gespeichert wird. Für diesen Speicher fallen geringe Kosten an. Sie können das Speicherkonto am Ende dieses Artikels zusammen mit anderen von Ihnen erstellten Ressourcen löschen.
Ersetzen Sie
<your-alias>
durch den Namen des GitHub-Kontos, das Sie zum Forken des Repositorys verwendet haben.Tipp
Um in die Cloud Shell einzufügen, verwenden Sie STRG+UMSCHALT+V, oder klicken Sie mit der rechten Maustaste, und wählen Sie im Kontextmenü Einfügen aus.
Ändern Sie im Cloud Shell verzeichnisse in den Repositoryordner mit Ihrer Python-App, damit der
az webapp up
Befehl die App als Python erkennt.cd python-sample-vscode-flask-tutorial
Verwenden Sie
az webapp up
im Cloud Shell, um eine App Service zu erstellen und ihre App zunächst bereitzustellen.az webapp up -n <your-appservice>
Ändern Sie
<your-appservice>
einen Namen für Ihren App-Dienst, der in Azure eindeutig ist. In der Regel verwenden Sie einen persönlichen Namen oder einen Firmennamen zusammen mit einem App-Bezeichner, z. B<your-name>-flaskpipelines
. . Die App-URL wird zu< Your-appservice.azurewebsites.net>.Nach Abschluss des Befehls wird die JSON-Ausgabe im Cloud Shell angezeigt.
Tipp
Wenn bei einer .zip-Datei der Fehler "Berechtigung verweigert" auftritt, haben Sie möglicherweise versucht, den Befehl aus einem Ordner auszuführen, der keine Python-App enthält. Der
az webapp up
Befehl versucht dann, einen Windows App Service-Plan zu erstellen, und schlägt fehl.Wenn Ihre App einen benutzerdefinierten Startbefehl verwendet, legen Sie die Eigenschaft az webapp config fest. Beispielsweise enthält die python-sample-vscode-flask-tutorial-App eine Datei namens startup.txt , die den spezifischen Startbefehl enthält. Daher legen Sie die
az webapp config
-Eigenschaft auf feststartup.txt
.Kopieren Sie aus der ersten Zeile der Ausgabe des vorherigen
az webapp up
Befehls den Namen Ihrer Ressourcengruppe, der ihrem Namen> ähnelt<_rg_Linux_<your-region>.Geben Sie den folgenden Befehl ein, indem Sie den Namen Ihrer Ressourcengruppe, Ihren App-Dienstnamen (
<your-appservice>
) und Ihre Startdatei oder den Startbefehl (startup.txt
) verwenden.az webapp config set -g <your-resource-group> -n <your-appservice> --startup-file <your-startup-file-or-command>
Nach Abschluss des Befehls wird die JSON-Ausgabe im Cloud Shell angezeigt.
Um die ausgeführte App anzuzeigen, öffnen Sie einen Browser, und wechseln Sie zu http://< your-appservice.azurewebsites.net>. Wenn eine generische Seite angezeigt wird, warten Sie einige Sekunden, bis die App Service gestartet wird, und aktualisieren Sie die Seite. Vergewissern Sie sich, dass der Titel
Visual Studio Flask Tutorial
angezeigt wird.Hinweis
Eine ausführliche Beschreibung der spezifischen Aufgaben, die
az webapp up
vom Befehl ausgeführt werden, finden Sie am Ende dieses Artikels unter Bereitstellen einer App Service mit einzelnen Befehlen.
Erstellen eines Azure DevOps-Projekts und Herstellen einer Verbindung mit Azure
Für die Bereitstellung in Azure App Service aus Azure Pipelines müssen Sie eine Dienstverbindung zwischen den beiden Diensten herstellen.
Navigieren Sie in einem Browser zu dev.azure.com. Wenn Sie noch kein Konto für Azure DevOps haben, wählen Sie Kostenlos starten aus, und erhalten Sie ein kostenloses Konto. Wenn Sie bereits über ein Konto verfügen, wählen Sie Bei Azure DevOps anmelden aus.
Wichtig
Um die Dienstverbindung zu vereinfachen, verwenden Sie dieselbe E-Mail-Adresse für Azure DevOps wie für Azure.
Nachdem Sie sich angemeldet haben, zeigt der Browser Ihr Azure DevOps-Dashboard unter der URL https://dev.azure.com/<Your-Organization-name> an. Wenn mehrere Organisationen aufgeführt sind, wählen Sie die Organisation aus, die Sie für dieses Tutorial verwenden möchten. Standardmäßig erstellt Azure DevOps eine neue Organisation mit dem E-Mail-Alias, den Sie für die Anmeldung verwendet haben.
Ein Projekt ist eine Gruppierung für Boards, Repositorys, Pipelines und andere Aspekte von Azure DevOps. Wenn Ihre Organisation über keine Projekte verfügt, geben Sie unter Erstellen eines Projekts für die ersten Schritte den Projektnamen Flask Pipelines ein, und wählen Sie dann Projekt erstellen aus.
Wenn Ihre Organisation bereits über Projekte verfügt, wählen Sie auf der Seite Organisation die Option Neues Projekt aus. Geben Sie im Dialogfeld Neues Projekt erstellen den Projektnamen Flask Pipelines ein, und wählen Sie Erstellen aus.
Wählen Sie auf der neuen Projektseite im linken Navigationsbereich Projekteinstellungen aus.
Wählen Sie auf der Seite Projekteinstellungendie Option Pipelines>Service-Verbindungen, dann Neue Dienstverbindung und dann Azure Resource Manager aus der Dropdownliste aus.
Im Dialogfeld Azure Resource Manager-Dienstverbindung hinzufügen:
- Geben Sie der Verbindung einen Namen. Notieren Sie sich den Namen, der später in der Pipeline verwendet werden soll.
- Wählen Sie unter Bereichsebenedie Option Abonnement aus.
- Wählen Sie in der Dropdownliste Abonnement das Abonnement für Ihre App Service aus.
- Wählen Sie unter Ressourcengruppe Ihre Ressourcengruppe aus der Dropdownliste aus.
- Stellen Sie sicher, dass die Option Alle Pipelines diese Verbindung verwenden lassen ausgewählt ist, und wählen Sie dann OK aus.
Die neue Verbindung wird in der Liste Dienstverbindungen angezeigt und kann von Azure Pipelines aus dem Projekt verwendet werden.
Hinweis
Wenn Sie ein Azure-Abonnement aus einem anderen E-Mail-Konto verwenden möchten, befolgen Sie die Anweisungen unter Erstellen einer Azure Resource Manager-Dienstverbindung mit einem vorhandenen Dienstprinzipal.
Erstellen einer Python-spezifischen Pipeline für die Bereitstellung in App Service
Wählen Sie im linken Navigationsbereich der Projektseite Pipelines aus.
Wählen Sie Pipeline erstellen aus:
Wählen Sie auf dem Bildschirm Wo ist Ihr Code die Option GitHub aus. Möglicherweise werden Sie aufgefordert, sich bei GitHub anzumelden.
Wählen Sie auf dem Bildschirm Repository auswählen das Repository aus, das Ihre App enthält, z. B. Ihren Fork der Beispiel-App.
Möglicherweise werden Sie zur Bestätigung aufgefordert, Ihr GitHub-Kennwort erneut einzugeben, und GitHub fordert Sie dann auf, die Azure Pipelines-Erweiterung zu installieren:
Scrollen Sie auf diesem Bildschirm nach unten zum Abschnitt Repositoryzugriff , wählen Sie aus, ob die Erweiterung für alle Repositorys oder nur für ausgewählte Repositorys installiert werden soll, und wählen Sie dann Genehmigen und Installieren aus:
Wählen Sie auf dem Bildschirm Pipeline konfigurieren die Option Python to Linux Web App on Azure aus.
Ihre neue Pipeline wird angezeigt. Wenn Sie dazu aufgefordert werden, wählen Sie das Azure-Abonnement aus, in dem Sie Ihre Web-App erstellt haben.
- Auswählen der Web-App
- Wählen Sie Überprüfen und Konfigurieren aus.
Azure Pipelines erstellt eine Datei azure-pipelines.yml , die Ihre CI/CD-Pipeline als eine Reihe von Phasen, Aufträgen und Schritten definiert, wobei jeder Schritt die Details für verschiedene Aufgaben und Skripts enthält. Sehen Sie sich die Pipeline an, um herauszufinden, welche Vorgänge sie ausführt. Stellen Sie sicher, dass alle Standardeingaben für Ihren Code geeignet sind.
YaML-Pipeline erläutert
Die YAML-Datei enthält die folgenden Schlüsselelemente:
Der
trigger
oben zeigt die Commits an, die die Pipeline auslösen, z. B. Commits in denmain
Branch.Die
variables
, die die YAML-Vorlage parametrisiertTipp
Um eine feste Codierung bestimmter Variablenwerte in Ihrer YAML-Datei zu vermeiden, können Sie stattdessen Variablen in der Weboberfläche der Pipeline definieren. Weitere Informationen finden Sie unter Variablen – Geheimnisse.
Der
stages
- Erstellen Sie
stage
, die Ihr Projekt erstellt, und eine Bereitstellungsphase, die es als Linux-Web-App in Azure bereitstellt. - Stellen Sie bereit
stage
, damit auch eine Umgebung mit dem Standardnamen erstellt wird, der mit der Web-App identisch ist. Sie können den Umgebungsnamen ändern.
- Erstellen Sie
Jede Phase verfügt über ein
pool
-Element, das einen oder mehrere virtuelle Computer (VMs) angibt, auf denen die Pipeline ausgeführt wirdsteps
. Standardmäßig enthält daspool
Element nur einen einzelnen Eintrag für eine Ubuntu-VM. Sie können einen Pool verwenden, um Tests in mehreren Umgebungen als Teil des Builds auszuführen, z. B. die Verwendung verschiedener Python-Versionen zum Erstellen eines Pakets.Das
steps
-Element kann untergeordnete Elemente wietask
enthalten, die eine bestimmte Aufgabe ausführen, wie in der Azure Pipelines-Aufgabenreferenz definiert, undscript
, die einen beliebigen Satz von Befehlen ausführt.Die erste Aufgabe in der Buildphase ist UsePythonVersion, die die Version von Python angibt, die im Build-Agent verwendet werden soll. Das
@<n>
Suffix gibt die Version der Aufgabe an. Gibt@0
die Vorschauversion an. Anschließend verfügen wir über eine skriptbasierte Aufgabe, die eine virtuelle Umgebung erstellt und Abhängigkeiten aus der Datei (requirements.txt) installiert.steps: - task: UsePythonVersion@0 inputs: versionSpec: '$(pythonVersion)' displayName: 'Use Python $(pythonVersion)' - script: | python -m venv antenv source antenv/bin/activate python -m pip install --upgrade pip pip install setup pip install --target="./.python_packages/lib/site-packages" -r ./requirements.txt workingDirectory: $(projectRoot) displayName: "Install requirements"
Im nächsten Schritt wird die .zip Datei erstellt, die von den Schritten in der Bereitstellungsphase der Pipeline bereitgestellt wird. Um die .zip-Datei zu erstellen, fügen Sie am Ende der YAML-Datei einen ArchiveFiles-Task hinzu:
- task: ArchiveFiles@2 inputs: rootFolderOrFile: '$(Build.SourcesDirectory)' includeRootFolder: false archiveType: 'zip' archiveFile: '$(Build.ArtifactStagingDirectory)/Application$(Build.BuildId).zip' replaceExistingArchive: true verbose: # (no value); this input is optional - publish: $(Build.ArtifactStagingDirectory)/Application$(Build.BuildId).zip displayName: 'Upload package' artifact: drop
Verwenden
$()
Sie in einem Parameterwert, um auf Variablen zu verweisen. Die integrierte Variable enthält den Speicherort im Build-Agent, an dem die Pipeline den App-CodeBuild.SourcesDirectory
geklont hat. DerarchiveFile
Parameter gibt an, wo die .zip-Datei platziert werden soll. In diesem Fall verwendet derarchiveFile
Parameter die integrierte VariableBuild.ArtifactsStagingDirectory
.Wichtig
Achten Sie bei der Bereitstellung auf Azure App Service darauf, dass Sie verwenden
includeRootFolder: false
. Andernfalls wird der Inhalt der .zip-Datei in einem Ordner namens s für "sources" abgelegt, der auf der App Service repliziert wird. Der App Service für Linux Container kann dann den App-Code nicht finden.Dann haben wir die Aufgabe, die Artefakte hochzuladen.
In der Bereitstellungsphase verwenden wir das
deployment
Schlüsselwort, um einen Bereitstellungsauftrag für eine Umgebung zu definieren. Durch Die Verwendung der Vorlage wird automatisch eine Umgebung mit demselben Namen wie die Web-App erstellt, sofern sie noch nicht vorhanden ist. Stattdessen können Sie die Umgebung vorab erstellen und bereitstellenenvironmentName
.Innerhalb des Bereitstellungsauftrags ist die erste Aufgabe UsePythonVersion, die die Python-Version angibt, die auf dem Build-Agent verwendet werden soll.
Anschließend verwenden wir die AzureWebApp-Aufgabe, um die .zip-Datei in der App Service bereitzustellen, die Sie am Anfang der Pipelinedatei durch die
azureServiceConnectionId
Variablen undwebAppName
identifiziert haben. Fügen Sie den folgenden Code am Ende der Datei ein:jobs: - deployment: DeploymentJob pool: vmImage: $(vmImageName) environment: $(environmentName) strategy: runOnce: deploy: steps: - task: UsePythonVersion@0 inputs: versionSpec: '$(pythonVersion)' displayName: 'Use Python version' - task: AzureWebApp@1 displayName: 'Deploy Azure Web App : {{ webAppName }}' inputs: azureSubscription: $(azureServiceConnectionId) appName: $(webAppName) package: $(Pipeline.Workspace)/drop/$(Build.BuildId).zip deploymentMethod: zipDeploy # The following parameter is specific to the Flask example code. You may # or may not need a startup command for your app. startUpCommand: 'gunicorn --bind=0.0.0.0 --workers=4 startup:app'
Der
StartupCommand
angezeigte Parameter ist spezifisch für den Beispielcode python-vscode-flask-tutorial , der die App in der startup.py-Datei definiert. Standardmäßig sucht Azure App Service in einer Datei namens app.py oder application.py nach dem Flask-App-Objekt. Wenn Ihr Code nicht diesem Muster folgt, passen Sie den Startbefehl an. Django-Apps müssen möglicherweise gar nicht angepasst werden. Weitere Informationen finden Sie unter Konfigurieren von Python in Azure App Service : Anpassen des Startbefehls.Da das Repository python-vscode-flask-tutorial denselben Startbefehl in einer Datei mit dem Namen startup.txtenthält, können Sie diese Datei im
StartupCommand
Parameter anstelle des Befehls angeben, indem Sie verwendenStartupCommand: 'startup.txt'
.
Führen Sie die Pipeline aus.
Jetzt können Sie es ausprobieren!
Wählen Sie oben rechts im Editor Speichern aus, und fügen Sie im Popupfenster eine Commitnachricht hinzu, und wählen Sie Speichern aus.
Klicken Sie im Pipeline-Editor auf Ausführen, und wählen Sie im Dialogfeld Pipeline ausführen erneut ausführen aus. Azure Pipelines stellt eine weitere Pipelineausführung in die Warteschlange, ruft einen verfügbaren Build-Agent ab und führt diesen Build-Agent aus.
Die Ausführung der Pipeline dauert einige Minuten, insbesondere die Bereitstellungsschritte. Neben den einzelnen Schritten sollten grüne Häkchen angezeigt werden.
Wenn ein Fehler auftritt, können Sie schnell zum YAML-Editor zurückkehren, indem Sie oben rechts die vertikalen Punkte auswählen und Pipeline bearbeiten auswählen:
Wählen Sie auf der Buildseite die Azure-Web-App-Aufgabe aus, um die zugehörige Ausgabe anzuzeigen. Um die bereitgestellte Website zu besuchen, halten Sie die STRG-TASTE gedrückt, und wählen Sie die URL nach App Service Anwendungs-URL aus.
Wenn Sie das Flask-Beispiel verwenden, sollte die App wie folgt angezeigt werden:
Wichtig
Wenn Ihre App aufgrund einer fehlenden Abhängigkeit fehlschlägt, wurde Ihre requirements.txt-Datei während der Bereitstellung nicht verarbeitet. Dieses Verhalten tritt auf, wenn Sie die Web-App direkt im Portal erstellt haben, anstatt den az webapp up
Befehl wie in diesem Artikel gezeigt zu verwenden.
Der az webapp up
Befehl legt die Buildaktion SCM_DO_BUILD_DURING_DEPLOYMENT
speziell auf fest true
. Wenn Sie den App-Dienst jedoch über das Portal bereitgestellt haben, wird diese Aktion nicht automatisch festgelegt.
Die folgenden Schritte legen die Aktion fest:
- Öffnen Sie die Azure-Portal, wählen Sie Ihre App Service und dann Konfiguration aus.
- Wählen Sie auf der Registerkarte Anwendungseinstellungen die Option Neue Anwendungseinstellung aus.
- Legen Sie im angezeigten Popup name auf
SCM_DO_BUILD_DURING_DEPLOYMENT
fest, legen Sie Wert auftrue
fest, und wählen Sie OK aus. - Klicken Sie oben auf der Seite Konfiguration auf Speichern.
- Erneutes Ausführen der Pipeline Ihre Abhängigkeiten sollten während der Bereitstellung installiert werden.
Ausführen eines Skripts nach der Bereitstellung
Ein Skript nach der Bereitstellung kann beispielsweise Umgebungsvariablen definieren, die vom App-Code erwartet werden. Fügen Sie das Skript als Teil des App-Codes hinzu, und führen Sie es mithilfe des Startbefehls aus.
Um eine feste Codierung bestimmter Variablenwerte in Ihrer YAML-Datei zu vermeiden, können Sie stattdessen Variablen in der Weboberfläche der Pipeline definieren und dann auf den Variablennamen im Skript verweisen. Weitere Informationen finden Sie unter Variablen – Geheimnisse.
Überlegungen zu Django
Wie weiter oben in diesem Artikel erwähnt, können Sie Mithilfe von Azure Pipelines Django-Apps für Azure App Service unter Linux bereitstellen, wenn Sie eine separate Datenbank verwenden. Sie können keine SQLite-Datenbank verwenden, da App Service die Datei db.sqlite3 sperrt und lese- und schreibvorgänge verhindert. Dieses Verhalten wirkt sich nicht auf eine externe Datenbank aus.
Wie unter Konfigurieren der Python-App in App Service – Containerstartprozess beschrieben, sucht App Service automatisch nach einer wsgi.py-Datei im App-Code, die in der Regel das App-Objekt enthält. Wenn Sie den Startbefehl in irgendeiner Weise anpassen möchten, verwenden Sie den StartupCommand
Parameter im AzureWebApp@1
Schritt Ihrer YAML-Pipelinedatei, wie im vorherigen Abschnitt beschrieben.
Bei Verwendung von Django möchten Sie die Datenmodelle in der Regel mit manage.py migrate
migrieren, nachdem Sie den App-Code bereitgestellt haben. Sie können das Skript nach der Bereitstellung zu diesem Zweck hinzufügen startUpCommand
:
startUpCommand: python3.7 manage.py migrate
Ausführen von Tests auf dem Build-Agent
Im Rahmen des Buildprozesses können Sie Tests für Ihren App-Code ausführen. Tests werden auf dem Build-Agent ausgeführt, sodass Sie ihre Abhängigkeiten wahrscheinlich zuerst in einer virtuellen Umgebung auf dem Build-Agent-Computer installieren müssen. Nachdem die Tests ausgeführt wurden, löschen Sie die virtuelle Umgebung, bevor Sie die .zip-Datei für die Bereitstellung erstellen. Die folgenden Skriptelemente veranschaulichen diesen Vorgang. Platzieren Sie sie vor der ArchiveFiles@2
Aufgabe in der Datei azure-pipelines.yml . Weitere Informationen finden Sie unter Ausführen plattformübergreifender Skripts.
# The | symbol is a continuation character, indicating a multi-line script.
# A single-line script can immediately follow "- script:".
- script: |
python3.7 -m venv .env
source .env/bin/activate
pip3.7 install setuptools
pip3.7 install -r requirements.txt
# The displayName shows in the pipeline UI when a build runs
displayName: 'Install dependencies on build agent'
- script: |
# Put commands to run tests here
displayName: 'Run tests'
- script: |
echo Deleting .env
deactivate
rm -rf .env
displayName: 'Remove .env before zip'
Sie können auch eine Aufgabe wie PublishTestResults@2 verwenden, damit Testergebnisse auf dem Bildschirm mit den Pipelineergebnissen angezeigt werden. Weitere Informationen finden Sie unter Erstellen von Python-Apps – Ausführen von Tests.
Bereitstellen einer App Service mit einzelnen Befehlen
Der Befehl az webapp up ist eine praktische Methode, um die App Service bereitzustellen und Ihre App zunächst in einem einzigen Schritt bereitzustellen. Wenn Sie mehr Kontrolle über den Bereitstellungsprozess wünschen, können Sie einzelne Befehle verwenden, um dieselben Aufgaben auszuführen. Beispielsweise können Sie einen bestimmten Namen für die Ressourcengruppe verwenden oder eine App Service innerhalb eines vorhandenen App Service Plans erstellen.
Die folgenden Schritte führen die Entsprechung des az webapp up
Befehls aus:
Erstellen Sie eine Ressourcengruppe.
Eine Ressourcengruppe ist eine Sammlung verwandter Azure-Ressourcen. Wenn Sie eine Ressourcengruppe erstellen, können Sie alle diese Ressourcen auf einmal löschen, wenn Sie sie nicht mehr benötigen. Führen Sie im Cloud Shell den folgenden Befehl aus, um eine Ressourcengruppe in Ihrem Azure-Abonnement zu erstellen. Legen Sie einen Speicherort für die Ressourcengruppe fest, indem Sie den Wert von
<your-region>
angeben. Die JSON-Ausgabe wird im Cloud Shell angezeigt, wenn der Befehl erfolgreich abgeschlossen wird.az group create -l <your-region> -n <your-resource-group>
Erstellen eines App Service-Plans.
Ein App Service in einem virtuellen Computer ausgeführt, der durch einen App Service Plan definiert wird. Führen Sie den folgenden Befehl aus, um einen App Service Plan zu erstellen, wobei Sie Ihre eigenen Werte durch
<your-resource-group>
und<your-appservice-plan>
ersetzen. Ist--is-linux
für Python-Bereitstellungen erforderlich. Wenn Sie einen anderen Tarif als den Standardtarif F1 Free wünschen, verwenden Sie dassku
Argument. Gibt--sku B1
den niedrigeren Computetarif für die VM an. Sie können den Plan später einfach löschen, indem Sie die Ressourcengruppe löschen.az appservice plan create -g <your-resource-group> -n <your-appservice-plan> --is-linux --sku B1
Auch hier wird die JSON-Ausgabe im Cloud Shell angezeigt, wenn der Befehl erfolgreich abgeschlossen wurde.
Erstellen Sie eine App Service-Instanz im Plan.
Führen Sie den folgenden Befehl aus, um die App Service-Instanz im Plan zu erstellen. Ersetzen Sie
<your-appservice>
dabei durch einen Namen, der in Azure eindeutig ist. In der Regel verwenden Sie einen persönlichen Oder Firmennamen zusammen mit einem App-Bezeichner, z<your-name>-flaskpipelines
. B. . Der Befehl schlägt fehl, wenn der Name bereits verwendet wird. Wenn Sie die App Service derselben Ressourcengruppe wie der Plan zuweisen, ist es einfach, alle Ressourcen gleichzeitig zu bereinigen.Hinweis
Wenn Sie Ihren Code gleichzeitig bereitstellen möchten, können Sie die Argumente und
--deployment-source-branch
mit demaz webapp create
Befehl verwenden--deployment-source-url
. Weitere Informationen finden Sie unter az webapp create.az webapp create -g <your-resource-group> -p <your-appservice-plan> -n <your-appservice> --runtime "Python|3.7"
Tipp
Wenn die Fehlermeldung "Der Plan (Name) ist nicht vorhanden" angezeigt wird und Sie sicher sind, dass der Planname korrekt ist, überprüfen Sie, ob die mit dem
-g
Argument angegebene Ressourcengruppe ebenfalls korrekt ist und der von Ihnen identifizierte Plan Teil dieser Ressourcengruppe ist. Wenn Sie den Namen der Ressourcengruppe falsch geschrieben haben, findet der Befehl den Plan in dieser nicht vorhandenen Ressourcengruppe nicht und gibt diesen speziellen Fehler an.Wenn Ihre App einen benutzerdefinierten Startbefehl erfordert, verwenden Sie den
az webapp config set
Befehl, wie weiter oben unter Bereitstellen des Ziels Azure App Service beschrieben. Führen Sie beispielsweise Folgendes aus, um die App Service mit Ihrer Ressourcengruppe, Dem App-Namen und dem Startbefehl anzupassen:az webapp config set -g <your-resource-group> -n <your-appservice> --startup-file <your-startup-command-or-file>
Die App Service an diesem Punkt enthält nur Standard-App-Code. Sie können jetzt Azure Pipelines verwenden, um Ihren spezifischen App-Code bereitzustellen.
Bereinigen von Ressourcen
Um Gebühren für die in diesem Tutorial erstellten Azure-Ressourcen zu vermeiden, löschen Sie die Ressourcengruppe, die den App Service und den App Service Plan enthält. Um die Ressourcengruppe aus dem Azure-Portal zu löschen, wählen Sie im linken Navigationsbereich Ressourcengruppen aus. Wählen Sie in der Ressourcengruppenliste die Option ... rechts neben der Ressourcengruppe aus, die Sie löschen möchten, und wählen Sie Ressourcengruppe löschen aus, und folgen Sie den Anweisungen.
Sie können auch az group delete im Cloud Shell verwenden, um Ressourcengruppen zu löschen.
Um das Speicherkonto zu löschen, das das Dateisystem für Cloud Shell verwaltet, was eine geringe monatliche Gebühr verursacht, löschen Sie die Ressourcengruppe, die mit cloud-shell-storage- beginnt.