Python 2 wird von der Community nicht mehr unterstützt. Wir empfehlen die Migration von Python 2-Anwendungen zu Python 3.

Python-Anwendung bereitstellen

Stellen Sie Ihre Anwendungen für das Hochladen und Ausführen in App Engine bereit. Bei der Bereitstellung von Anwendungen erstellen Sie in App Engine Versionen dieser Anwendungen und ihrer entsprechenden Dienste. Sie können vollständige Anwendungen bereitstellen, einschließlich aller Quellcode- und Konfigurationsdateien. Alternativ können Sie einzelne Versionen oder Konfigurationsdateien bereitstellen und aktualisieren.

Wenn Sie Anwendungen programmatisch bereitstellen möchten, verwenden Sie die Admin API.

Wenn Sie das verworfene appcfg-Tool zur Bereitstellung von Anwendungen verwenden, finden Sie unter appcfg-Referenz weitere Informationen zur Verwendung des Tools.

Hinweise

Beachten Sie vor dem Bereitstellen der Anwendung Folgendes:

gcloud-Befehlszeilentool installieren

Zum Bereitstellen der Anwendung mit dem gcloud-Tool müssen Sie das Cloud SDK herunterladen, installieren und initialisieren:

SDK herunterladen

Wenn das gcloud-Tool bereits installiert ist und für eine andere Cloud-Projekt-ID konfiguriert werden soll, als Sie bei der Initialisierung des Tools angegeben haben, finden Sie entsprechende Erläuterungen unter Cloud SDK-Konfigurationen verwalten.

Proxy verwenden

Wenn Sie den Bereitstellungsbefehl von einem System mit HTTP- oder HTTPS-Proxy ausführen, müssen Sie das Tool für die Kommunikation über den Proxy konfigurieren.

Führen Sie die folgenden Befehle aus, um das gcloud-Tool zu konfigurieren:

gcloud config set proxy/type [PROXY_TYPE]
gcloud config set proxy/address [PROXY_ADDRESS]
gcloud config set proxy/port [PROXY_PORT]

Sie können für den Proxy auch username und password festlegen. Weitere Informationen finden Sie unter gcloud config.

Eine App bereitstellen

Stellen Sie Ihre Anwendung in App Engine mit dem Befehl gcloud app deploy von dort aus bereit, wo sich Ihre Konfigurationsdateien befinden, z. B. app.yaml.

Eindeutige Versions-IDs auswählen

Bei manuell skalierten Instanzen sollte die ID Ihrer Version zur Unterscheidung von numerischen Instanz-IDs mit einem Buchstaben beginnen. Auf diese Weise werden Anfragen zum richtigen Ziel weitergeleitet und die Mehrdeutigkeit von URL-Mustern wie 123-dot-my-service.[REGION_ID].r.appspot.com, die auf zwei Arten interpretiert werden können, wird vermieden.

  • Wenn die Version 123 existiert, wird die Anfrage an die Version 123 des Diensts my-service weitergeleitet.
  • Falls die Version 123 nicht vorhanden ist, wird die Anfrage stattdessen an die Instanz-ID 123 weitergeleitet, auf der die Versionen des Diensts my-service ausgeführt werden.

Sie können Ihre Versionen für die Instanzen beliebig benennen, die für automatische oder grundlegende Skalierung konfiguriert sind, weil das Verweisen auf diese Instanzen nicht unterstützt wird.

gcloud app deploy [CONFIGURATION_FILES]

Standardmäßig wird mit dem Befehl die Konfigurationsdatei app.yaml aus dem aktuellen Verzeichnis bereitgestellt. Wenn Sie den Befehl aus einem Verzeichnis ausführen, das die Datei app.yaml Ihrer Anwendung nicht enthält, oder wenn Sie mehrere Anwendungen bereitstellen möchten, ersetzen Sie [CONFIGURATION_FILES] durch den Pfad zu einer oder mehreren Konfigurationsdateien. Verwenden Sie ein einzelnes Leerzeichen, um Pfadnamen zu trennen.

Optionale Flags:

  • --version: Gibt eine benutzerdefinierte Versions-ID an. App Engine generiert standardmäßig eine Versions-ID.
  • --no-promote: Stellt Ihre Anwendung bereit, ohne den gesamten Traffic automatisch an diese Version weiterzuleiten. Standardmäßig wird jede bereitgestellte Version automatisch so konfiguriert, dass sie 100 % des Traffics empfängt.
  • --project: Gibt eine alternative Cloud-Projekt-ID an, die Sie im gcloud-Tool als Standard initialisiert haben.

