Django in der App Engine-Standardumgebung ausführen

Der Einstieg in die Entwicklung von Django-Apps, die in der Google App Engine-Standardumgebung ausgeführt werden, ist einfach. Und da App Engine dynamisch entsprechend dem Traffic skaliert wird, können Sie sich darauf verlassen, dass die Apps für alle Nutzer verfügbar sind – unabhängig davon, ob es nur wenige oder Millionen Nutzer sind.

In dieser Anleitung wird davon ausgegangen, dass Sie mit der Django-Webentwicklung vertraut sind. Sie werden in der offiziellen Django-Anleitung Writing your first Django App durch die Bereitstellung der Anwendung geleitet. Sie sollten letztgenannte Anleitung vor allem dann vor dieser Anleitung durcharbeiten, wenn Sie mit der Django-Entwicklung noch nicht vertraut sind. Die App-Modelle stellen Umfragen dar und Sie können mit den Modellen über die Admin-Konsole von Django interagieren.

Für diese Anleitung ist Python 3.7 erforderlich.

Vorbereitung

Haken Sie jeden der Schritte nach der Durchführung ab.

  1. check_box_outline_blank check_box Projekt in der Google Cloud Platform Console erstellen
    Wenn Sie noch kein Projekt erstellt haben, tun Sie dies jetzt. Mit Projekten können Sie alle Google Cloud Platform-Ressourcen für Ihre Anwendung verwalten, dazu gehören Bereitstellung, Zugriffssteuerung, Abrechnung und Dienste.
    1. Öffnen Sie die GCP Console.
    2. Wählen Sie oben im Drop-down-Menü die Option Projekt erstellen aus.
    3. Klicken Sie auf Erweiterte Optionen einblenden. Wählen Sie unter App Engine-Speicherort einen Ort in den USA aus.
    4. Benennen Sie das Projekt.
    5. Notieren Sie sich die Projekt-ID, da diese vom Projektnamen abweichen kann. Die Projekt-ID wird für Befehle und Konfigurationen verwendet.
  2. check_box_outline_blank check_box Abrechnung für das Projektaktivieren und sich für eine kostenlose Testversion registrieren

    Sollten Sie die Abrechnung für das Projekt noch nicht aktiviert haben, müssen Sie die Abrechnung jetzt aktivieren.Anschließend können Sie sich für eine kostenlose Testversion registrieren. Wenn die Abrechnung aktiviert ist, hat die Anwendung Zugriff auf kostenpflichtige Ressourcen, um beispielsweise Instanzen auszuführen und Daten zu speichern. Während der Nutzung der kostenlosen Testversion werden keine Gebühren für die verwendeten Dienste berechnet.

  3. check_box_outline_blank check_box Cloud SDK installieren

    Wenn Sie es noch nicht getan haben, installieren und initialisieren Sie jetzt das Cloud SDK. Das Cloud SDK enthält Tools und Bibliotheken, mit denen Sie Ressourcen auf der GCP erstellen und verwalten können.

  4. check_box_outline_blank check_box Die APIs für Ihr Projekt aktivieren

    Dadurch wechseln Sie zur GCP Console und aktivieren automatisch die in dieser Anleitung verwendeten APIs. Folgende APIs werden verwendet: Cloud SQL API.

Anwendung herunterladen und ausführen

Sobald Sie die Voraussetzungen erfüllen, können Sie die Django-Beispiel-App herunterladen und bereitstellen. In den folgenden Abschnitten zeigen wir Ihnen, wie Sie die Beispiel-App konfigurieren, ausführen und bereitstellen.

Django-App klonen

Den Code für die Django-Beispielanwendung finden Sie im Repository Google Cloud Platform python-docs-samples auf GitHub.

Klonen Sie das Repository auf Ihren lokalen Computer:

git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git

Gehen Sie zum Verzeichnis mit dem Beispielcode:

Linux/macOS

cd python-docs-samples/appengine/standard_python37/django

Windows

cd python-docs-samples\appengine\standard_python37\django

Alternativ können Sie das Beispiel als ZIP-Datei herunterladen und extrahieren.

Lokale Umgebung einrichten

Nach der Bereitstellung verwendet die Anwendung den in die App Engine-Umgebung integrierten Cloud SQL Proxy, um mit der Cloud SQL-Instanz zu kommunizieren. Sie müssen jedoch eine lokale Kopie des Cloud SQL Proxys in Ihrer Entwicklungsumgebung installieren und verwenden, um die Anwendung lokal zu testen.

