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

Django in der flexiblen App Engine-Umgebung ausführen

Django-App, die in der flexiblen App Engine-Umgebung ausgeführt werden, werden auf derselben Infrastruktur ausgeführt wie alle Google-Produkte, was im Allgemeinen die Skalierbarkeit verbessert.

In dieser Anleitung wird davon ausgegangen, dass Sie mit der Django-Webentwicklung vertraut sind. Wenn Sie bei der Django-Entwicklung noch nicht vertraut sind, sollten Sie Ihre erste Django-Anwendung schreiben, bevor Sie fortfahren. 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 oder höher 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="lsL4NbV5FI0DRuRANJcTZKJysOQGKX761P3ItELRG1PjHEtGnUIGGfDSUdzN6k/z" target="_blank" track-metadata-end-goal="createInstance" track-metadata-position="body" track-name="internalLink" track-type="python" }=""> Cloud SQL for PostgreSQL-Instanz erstellen.

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

    </a>
  2. Führen Sie mit dem Cloud SDK den folgenden 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:5432

    Windows

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

    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.

    Postgres-Client

    1. Installieren Sie den Postgres-Client in einem neuen Befehlszeilentab.
      sudo apt-get install postgresql
    2. Verwenden Sie den Postgres-Client oder ein vergleichbares Programm, um eine Verbindung zur Instanz herzustellen. Geben Sie bei entsprechender Aufforderung das von Ihnen festgelegte Administratorpasswort ein.
      psql --host 127.0.0.1 --user postgres --password
    3. Erstellen Sie die erforderlichen Datenbanken, Nutzer und Zugriffsberechtigungen in Ihrer Cloud SQL-Datenbank mit den folgenden Befehlen. Ersetzen Sie [POSTGRES_USER] und [POSTGRES_PASSWORD] durch den Nutzernamen und das Passwort, das Sie verwenden möchten.
      CREATE DATABASE polls;
      CREATE USER [POSTGRES_USER] WITH PASSWORD '[POSTGRES_PASSWORD]';
      GRANT ALL PRIVILEGES ON DATABASE polls TO [POSTGRES_USER];
      GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO [POSTGRES_USER];
      

Datenbankeinstellungen konfigurieren

  1. Öffnen Sie mysite/settings.py zum Bearbeiten.

    1. So verwenden Sie MySQL anstelle von PostgreSQL:

      1. Folgen Sie der Anleitung in den Dateikommentaren, um den MySQL-Datenbanktreiber zu aktivieren.
      2. Öffnen Sie requirements.txt zum Bearbeiten und folgen Sie der Anleitung, um den Abhängigkeiten den MySQL-Datenbanktreiber hinzuzufügen.
    2. 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.

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

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

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

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

    http://localhost:8000
    

    Auf der Seite wird der folgende Text angezeigt: "Hello, world. Sie befinden sich im Umfragenindex." 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 flexiblen App Engine-Umgebung bereitstellen

Wenn die App in Google Cloud bereitgestellt wird, verwendet sie den Gunicorn-Server. Gunicorn stellt keine statischen Inhalte bereit, sodass die App zur Bereitstellung statischer Inhalte Google Cloud Storage verwendet.

  1. Erstellen Sie einen Cloud Storage-Bucket:

    1. Erstellen Sie einen Cloud Storage-Bucket und machen Sie ihn öffentlich lesbar. Ersetzen Sie <your-gcs-bucket> durch einen Bucket-Namen Ihrer Wahl. Sie können beispielsweise Ihre Projekt-ID als Bucket-Namen verwenden:

      gsutil mb gs://<your-gcs-bucket>
      gsutil defacl set public-read gs://<your-gcs-bucket>
      
    2. Sammeln Sie alle lokalen statischen Inhalte in einem Ordner:

      python manage.py collectstatic
      
    3. Laden Sie die statischen Inhalte zu Cloud Storage hoch:

      gsutil rsync -R static/ gs://<your-gcs-bucket>/static
      
  2. Bearbeiten Sie "settings.py":

    1. Öffnen Sie mysite/settings.py zum Bearbeiten.

    2. Legen Sie den Wert von STATIC_URL auf die folgende URL fest. Ersetzen Sie <your-gcs-bucket> durch den zuvor erstellten Bucket-Namen.

      https://storage.googleapis.com/<your-gcs-bucket>/static/
      
    3. Schließen und speichern Sie settings.py.

  3. app.yaml bearbeiten

    1. Öffnen Sie app.yaml zum Bearbeiten.

    2. Führen Sie den folgenden Befehl über die Befehlszeile aus:

      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. Ersetzen Sie <your-cloudsql-connection-string> durch connectionName aus dem vorherigen Schritt.

    5. Schließen und speichern Sie app.yaml.

  4. Beispiel bereitstellen

    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 verarbeitet, der in der flexiblen App Engine-Umgebung ausgeführt wird.

Bei Bereitstellung der Anwendung werden Ihnen u. U. mehrere wiederholte Nachrichten angezeigt, während die Plattform prüft, ob die Anwendung arbeitet. Dies ist normal. Warten Sie auf die Nachricht, dass das Update der Anwendung abgeschlossen ist.

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 älteren Versionen der Anwendung und die zugehörigen VM-Instanzen werden beibehalten. Alle diese Anwendungsversionen und VM-Instanzen sind kostenpflichtige Ressourcen. Löschen Sie zur Senkung der Kosten die nicht standardmäßigen Versionen Ihrer App.

Informationen zum Löschen der nicht standardmäßigen Versionen Ihrer App oder zum Beenden Ihrer VM-Instanzen 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:

    DATABASES = {
        'default': {
            # If you are using Cloud SQL for MySQL rather than PostgreSQL, set
            # 'ENGINE': 'django.db.backends.mysql' instead of the following.
            'ENGINE': 'django.db.backends.postgresql',
            'NAME': 'polls',
            'USER': '<your-database-user>',
            'PASSWORD': '<your-database-password>',
            # For MySQL, set 'PORT': '3306' instead of the following. Any Cloud
            # SQL Proxy instances running locally must also be set to tcp:3306.
            'PORT': '5432',
        }
    }
    # In the flexible environment, you connect to CloudSQL using a unix socket.
    # Locally, you can use the CloudSQL proxy to proxy a localhost connection
    # to the instance
    DATABASES['default']['HOST'] = '/cloudsql/<your-cloudsql-connection-string>'
    if os.getenv('GAE_INSTANCE'):
        pass
    else:
        DATABASES['default']['HOST'] = '127.0.0.1'
  • Legen Sie in der Datei settings.py den Wert von STATIC_URL fest, um anzugeben, wie die App statischen Inhalt bereitstellt:

    # Fill in your cloud bucket and switch which one of the following 2 lines
    # is commented to serve static content from GCS
    # STATIC_URL = 'https://storage.googleapis.com/<your-gcs-bucket>/static/'
    STATIC_URL = '/static/'
  • Die Datei app.yaml enthält Konfigurationsinformationen für die Bereitstellung in der flexiblen Umgebung:

    runtime: python
    env: flex
    entrypoint: gunicorn -b :$PORT mysite.wsgi
    
    beta_settings:
        cloud_sql_instances: <your-cloudsql-connection-string>
    
    runtime_config:
      python_version: 3