Weitere Informationen erhalten Sie in der gcloud app deploy-Referenz oder bei Ausführen von gcloud help über die Befehlszeile.

Beispiele:

gcloud app deploy
gcloud app deploy app.yaml dos.yaml index.yaml
gcloud app deploy --version [YOUR_VERSION_ID] --no-promote --project [YOUR_PROJECT_ID]

Wenn die ID der bereitgestellten Version mit einer anderen Version übereinstimmt, die in App Engine bereits vorhanden ist, wird die vorhandene Version mit den neu bereitgestellten Dateien überschrieben. Dies kann problematisch sein, wenn die Version Traffic verarbeitet, da der Datenverkehr zur Anwendung möglicherweise unterbrochen wird. Das können Sie vermeiden, wenn Sie die neue Version mit einer anderen Versions-ID bereitstellen und dann den Traffic auf diese Version verschieben.

Mehrere Dienstanwendungen bereitstellen

Wenn Ihre Anwendung in mehrere Dienste einbezogen wird, können Sie einzelne Dienste zielgerichtet oder alle Dienste gleichzeitig bereitstellen und aktualisieren. Beim Bereitstellen von Aktualisierungen für Dienste können einzelne Konfigurationsdateien aktualisiert werden. Sie können auch in den entsprechenden Versionen den Quellcode aktualisieren.

Sie können beispielsweise zwei Versionen in App Engine bereitstellen und erstellen, wobei jede Version in einem eigenen Dienst ausgeführt wird. Die erste Version dient als Front-End-Dienst und die andere als Back-End Ihrer Anwendung. Sie können dann einzelne Konfigurationsdateien bereitstellen und nur die Einstellungen eines Dienstes aktualisieren. Es ist auch möglich, eine neue Version für einen Dienst bereitzustellen und den Quellcode des Front-Ends, des Back-Ends oder sowohl des Front-Ends als auch des Back-Ends zu aktualisieren.

Anforderungen für mehrere Dienste

Dieselben Bereitstellungsbefehle verwenden Sie, um die verschiedenen Dienste Ihrer Anwendung mit den folgenden Anforderungen bereitzustellen oder zu aktualisieren:

  • Wichtig ist, dass Sie zuerst eine Version Ihrer Anwendung für den Dienst default bereitstellen, um nachfolgende Dienste erstellen und bereitstellen zu können.

  • Sie müssen die ID des Diensts in der Konfigurationsdatei app.yaml der entsprechenden Version angeben. Fügen Sie dazu in jede Konfigurationsdatei die Elementdefinition service: [YOUR_SERVICE_ID] ein. Wenn Sie die Elementdefinition in der Konfigurationsdatei nicht angeben, wird standardmäßig die Version für den Dienst default bereitgestellt.

  • Sie müssen alle entsprechenden app.yaml-Konfigurationsdateien im Bereitstellungsbefehl angeben, damit Sie mehrere Dienste gleichzeitig bereitstellen können.

So stellen Sie mehrere Dienste bereit:

Im Stammverzeichnis der Anwendung, in dem sich die Konfigurationsdateien befinden, führen Sie den Bereitstellungsbefehl aus und geben die relativen Pfade und Dateinamen für die app.yaml-Datei jedes Diensts an:

gcloud app deploy [CONFIGURATION_FILES]

Bei [CONFIGURATION_FILES] handelt es sich um den Pfad und den Namen einer oder mehrerer Konfigurationsdateien, die durch ein einzelnes Leerzeichen getrennt sind.

Beispiel
gcloud app deploy main/app.yaml service1/app.yaml service2/app.yaml

Über die Befehlszeile wird bestätigt, dass jeder Dienst bereitgestellt wurde.

Indexe aktualisieren

Sie laden die Konfigurationsdatei index.yaml in Datastore hoch, um die von Ihrer Anwendung verwendeten Indexe zu erstellen oder zu aktualisieren. Noch nicht existierende Indexe werden nach dem Hochladen der Konfigurationsdatei erstellt.

Es kann eine Weile dauern, bis Datastore alle Indexe erstellt und diese Indizes App Engine zur Verfügung stehen. Wenn Ihre Anwendung bereits für Traffic konfiguriert ist, können bei Abfragen Ausnahmen auftreten, für die ein Index benötigt wird, der noch erstellt wird.