Weitere Informationen zum Cloud SQL Proxy

Für einfache Verwaltungsaufgaben in der Cloud SQL-Instanz können Sie den MySQL-Client nutzen.

Cloud SQL-Proxy installieren

Laden Sie den Cloud SQL Proxy herunter und installieren Sie ihn. Der Cloud SQL Proxy stellt eine Verbindung zu Ihrer Cloud SQL-Instanz her, wenn Programme lokal ausgeführt werden.

Linux 64-Bit

  1. Laden Sie den Proxy herunter:
    wget https://dl.google.com/cloudsql/cloud_sql_proxy.linux.amd64 -O cloud_sql_proxy
    
  2. Machen Sie den Proxy ausführbar:
    chmod +x cloud_sql_proxy
    

Linux 32-Bit

  1. Laden Sie den Proxy herunter:
    wget https://dl.google.com/cloudsql/cloud_sql_proxy.linux.386 -O cloud_sql_proxy
    
  2. Machen Sie den Proxy ausführbar:
    chmod +x cloud_sql_proxy
    

macOS 64-Bit

  1. Laden Sie den Proxy herunter:
    curl -o cloud_sql_proxy https://dl.google.com/cloudsql/cloud_sql_proxy.darwin.amd64
    
  2. Machen Sie den Proxy ausführbar:
    chmod +x cloud_sql_proxy
    

macOS 32-Bit

  1. Laden Sie den Proxy herunter:
    curl -o cloud_sql_proxy https://dl.google.com/cloudsql/cloud_sql_proxy.darwin.386
    
  2. Machen Sie den Proxy ausführbar:
    chmod +x cloud_sql_proxy
    

Windows 64-Bit

Klicken Sie mit der rechten Maustaste auf https://dl.google.com/cloudsql/cloud_sql_proxy_x64.exe, wählen Sie Link speichern unter... aus und laden Sie den Proxy herunter. Benennen Sie die Datei in cloud_sql_proxy.exe um.

Windows 32-Bit

Klicken Sie mit der rechten Maustaste auf https://dl.google.com/cloudsql/cloud_sql_proxy_x64.exe, wählen Sie Link speichern unter... aus und laden Sie den Proxy herunter. Benennen Sie die Datei in cloud_sql_proxy.exe um.
Wenn Ihr Betriebssystem hier nicht aufgeführt ist, können Sie auch den Proxy aus der Quelle kompilieren.

Cloud SQL-Instanz erstellen

  1. Cloud SQL for MySQL-Instanz der zweiten Generation erstellen:

    Benennen Sie die Instanz polls-instance oder ähnlich. Es kann einige Minuten dauern, bis die Instanz einsatzbereit ist. Wenn die Instanz bereit ist, wird sie in der Instanzenliste angezeigt.

  2. Führen Sie nun das Cloud SDK aus, um den folgenden Befehl auszuführen. Dabei stellt [YOUR_INSTANCE_NAME] den Namen der Cloud SQL-Instanz dar.
    gcloud sql instances describe [YOUR_INSTANCE_NAME]

    Notieren Sie den Wert für [CONNECTION_NAME], der in der Ausgabe angezeigt wird.

    Der Wert [CONNECTION_NAME] hat das Format [PROJECT_NAME]:[REGION_NAME]:[INSTANCE_NAME].

