Diese Seite wurde von der Cloud Translation API übersetzt.
Switch to English

Django in der App Engine-Standardumgebung ausführen

Django-Anwendungen, die in der App Engine-Standardumgebung ausgeführt werden, werden dynamisch entsprechend dem Traffic skaliert.

In dieser Anleitung wird davon ausgegangen, dass Sie mit der Django-Webentwicklung vertraut sind. Wenn Sie mit der Django-Entwicklung noch nicht vertraut sind, sollten Sie zuerst Ihre erste Django-Anwendung schreiben. In dieser Anleitung stellen die Modelle der Anwendung Umfragen dar, die Fragen enthalten. Sie können mit den Modellen über die Django-Admin-Konsole interagieren.

Für diese Anleitung ist Python 3.7 erforderlich.

Hinweis

  1. Melden Sie sich bei Ihrem Google-Konto an.

    Wenn Sie noch kein Konto haben, melden Sie sich hier für ein neues Konto an.

  2. Wählen Sie in der Google Cloud Console auf der Seite der Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.

    Zur Projektauswahl

  3. Die Abrechnung für das Cloud-Projekt muss aktiviert sein. So prüfen Sie, ob die Abrechnung für Ihr Projekt aktiviert ist.

  4. Aktivieren Sie die Cloud SQL Admin API.

    Aktivieren Sie die API

  5. Installieren und initialisieren Sie das Cloud SDK.

Bei gcloud anmelden

Rufen Sie neue Anmeldedaten ab, um die Cloud SQL Admin API zu verwenden:

gcloud auth application-default login

App herunterladen und ausführen

Nachdem Sie die Voraussetzungen erfüllt haben, laden Sie die Django-Beispiel-App herunter und stellen Sie sie bereit. In den folgenden Abschnitten erfahren Sie, wie Sie die Anwendung konfigurieren, ausführen und bereitstellen.

Django-App klonen

Der Code für die Django-Beispiel-App befindet sich im Repository GoogleCloudPlatform/python-docs-samples auf GitHub.

  1. Sie können entweder das Beispiel als ZIP-Datei herunterladen und entpacken oder das Repository auf Ihren lokalen Computer klonen:

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

  2. Gehen Sie zum Verzeichnis mit dem Beispielcode:

Linux/macOS

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

Windows

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

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 auf der Cloud SQL-Instanz können Sie den PostgreSQL-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_x86.exe, wählen Sie Link speichern unter aus und laden Sie den Proxy herunter. Benennen Sie die Datei in cloud_sql_proxy.exe um.

Docker-Proxy-Image

Das Cloud SQL-Team verwaltet mehrere Container-Images, die den Cloud SQL-Proxy enthalten und von unseren Kunden verwendet werden. Weitere Informationen zu diesen Images finden Sie im Cloud SQL-Proxy-Repository auf GitHub. Mit dem folgenden Befehl können Sie das neueste Image mithilfe von Docker auf Ihren lokalen Computer übertragen:
docker pull gcr.io/cloudsql-docker/gce-proxy:1.19.1

Anderes Betriebssystem

Bei anderen Betriebssystemen, die hier nicht aufgeführt sind, können Sie den Proxy aus der Quelle kompilieren.