Sie müssen genügend Zeit für das Erstellen aller Indexe einräumen. Beispiel:

  • Laden Sie die Konfigurationsdatei index.yaml in Datastore hoch, bevor Sie Ihre Version bereitstellen:

    1. Laden Sie die Datei index.yaml in Datastore hoch:

        <pre class="prettyprint lang-sh">gcloud datastore indexes create index.yaml</pre>
        For information, see the <a
        href="/sdk/gcloud/reference/datastore/"><code>gcloud
        datastore</code> reference</a>.
      
    2. Verwenden Sie die Cloud Console, um den Status aller Indexe zu beobachten:

      Zur Datenspeicher-Seite gehen

    3. Nachdem alle Indexe erstellt wurden, stellen Sie die neue Version in App Engine bereit.

  • Erstellen Sie die Indexe, bevor Sie den Traffic auf Ihre Version migrieren oder aufteilen:

    1. Stellen Sie die neue Version bereit, ohne Traffic an diese Version weiterzuleiten: Sie müssen sowohl die app.yaml- als auch die index.yaml-Datei sowie das Flag --no-promote angeben, damit kein Traffic an die Version weitergeleitet wird:
      gcloud app deploy app.yaml index.yaml --no-promote
    2. Verwenden Sie die Cloud Console, um den Status aller Indexe zu beobachten:

      Zur Datenspeicher-Seite gehen

    3. Nachdem alle Ihre Indizes erstellt wurden, können Sie den Traffic mit der Cloud Console auf Ihre Version migrieren oder aufteilen:

      Zur Seite "Versionen"

Weitere Informationen zu Indexen finden Sie unter Datastore-Indexe konfigurieren.

Fehlerbehebung

Nachfolgend einige Beispiele für allgemeine Fehlermeldungen:

PERMISSION_DENIED: Operation not allowed
The "appengine.applications.create" permission is required.
Wenn das Cloud-Projekt nicht die erforderliche App Engine-Anwendung enthält, kann der Befehl gcloud app deploy beim Ausführen des Befehls gcloud app create fehlschlagen. Nur Konten mit der Rolle "Inhaber" haben die erforderlichen Berechtigungen zum Erstellen von App Engine-Anwendungen.
Command not found
Wenn Sie bei der Installation des App Engine SDK (verworfen) keine Symlinks für die dev_appserver.sh-Tools erstellt haben, müssen Sie möglicherweise den vollständigen Verzeichnispfad angeben, damit Sie das Tool ausführen können, z. B. [PATH_TO_CLOUD_SDK]/bin/dev_appserver.py.
Import Error
Wenn Sie sowohl das Cloud SDK als auch das ursprüngliche App Engine SDK installiert haben, können die Einträge in Ihrem PATH einen Konflikt und Importfehler verursachen. Sollten bei der Ausführung von Cloud SDK-Befehlen Fehler aufgetreten sein, versuchen Sie, das ursprüngliche App Engine SDK explizit zu verwenden. Sie können den Eintrag für das ursprüngliche App Engine SDK in Ihrem PATH nach vorne verschieben, damit diese Befehle Vorrang haben. Alternativ können Sie den Befehl ausführen, indem Sie den vollständigen Verzeichnispfad angeben: [PATH_TO_APP_ENGINE_SDK]/dev_appserver.py.
[400] The first service (module) you upload to a new application must be the 'default' service (module)
Zuerst muss der Dienst default erstellt und bereitgestellt werden, bevor Sie die Dienste der Anwendung erstellen und bereitstellen können. Weitere Informationen zum Bereitstellen einer Version für den Dienst default finden Sie unter Mehrere Dienstanwendungen bereitstellen.
Too Many Versions (403)
In App Engine ist die Anzahl der bereitgestellten Versionen Ihrer Anwendung begrenzt. Die Grenzen für kostenlose und bereitgestellte Anwendungen unterscheiden sich. Sie können mit der Cloud Console eine ältere Version löschen und danach den neuesten Code hochladen.
Andere Bereitstellungsfehler
Wenn Ihre Bereitstellung fehlschlägt, sorgen Sie dafür, dass die Cloud Build API in Ihrem Projekt aktiviert ist. App Engine aktiviert diese API automatisch, wenn Sie eine Anwendung zum ersten Mal bereitstellen. Wenn die API seither deaktiviert wurde, schlagen Bereitstellungen fehl.

Nächste Schritte