Cloud SQL-Instanz initialisieren

  1. Starten Sie den Cloud SQL Proxy mit dem Wert [CONNECTION_NAME] aus dem vorherigen Schritt.

    Linux/MacOS

    ./cloud_sql_proxy -instances="[YOUR_INSTANCE_CONNECTION_NAME]"=tcp:3306

    Windows

    cloud_sql_proxy.exe -instances="[YOUR_INSTANCE_CONNECTION_NAME]"=tcp:3306

    Ersetzen Sie [YOUR_INSTANCE_CONNECTION_NAME] durch den Wert [CONNECTION_NAME], den Sie im vorherigen Schritt aufgezeichnet haben.

    Dadurch wird eine Verbindung vom lokalen Computer zur Cloud SQL-Instanz hergestellt, sodass lokale Tests durchgeführt werden können. Brechen Sie die Ausführung des Cloud SQL Proxys nicht ab, solange Sie die Anwendung noch lokal testen.

  2. Erstellen Sie einen Cloud SQL-Nutzer und eine Cloud SQL-Datenbank.

    GCP Console

    1. Erstellen Sie mithilfe der GCP Console eine neue Datenbank für Ihre Cloud SQL-Instanz polls-instance. Sie können beispielsweise den Namen polls verwenden.
    2. Erstellen Sie mithilfe der GCP Console einen neuen Nutzer für Ihre Cloud SQL-Instanz polls-instance.

    MySQL-Client

    1. Verwenden Sie den MySQL-Client oder ein vergleichbares Programm auf einem neuen Befehlszeilentab, um eine Verbindung zur Instanz herzustellen. Geben Sie bei entsprechender Aufforderung das von Ihnen festgelegte Root-Passwort ein.
      mysql --host 127.0.0.1 --user root --password
    2. Erstellen Sie die erforderlichen Datenbanken, Nutzer und Zugriffsberechtigungen in Ihrer Cloud SQL-Datenbank mit den folgenden Befehlen. Ersetzen Sie [MYSQL_USER] und [MYSQL_PASSWORD] durch den Nutzernamen und das Passwort, das Sie verwenden möchten.
      CREATE DATABASE polls;
      CREATE USER '[MYSQL_USER]' IDENTIFIED BY '[MYSQL_PASSWORD]';
      GRANT ALL ON . TO '[MYSQL_USER]';

Datenbankeinstellungen konfigurieren

  1. Öffnen Sie mysite/settings.py zur Bearbeitung.

  2. Ersetzen Sie an zwei Stellen [YOUR-USERNAME] und [YOUR-PASSWORD] durch den Nutzernamen und das Passwort der Datenbank, die Sie zuvor im Schritt "Cloud SQL-Instanz erstellen" angelegt haben. Das vereinfacht die Einrichtung der Verbindung zur Datenbank für die App Engine-Bereitstellung und für lokale Tests.

  3. Führen Sie den folgenden Befehl aus: Kopieren Sie den ausgegebenen connectionName-Wert für den nächsten Schritt.

    gcloud sql instances describe [YOUR_INSTANCE_NAME]
    
  4. Ersetzen Sie [YOUR-CONNECTION-NAME] durch connectionName aus dem vorherigen Schritt.

  5. Ersetzen Sie [YOUR-DATABASE] durch den Namen, den Sie im Schritt "Cloud SQL-Instanz initialisieren" ausgewählt haben.

  6. Schließen und speichern Sie settings.py.

Anwendung auf lokalem Computer ausführen

  1. Sie müssen eine Python-Entwicklungsumgebung einrichten, einschließlich Python, pip und virtualenv, um die Django-Anwendung auf Ihrem lokalen Computer ausführen zu können. Die Anleitung dazu finden Sie unter Python-Entwicklungsumgebung einrichten für die Google Cloud Platform.

  2. Erstellen Sie eine isolierte Python-Umgebung und installieren Sie Abhängigkeiten:

    Linux/macOS

    virtualenv env
    source env/bin/activate
    pip install -r requirements.txt
    

    Windows

    virtualenv env
    env\scripts\activate
    pip install -r requirements.txt
    

  3. Führen Sie die Django-Migrationen aus, um die Modelle einzurichten:

    python manage.py makemigrations
    python manage.py makemigrations polls
    python manage.py migrate
    
  4. Starten Sie einen lokalen Webserver:

    python manage.py runserver
    
  5. Geben Sie im Webbrowser die folgende Adresse ein:

    http://localhost:8000
    

Sie sollten eine einfache Webseite mit dem folgenden Text sehen: "Hallo Welt. Sie befinden sich im Umfrageindex." Die Beispiel-App-Seiten werden vom Django-Webserver geliefert, der auf Ihrem Computer ausgeführt wird. Wenn Sie fortfahren möchten, drücken Sie Strg+C, um den lokalen Webserver zu beenden.

Admin-Konsole von Django verwenden

  1. Erstellen Sie einen Superuser:

    python manage.py createsuperuser
    
  2. Starten Sie einen lokalen Webserver:

    python manage.py runserver
    
  3. Geben Sie die folgende Adresse in den Webbrowser ein. Melden Sie sich bei der Admin-Website mit dem Nutzernamen und dem Passwort an, die Sie bei der Ausführung von createsuperuser erstellt haben.

    http://localhost:8000/admin/
    