Cloud SQL-Instanz erstellen

  1. <a{: class="internal" l10n-attrs-original-order="href,track-type,track-name,track-metadata-position,track-metadata-end-goal,class,target" l10n-encrypted-href="swy1Ju7ZCFYcdSM5eWXif6UZVxTWFRvKZQskpFkH9Tzmsov9Tn44Y7Li5Oo7JOUB" target="_blank" track-metadata-end-goal="createInstance" track-metadata-position="body" track-name="internalLink" track-type="python" }=""> Erstellen Sie eine Cloud SQL for MySQL-Instanz der zweiten Generation.

    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 Instanzliste angezeigt.

    </a>
  2. Führen Sie nun mit dem Cloud SDK den im Folgenden aufgeführten Befehl aus. 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 für [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 für [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 notiert haben.

    Dadurch wird eine Verbindung vom lokalen Computer zur Cloud SQL-Instanz hergestellt, damit 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:

    Cloud Console

    1. Erstellen Sie eine neue Datenbank mit der Cloud Console für die Cloud SQL-Instanz polls-instance. Sie können beispielsweise den Namen polls vergeben.
    2. Erstellen Sie mithilfe der Cloud Console einen neuen Nutzer für die 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 im Folgenden aufgeführten 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 zum Bearbeiten.

    1. Um die Verbindung zur Datenbank sowohl für die App Engine-Bereitstellung als auch für lokale Tests einzurichten, setzen Sie <your-database-user> und <your-database-password> auf den Nutzernamen und das Passwort, die Sie zuvor im Schritt erstellt haben Cloud SQL-Instanz erstellen.

    2. Rufen Sie die Werte für Ihre Instanz ab:

      gcloud sql instances describe [YOUR_INSTANCE_NAME]
      
    3. Kopieren Sie aus der Ausgabe den Wert connectionName, der im nächsten Schritt verwendet werden soll.

    4. Setzen Sie <your-cloudsql-connection-string> auf connectionName aus dem vorherigen Schritt.

    5. Legen Sie [YOUR-DATABASE] auf den Namen fest, den Sie im Schritt Cloud SQL-Instanz initialisieren ausgewählt haben.

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

App auf lokalem Computer ausführen

  1. Zum Ausführen der Django-App auf Ihrem lokalen Computer richten Sie eine Python-Entwicklungsumgebung ein, einschließlich Python, pip und virtualenv.

  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. Rufen Sie in Ihrem Browser http://localhost:8000/ auf.

    http://localhost:8000
    

    Auf der Seite wird der folgende Text angezeigt: "Keine Umfragen verfügbar". Der auf Ihrem Computer ausgeführte Django-Webserver stellt die Beispiel-App-Seiten bereit.

  6. Drücken Sie Control+C, um den lokalen Webserver zu beenden.

Django-Verwaltungskonsole verwenden

  1. Erstellen Sie einen Superuser: Sie müssen einen Nutzernamen und ein Passwort festlegen.

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

    python manage.py runserver
    
  3. Wechseln Sie in Ihrem Browser zu http://localhost:8000/admin.

    http://localhost:8000/admin
    
  4. Melden Sie sich mit dem Nutzernamen und dem Passwort an, die Sie beim Ausführen von createsuperuser verwendet haben.

Anwendung in der App Engine-Standardumgebung bereitstellen

  1. Sammeln Sie alle statischen Inhalte in einem Ordner, indem Sie alle statischen Dateien der Anwendung in den durch STATIC_ROOT angegebenen Ordner in settings.py verschieben:

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

    gcloud app deploy
    

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

Anwendung in Google Cloud ausführen

Mit dem folgenden Befehl wird die Anwendung wie unter app.yaml beschrieben bereitgestellt und die neu bereitgestellte Version als Standardversion festgelegt. Dadurch wird der gesamte neue Traffic verarbeitet.

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

Wenn Sie die Anwendung aktualisieren, stellen Sie die aktualisierte Version bereit. Dazu geben Sie den gleichen Befehl ein, den Sie bei der ersten Bereitstellung der Anwendung verwendet haben. Bei der neuen Bereitstellung wird eine neue Version der App erstellt und zur Standardversion hochgestuft. Die früheren Versionen Ihrer Anwendung bleiben erhalten. Alle Anwendungsversionen dieser Art sind kostenpflichtige Ressourcen. Löschen Sie zur Senkung der Kosten die nicht standardmäßigen Versionen Ihrer Anwendung.

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, ändern Sie in mysite/settings.py die Variable DEBUG in False.

Code verstehen

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 für Ihre 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 Anwendung 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. Diese app.yaml - Datei gibt an, dass App Engine statische Dateien aus dem Verzeichnis static/ bereitstellt:

    runtime: python39
    
    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