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 und 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 dem App Service zur Verfügung, sobald ein Commit für das Repository erfolgt. Sie können Ihrer Pipeline weitere Funktionen hinzufügen, z. B. Testskripts, Sicherheitsüberprüfungen, Multistagebereitstellung usw.
Erstellen eines Repositorys für Ihren App-Code
Wenn Sie bereits über eine Python-Web-App verfügen, stellen Sie sicher, dass sie zu einem GitHub-Repository verpflichtet ist.
Hinweis
Wenn Ihre App Django und eine SQLite-Datenbank verwendet, funktioniert sie für dieses Tutorial nicht. Weitere Informationen finden Sie unter Überlegungen zu Django weiter unten in diesem Artikel. Wenn Ihre Django-App eine separate Datenbank verwendet, können Sie sie mit diesem Tutorial verwenden.
Wenn Sie eine App zum Arbeiten benötigen, können Sie das Repository unter https://github.com/Microsoft/python-sample-vscode-flask-tutorial forken und klonen. Der Code stammt aus dem Tutorial Flask in Visual Studio Code.
Um die Beispiel-App lokal zu testen, führen Sie in dem Ordner, der den Code enthält, die folgenden für Ihr Betriebssystem geeigneten Befehle 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. Stellen Sie sicher, dass der Titel Visual Studio Flask Tutorial
angezeigt wird.
Wenn Sie fertig sind, schließen Sie den Browser und beenden den Flask-Server mit STRG+C.
Bereitstellen der Azure App Service-Zielinstanz
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 sowohl den App Service bereitzustellen als auch die erste Bereitstellung Ihrer App vorzunehmen.
Melden Sie sich unter https://portal.azure.com beim Azure-Portal an.
Öffnen Sie die Azure CLI, indem Sie die Cloud Shell-Schaltfläche auf der Symbolleiste des Portals auswählen:
Die Cloud Shell wird am unteren Rand des Browsers angezeigt. Wählen Sie Bash aus der Dropdownliste aus:
Klonen Sie Ihr Repository in der Cloud Shell mithilfe von
git clone
. Verwenden Sie Folgendes für die Beispiel-App:git clone https://github.com/<your-alias>/python-sample-vscode-flask-tutorial
Hinweis
Die Cloud Shell wird von einem 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 ist. Für diese Speicherung 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
Wenn Sie in die Cloud Shell einfügen möchten, verwenden Sie STRG+UMSCHALT+V, oder klicken Sie mit der rechten Maustaste, und wählen Sie im Kontextmenü Einfügen aus.
Wechseln Sie in der Cloud Shell in das Verzeichnis des Repositorys, in dem sich Ihre Python-App befindet, sodass der Befehl
az webapp up
die App als Python erkennt.cd python-sample-vscode-flask-tutorial
Verwenden Sie
az webapp up
in der Cloud Shell, um einen App Service zu erstellen und Ihre App anfänglich bereitzustellen.az webapp up -n <your-appservice>
Ändern Sie
<your-appservice>
in einen Namen für Ihren App Service, der in Azure eindeutig ist. In der Regel verwenden Sie einen persönlichen Namen oder Firmennamen zusammen mit einer App-ID, z. B.<your-name>-flaskpipelines
. Die App-URL wird zu <your-appservice>.azurewebsites.net.Nach Abschluss des Befehls wird die JSON-Ausgabe in der Cloud Shell angezeigt.
Tipp
Wenn Sie bei einer ZIP-Datei die Fehlermeldung „Berechtigung verweigert“ erhalten, haben Sie möglicherweise versucht, den Befehl von einem Ordner aus auszuführen, der keine Python-App enthält. Der
az webapp up
-Befehl versucht dann, einen Dienstplan für eine Windows-App zu erstellen, was fehlschlägt.Wenn Ihre App einen benutzerdefinierten Startbefehl verwendet, legen Sie die Eigenschaft az webapp config fest. Beispielsweise enthält die App python-sample-vscode-flask-tutorial eine Datei namens startup.txt, die ihren spezifischen Startbefehl enthält, sodass Sie die Eigenschaft
az webapp config
aufstartup.txt
festlegen.Kopieren Sie aus der ersten Zeile der Ausgabe des vorherigen
az webapp up
-Befehls den Namen Ihrer Ressourcengruppe, der <your-name>_rg_Linux_<your-region> ähnelt.Geben Sie den folgenden Befehl ein, und verwenden Sie dabei den Namen Ihrer Ressourcengruppe, den Namen Ihres App-Diensts (
<your-appservice>
) und Ihre Startdatei oder Ihren Befehl (startup.txt
).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 in der 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 der App-Dienst gestartet wird, und aktualisieren Sie die Seite. Stellen Sie sicher, dass der Titel
Visual Studio Flask Tutorial
angezeigt wird.Hinweis
Eine detaillierte Beschreibung der spezifischen Aufgaben, die der Befehl
az webapp up
ausführt, finden Sie unter Bereitstellen einer App Service-Instanz mit einzelnen Befehlen am Ende dieses Artikels.
Erstellen eines Azure DevOps-Projekts und Herstellen einer Verbindung mit Azure
Um Azure App Service von Azure Pipelines aus bereitzustellen, müssen Sie eine Dienstverbindung zwischen den beiden Diensten einrichten.
Navigieren Sie in einem Browser zu dev.azure.com. Wenn Sie noch nicht über ein Azure DevOps-Konto verfügen, wählen Sie Kostenlos starten aus und erhalten 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.
Sobald Sie sich angemeldet haben, zeigt der Browser Ihr Azure DevOps-Dashboard unter der URL https://dev.azure.com/<your-organization-name> an. Wenn mehr als eine Organisation aufgeführt ist, 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 zum Anmelden 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 den Projektnamen Flask Pipelines unter Erstellen Sie als ersten Schritt ein Projekt ein, und wählen Sie dann Projekt erstellen aus.
Wenn Ihre Organisation bereits über Projekte verfügt, wählen Sie Neues Projekt auf der Organisationsseite 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 Projekteinstellungen im linken Navigationsbereich aus.
Wählen Sie auf der Seite Projekteinstellungen die Option Pipelines>Dienstverbindungen, dann die Option Neue Dienstverbindung und anschließend in der Dropdownliste die Option Azure Resource Manager aus.
Im Dialogfeld Azure Resource Manager-Dienstverbindung hinzufügen:
- Geben Sie der Verbindung einen Namen. Notieren Sie sich den Namen, um ihn später in der Pipeline zu verwenden.
- Wählen Sie für Bereichsebene die Option Abonnement aus.
- Wählen Sie das Abonnement für Ihren App Service aus der Dropdownliste Abonnement aus.
- Wählen Sie unter Ressourcengruppe Ihre Ressourcengruppe aus der Dropdownliste aus.
- Vergewissern Sie sich, dass die Option Nutzung dieser Verbindung für alle Pipelines erlauben aktiviert ist, und wählen Sie dann OK aus.
Die neue Verbindung wird in der Liste Dienstverbindungen angezeigt und ist bereit für die Verwendung von Azure Pipelines aus dem Projekt.
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 Ihrer Projektseite die Option Pipelines aus.
Wählen Sie Pipeline erstellen aus:
Wählen Sie auf dem Bildschirm Wo befindet sich Ihr Code? die Option GitHub aus. Sie werden möglicherweise aufgefordert, sich bei GitHub anzumelden.
Wählen Sie auf dem Bildschirm Repository auswählen das Repository aus, das Ihre App enthält, z. B. Ihre Kopie der Beispiel-App.
Möglicherweise werden Sie aufgefordert, Ihr GitHub-Kennwort zur Bestätigung erneut einzugeben, und dann fordert GitHub Sie auf, die Azure Pipelines-Erweiterung zu installieren:
Scrollen Sie auf diesem Bildschirm nach unten zum Abschnitt Repositoryzugriff, wählen Sie aus, ob die Erweiterung in allen oder nur ausgewählten Repositorys installiert werden soll, und wählen Sie dann Genehmigen und installieren aus:
Wählen Sie auf dem Bildschirm Pipeline konfigurieren die Option Python für Linux-Web-App in 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.
- Wählen Sie die Web-App aus.
- Wählen Sie „Überprüfen und konfigurieren“ aus.
Azure Pipelines erstellt eine azure-pipelines.yml-Datei, 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.
Erläuterung zur YAML-Pipeline
Die YAML-Datei enthält die folgenden Schlüsselelemente:
Der
trigger
oben zeigt die Commits an, die die Pipeline auslösen, z. B. die Commits für denmain
-Branch.Die
variables
, die die YAML-Vorlage parametrisieren.Tipp
Um hartcodierende spezifische Variablenwerte in Ihrer YAML-Datei zu vermeiden, können Sie stattdessen Variablen in der Webschnittstelle der Pipeline definieren. Weitere Informationen finden Sie unter Variablen – Geheimnisse.
Der
stages
stage
für den Build, in der Ihr Projekt erstellt wird, und eine Bereitstellungsphase, die es als Linux-Web-App in Azure bereitstellt.stage
für die Bereitstellung, die auch eine Umgebung mit dem gleichen Standardnamen wie die Web-App erstellt. Sie können den Umgebungsnamen ändern.
Jede Phase verfügt über ein
pool
-Element, das einen oder mehrere virtuelle Computer (VMs) angibt, auf denen die Pipeline diesteps
ausführt. 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 gemäß der Definition in der Azure Pipelines-Aufgabenreferenz undscript
ausführen, das einen beliebigen Satz von Befehlen ausführt.Die erste Aufgabe in der Buildphase ist UsePythonVersion, die die Version von Python angibt, die für den Build-Agent verwendet werden soll. Das Suffix
@<n>
gibt die Version der Aufgabe an. Die@0
gibt 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 die Schritte in der Bereitstellungsphase der Pipeline bereitstellt. Zum Erstellen der ZIP-Datei fügen Sie am Ende der YAML-Datei eine ArchiveFiles-Aufgabe 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
Sie verwenden
$()
in einem Parameterwert, um auf Variablen zu verweisen. Die integrierteBuild.SourcesDirectory
-Variable enthält den Speicherort auf dem Build-Agent, an dem die Pipeline den App-Code geklont hat. DerarchiveFile
-Parameter gibt an, wo die ZIP-Datei abgelegt werden soll. In diesem Fall verwendet derarchiveFile
-Parameter die integrierte VariableBuild.ArtifactsStagingDirectory
.Wichtig
Verwenden Sie bei der Bereitstellung für den Azure App Service unbedingt
includeRootFolder: false
. Andernfalls wird der Inhalt der ZIP-Datei in einen Ordner mit dem Namen s, für „Sources“ (Quellen), abgelegt, der auf der App Service-Instanz 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. Mithilfe 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 denenvironmentName
bereitstellen.Innerhalb des Bereitstellungsauftrags ist die erste Aufgabe UsePythonVersion, die die Version von Python angibt, die für den Build-Agent verwendet werden soll.
Anschließend verwenden wir die Aufgabe AzureWebApp, um die ZIP-Datei für die App Service-Instanz bereitzustellen, die Sie durch die Variablen
azureServiceConnectionId
undwebAppName
am Anfang der Pipelinedatei identifiziert haben. Wenn Sie eine andere Dienstverbindung verwenden müssen, wählen Sie Einstellungen für die AufgabeAzureWebApp@1
aus und aktualisieren den Azure-Abonnement-Wert. 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 angezeigte
StartupCommand
-Parameter ist spezifisch für den Beispielcode von python-vscode-flask-tutorial, der die App in der Datei startup.py definiert. Standardmäßig sucht Azure App Service nach dem Flask-App-Objekt in einer Datei namens app.py oder application.py. Wenn Ihr Code nicht diesem Muster folgt, passen Sie den Startbefehl an. Django-Apps müssen möglicherweise überhaupt 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 namens startup.txt enthält, können Sie mithilfe von
StartupCommand: 'startup.txt'
auch anstelle des Befehls diese Datei im ParameterStartupCommand
angeben.
Führen Sie die Pipeline aus.
Sie sind jetzt bereit, es auszuprobieren!
Wählen Sie Speichern oben rechts im Editor aus, und fügen Sie im Popupfenster eine Commitnachricht hinzu, und wählen Sie dann Speichern aus.
Wählen Sie Ausführen im Pipeline-Editor und dann erneut Ausführen im Dialogfeld Pipeline ausführen aus. Azure Pipelines stellt eine weitere Pipelineausführung in die Warteschlange, ruft einen verfügbaren Build-Agent ab und lässt diesen Build-Agent die Pipeline ausführen.
Die 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 die vertikalen Punkte oben rechts anklicken und Pipeline bearbeiten auswählen:
Wählen Sie auf der Buildseite die Azure Web App-Aufgabe aus, um die Ausgabe anzuzeigen. Um die bereitgestellte Website zu besuchen, halten Sie die STRG-TASTE gedrückt und wählen die URL nach URL der App Service-Anwendung aus.
Wenn Sie das Flask-Beispiel verwenden, sollte die App wie folgt aussehen:
Wichtig
Wenn Ihre App aufgrund einer fehlenden Abhängigkeit fehlerhaft ist, wurde Ihre requirements.txt-Datei bei der Bereitstellung nicht verarbeitet. Dieses Verhalten tritt auf, wenn Sie die Web-App direkt im Portal erstellt haben, anstatt den Befehl az webapp up
zu verwenden, wie in diesem Artikel beschrieben.
Der az webapp up
-Befehl legt die Buildaktion SCM_DO_BUILD_DURING_DEPLOYMENT
speziell auf true
fest. Wenn Sie den App Service jedoch über das Portal bereitgestellt haben, wird diese Aktion nicht automatisch festgelegt.
Mit den folgenden Schritten legen Sie die Aktion fest:
- Öffnen Sie das Azure-Portal, wählen Sie Ihren App Service und dann die Option Konfiguration aus.
- Wählen Sie unter der Registerkarte Anwendungseinstellungen die Option Neue Anwendungseinstellung aus.
- Legen Sie im daraufhin angezeigten Popup Name auf
SCM_DO_BUILD_DURING_DEPLOYMENT
fest, legen Sie Wert auftrue
fest, und wählen Sie dann 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 z. B. 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 hartcodierende spezifische Variablenwerte in Ihrer YAML-Datei zu vermeiden, können Sie stattdessen Variablen in der Webschnittstelle der Pipeline definieren und dann auf den Variablennamen im Skript verweisen. Weitere Informationen finden Sie unter Variablen – Geheimnisse.
Überlegungen für Django
Wie bereits in diesem Artikel erwähnt, können Sie Azure Pipelines verwenden, um Django-Apps in Azure App Service unter Linux bereitzustellen, wenn Sie eine separate Datenbank verwenden. Sie können keine SQLite-Datenbank verwenden, da App Service die Datei db.sqlite3 sperrt und damit sowohl Lese- als auch Schreibvorgänge verhindert. Dieses Verhalten wirkt sich nicht auf eine externe Datenbank aus.
Wie in Konfigurieren der Python-App in App Service – Containerstartprozess beschrieben, sucht die App Service-Instanz automatisch nach einer wsgi.py-Datei in Ihrem App-Code, die normalerweise das App-Objekt enthält. Wenn Sie den Startbefehl in irgendeiner Weise anpassen möchten, verwenden Sie den Parameter StartupCommand
im Schritt AzureWebApp@1
Ihrer YAML-Pipelinedatei, wie im vorherigen Abschnitt beschrieben.
Bei Verwendung von Django möchten Sie die Datenmodelle in der Regel mithilfe von manage.py migrate
nach der Bereitstellung des App-Codes migrieren. Zu diesem Zweck können Sie startUpCommand
mit einem Skript nach der Bereitstellung hinzufügen:
startUpCommand: python3.7 manage.py migrate
Ausführen von Tests für den Build-Agent
Im Rahmen Ihres Buildprozesses möchten Sie möglicherweise Tests für Ihren App-Code ausführen. Tests werden auf dem Build-Agent ausgeführt, daher müssen Sie ihre Abhängigkeiten wahrscheinlich zuerst in einer virtuellen Umgebung auf dem Build-Agent-Computer installieren. Löschen Sie nach Ausführung der Tests die virtuelle Umgebung, bevor Sie die ZIP-Datei für die Bereitstellung erstellen. Die folgenden Skriptelemente veranschaulichen diesen Prozess. Platzieren Sie sie vor der Aufgabe ArchiveFiles@2
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 die 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-Instanz mit einzelnen Befehlen
Der Befehl az webapp up ist eine bequeme Methode, um die App Service-Instanz bereitzustellen und Ihre App anfänglich in einem einzelnen Schritt bereitzustellen. Wenn Sie mehr Kontrolle über den Bereitstellungsprozess wünschen, können Sie einzelne Befehle verwenden, um dieselben Aufgaben auszuführen. Sie können z. B. einen bestimmten Namen für die Ressourcengruppe verwenden oder einen App Service innerhalb eines vorhandenen App Service-Plans erstellen.
Die folgenden Schritte entsprechen dem Befehl az webapp up
:
Erstellen Sie eine Ressourcengruppe.
Eine Ressourcengruppe ist eine Sammlung von verwandten Azure-Ressourcen. Wenn Sie eine Ressourcengruppe erstellen, können Sie all diese Ressourcen auf einmal löschen, wenn Sie sie nicht mehr benötigen. Führen Sie in der 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 in der Cloud Shell angezeigt, wenn der Befehl erfolgreich abgeschlossen wurde.az group create -l <your-region> -n <your-resource-group>
Erstellen Sie einen App Service-Plan.
Ein App Service wird innerhalb einer VM ausgeführt, die durch einen App Service-Plan definiert ist. Führen Sie den folgenden Befehl aus, um einen App Service-Plan zu erstellen, wobei Sie Ihre eigenen Werte für
<your-resource-group>
und<your-appservice-plan>
ersetzen.--is-linux
ist für Python-Bereitstellungen erforderlich. Wenn Sie einen anderen Tarif als den standardmäßigen F1 Free-Plan wünschen, verwenden Sie das Argumentsku
. Die--sku B1
gibt den preisgünstigeren 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 in der 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 dabei
<your-appservice>
durch einen Namen, der in Azure eindeutig ist. In der Regel verwenden Sie einen persönlichen Namen oder Firmennamen zusammen mit einer App-ID, z. B.<your-name>-flaskpipelines
. Der Befehl kann nicht erfolgreich ausgeführt werden, wenn der Name bereits verwendet wird. Wenn Sie den App Service derselben Ressourcengruppe wie den Plan zuordnen, können Sie ganz einfach alle Ressourcen auf einmal bereinigen.Hinweis
Wenn Sie Ihren Code gleichzeitig mit dem Erstellen der App Service-Instanz bereitstellen möchten, können Sie die Argumente
--deployment-source-url
und--deployment-source-branch
zusammen mit dem Befehlaz webapp create
verwenden. 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 richtig ist, überprüfen Sie, ob die mit dem Argument
-g
angegebene Ressourcengruppe ebenfalls richtig und der von Ihnen identifizierte Plan Teil dieser Ressourcengruppe ist. Wenn Sie den Namen der Ressourcengruppe falsch schreiben, findet der Befehl den Plan in dieser nicht existierenden Ressourcengruppe nicht und gibt diesen bestimmten Fehler aus.Wenn Ihre App einen benutzerdefinierten Startbefehl benötigt, verwenden Sie den Befehl
az webapp config set
, wie zuvor in Bereitstellen der Azure App Service-Zielinstanz beschrieben. Um z. B. den App Service mit Ihrer Ressourcengruppe, dem Namen der App und dem Startbefehl anzupassen, führen Sie Folgendes aus:az webapp config set -g <your-resource-group> -n <your-appservice> --startup-file <your-startup-command-or-file>
Der App Service enthält zu diesem Zeitpunkt nur den Standard-App-Code. Sie können jetzt Azure Pipelines verwenden, um Ihren spezifischen App-Code bereitzustellen.
Bereinigen von Ressourcen
Um zu vermeiden, dass für die in diesem Tutorial erstellten Azure-Ressourcen Gebühren anfallen, 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 Ressourcengruppen im linken Navigationsbereich aus. Wählen Sie in der Ressourcengruppenliste die ... rechts neben der Ressourcengruppe aus, die Sie löschen möchten. Wählen Sie dann Ressourcengruppe löschen aus und befolgen Sie die Anweisungen.
Sie können auch az group delete in der Cloud Shell verwenden, um Ressourcengruppen zu löschen.
Um das Speicherkonto zu löschen, das das Dateisystem für Cloud Shell verwaltet und für das eine geringe monatliche Gebühr anfällt, löschen Sie die Ressourcengruppe, die mit cloud-shell-storage- beginnt.
Nächste Schritte
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Tickets als Feedbackmechanismus für Inhalte auslaufen lassen und es durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unter:Feedback senden und anzeigen für