App in der App Engine-Standardumgebung bereitstellen

  1. Sammeln Sie jeglichen statischen Inhalt in einem Ordner: Mit dem folgenden Befehl werden alle statischen Dateien der Anwendung in den von STATIC_ROOT in settings.py angegebenen Ordner verschoben:

    python manage.py collectstatic
    
  2. Laden Sie die Anwendung hoch, indem Sie den folgenden Befehl aus dem Verzeichnis python-docs-samples/appengine/standard/django der Anwendung ausführen, in dem sich die Datei app.yaml befindet:

    gcloud app deploy
    

    Warten Sie auf die Nachricht, dass das Update abgeschlossen ist.

App-Ausführung in der Cloud ansehen

Geben Sie im Webbrowser die folgende Adresse ein:

https://<your_project_id>.appspot.com

Diesmal wird Ihre Anfrage von einem Webserver bearbeitet, der in der App Engine-Standardumgebung ausgeführt wird.

Mit diesem Befehl wird die Anwendung wie in app.yaml beschrieben bereitgestellt und die neu bereitgestellte Version als die Standardversion festgelegt, sodass sie sämtlichen neuen Traffic bearbeitet.

Wenn Sie die App aktualisieren, können Sie die aktualisierte Version mit demselben Befehl bereitstellen, den Sie bei der ersten Bereitstellung der App verwendet haben. Bei der neuen Bereitstellung wird eine neue Version der Anwendung erstellt und zur Standardversion hochgestuft. Die älteren Versionen der App werden beibehalten. Alle diese App-Versionen sind jedoch kostenpflichtige Ressourcen. Informationen zum Löschen der nicht standardmäßigen Versionen der Anwendung finden Sie unter Bereinigen.

Produktion

Wenn Sie den Inhalt für die Produktion bereitstellen möchten, nehmen Sie die folgende Konfigurationsänderung vor:

  1. Ändern Sie in mysite/settings.py die Variable DEBUG in False.

Erläuterung des Codes

Die Django-Beispiel-App wurde mit den Django-Standardtools erstellt. Mit den folgenden Befehlen werden das Projekt und die Umfrage-App erstellt:

django-admin startproject mysite
python manage.py startapp polls

Die Datei settings.py enthält die Konfiguration der SQL-Datenbank. Der Code in settings.py bestimmt anhand der Umgebungsvariablen GAE_APPLICATION, ob die App in App Engine oder auf Ihrem lokalen Computer ausgeführt wird. Wenn die App in App Engine ausgeführt wird, stellt sie über den Unix-Socket /cloudsql eine Verbindung zum MySQL-Host her. Wenn die App auf dem lokalen Computer ausgeführt wird, stellt sie über TCP eine Verbindung zum MySQL-Host her. Hierfür sind Nutzername und Passwort erforderlich.

if os.getenv('GAE_APPLICATION', None):
    # Running on production App Engine, so connect to Google Cloud SQL using
    # the unix socket at /cloudsql/<your-cloudsql-connection string>
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'HOST': '/cloudsql/[YOUR-CONNECTION-NAME]',
            'USER': '[YOUR-USERNAME]',
            'PASSWORD': '[YOUR-PASSWORD]',
            'NAME': '[YOUR-DATABASE]',
        }
    }
else:
    # Running locally so connect to either a local MySQL instance or connect to
    # Cloud SQL via the proxy. To start the proxy via command line:
    #
    #     $ cloud_sql_proxy -instances=[INSTANCE_CONNECTION_NAME]=tcp:3306
    #
    # See https://cloud.google.com/sql/docs/mysql-connect-proxy
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'HOST': '127.0.0.1',
            'PORT': '3306',
            'NAME': '[YOUR-DATABASE]',
            'USER': '[YOUR-USERNAME]',
            'PASSWORD': '[YOUR-PASSWORD]',
        }
    }

Die Datei app.yaml enthält Konfigurationsinformationen für die Bereitstellung in App Engine. Außerdem wird in der Datei app.yaml angegeben, dass App Engine statische Dateien aus dem Verzeichnis static/ bereitstellen soll.

runtime: python37

handlers:
# This configures Google App Engine to serve the files in the app's static
# directory.
- url: /static
  static_dir: static/

# This handler routes all requests not caught above to your main app. It is
# required when static routes are defined, but can be omitted (along with
# the entire handlers section) when there are no static files defined.
- url: /.*
  script: auto
Hat Ihnen diese Seite weitergeholfen? Teilen Sie uns Ihr Feedback mit:

Feedback geben zu...