Django in der App Engine-Standardumgebung ausführen

Django-Apps, die in der App Engine-Standardumgebung ausgeführt werden, werden je nach Traffic dynamisch 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 wird insbesondere Django beschrieben. Sie können diesen Bereitstellungsprozess auch mit anderen Django-basierten Frameworks wie Wagtail und Django CMS verwenden.

In dieser Anleitung wird Django 3 verwendet, das mindestens Python 3.7 erfordert. Der App Engine-Standard unterstützt Python 3.7 und höher.

Ziele

In dieser Anleitung wird Folgendes beschrieben:

  • Erstellen und verbinden Sie eine Cloud SQL-Datenbank.
  • Secret Manager-Secret-Werte erstellen und verwenden.
  • Eine Django-Anwendung in der App Engine-Standardumgebung bereitstellen

Kosten

In dieser Anleitung werden die folgenden kostenpflichtigen Komponenten von Google Cloud verwendet:

Mit dem Preisrechner können Sie eine Kostenschätzung für Ihre voraussichtliche Nutzung vornehmen. Neuen Google Cloud-Nutzern steht möglicherweise eine kostenlose Testversion zur Verfügung.

Hinweis

  1. Melden Sie sich bei Ihrem Google Cloud-Konto an. Wenn Sie mit Google Cloud noch nicht vertraut sind, erstellen Sie ein Konto, um die Leistungsfähigkeit unserer Produkte in der Praxis sehen und bewerten zu können. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
  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. Cloud SQL Admin API, Secret Manager, and Cloud Build APIs aktivieren.

    Aktivieren Sie die APIs

  5. Installieren und initialisieren Sie das Cloud SDK.
  6. Falls noch nicht geschehen, initialisieren Sie App Engine und wählen Sie Ihre bevorzugte Region aus:

    gcloud app create
    

Umgebung vorbereiten

Beispielanwendung klonen

Der Code für die Django-Beispielanwendung 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
    

Python-Einrichtung bestätigen

Diese Anleitung benötigt Python, um die Beispielanwendung auf Ihrem Computer auszuführen. Für den Beispielcode müssen außerdem Abhängigkeiten installiert werden.

Weitere Informationen finden Sie im Leitfaden zur Python-Entwicklungsumgebung.

  1. Prüfen Sie, ob Python mindestens Version 3.7 ist.

     python -V
    

    Sie sollten Python 3.7.3 oder höher sehen.

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

    Linux/macOS

    python -m venv venv
    source venv/bin/activate
    pip install --upgrade pip
    pip install -r requirements.txt
    

    Windows

    python -m venv env
    venv\scripts\activate
    pip install --upgrade pip
    pip install -r requirements.txt
    

Laden Sie den Cloud SQL-Authentifizierungsproxy herunter, um von Ihrem lokalen Computer aus eine Verbindung zu Cloud SQL herzustellen

Bei der Bereitstellung verwendet Ihre Anwendung den in die App Engine-Standardumgebung integrierten Cloud SQL Auth-Proxy, um mit Ihrer 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 finden Sie in der Cloud SQL-Authentifizierungsproxy-Anleitung.

Der Cloud SQL Auth-Proxy verwendet die Cloud SQL API für die Interaktion mit der SQL-Instanz. Dazu ist eine Authentifizierung der Anwendung über gcloud erforderlich.

  1. Authentifizieren Sie die Anmeldedaten für die API und rufen Sie sie ab:

    gcloud auth application-default login
    
  2. Laden Sie den Cloud SQL Auth-Proxy herunter und installieren Sie ihn auf Ihrem lokalen Computer.

    Linux 64-Bit

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

    Linux 32-Bit

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

    macOS 64-Bit

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

    macOS 32-Bit

    1. Laden Sie den Cloud SQL Auth-Proxy herunter:
      curl -o cloud_sql_proxy https://dl.google.com/cloudsql/cloud_sql_proxy.darwin.386
      
    2. Machen Sie den Cloud SQL Auth-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 Cloud SQL Auth-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 Cloud SQL Auth-Proxy herunter. Benennen Sie die Datei in cloud_sql_proxy.exe um.

    Docker-Image des Cloud SQL Auth-Proxys

    Der Einfachheit halber sind mehrere Container-Images, die den Cloud SQL Auth-Proxy enthalten, auf GitHub im Cloud SQL Auth-Proxy-Repository verfügbar. Mit folgendem 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
    

    Andere Betriebssysteme

    Für andere Betriebssysteme, die hier nicht aufgeführt sind, können Sie den Cloud SQL Auth-Proxy aus der Quelle kompilieren.

    Sie können den Download an einen Ort verschieben, an dem es häufig gespeichert wird, z. B. an einen Speicherort in Ihrem PATH oder in Ihr Basisverzeichnis. Wenn Sie dies tun, müssen Sie beim Starten des Cloud SQL Auth-Proxys später in der Anleitung daran denken, bei Verwendung von cloud_sql_proxy-Befehlen auf den ausgewählten Standort zu verweisen.

Sicherungsdienste erstellen

In dieser Anleitung werden mehrere Google Cloud-Dienste verwendet, um die Datenbank, den Medienspeicher und den Secret-Speicher bereitzustellen, der das bereitgestellte Django-Projekt unterstützt. Diese Dienste werden in einer bestimmten Region bereitgestellt. Um die Effizienz der Dienste zu steigern, sollten alle Dienste in derselben Region bereitgestellt werden. Weitere Informationen zur nächstgelegenen Region finden Sie unter Verfügbare Produkte nach Region.

In dieser Anleitung können die integrierten statischen Asset-Hostingmechanismen in der App Engine-Standardumgebung verwendet werden.

Cloud SQL for PostgreSQL-Instanz einrichten

Django unterstützt offizielle relationale Datenbanken. Es werden jedoch die meisten PostgreSQL-Datenbanken unterstützt. PostgreSQL wird von Cloud SQL unterstützt, sodass in dieser Anleitung dieser Datenbanktyp verwendet werden soll.

Im folgenden Abschnitt wird das Erstellen einer PostgreSQL-Instanz, einer Datenbank und eines Datenbanknutzers für die Anwendung beschrieben.

  1. PostgreSQL-Instanz erstellen

    Console

    1. Wechseln Sie in der Cloud Console zur Seite Cloud SQL-Instanzen.

      Zur Seite "Cloud SQL-Instanzen"

    2. Klicken Sie auf Instanz erstellen.

    3. Klicken Sie auf PostgreSQL.

    4. Geben Sie im Feld Instanz-ID INSTANCE_NAME ein.

    5. Geben Sie das Passwort für den Postgres-Nutzer ein.

    6. Behalten Sie in den anderen Feldern die Standardwerte bei.

    7. Klicken Sie auf Erstellen.

    Es dauert einige Minuten, bis die Instanz erstellt und einsatzbereit ist.

    gcloud

    • Erstellen Sie die PostgreSQL-Instanz:

      gcloud sql instances create INSTANCE_NAME \
          --project PROJECT_ID \
          --database-version POSTGRES_13 \
          --tier db-f1-micro \
          --region REGION
      

    Dabei gilt:

    • INSTANCE_NAME: der Name der Cloud SQL-Instanz
    • PROJECT_ID: die Google Cloud-Projekt-ID
    • REGION: Die Google Cloud-Region

    Es dauert einige Minuten, bis die Instanz erstellt und einsatzbereit ist.

  2. Erstellen Sie in der erstellten Instanz eine Datenbank:

    Console

    1. Rufen Sie auf der Instanzseite den Tab Datenbanken auf.
    2. Klicken Sie auf Datenbank erstellen.
    3. Geben Sie im Dialogfeld Datenbankname DATABASE_NAME ein.
    4. Klicken Sie auf Erstellen.

    gcloud

    • Erstellen Sie die Datenbank in der kürzlich erstellten Instanz:

      gcloud sql databases create DATABASE_NAME \
          --instance INSTANCE_NAME
      

      Ersetzen Sie DATABASE_NAME durch einen Namen für die Datenbank in der Instanz.

  3. Datenbanknutzer erstellen

    Console

    1. Wechseln Sie auf der Instanzseite zum Tab Nutzer.
    2. Klicken Sie auf Nutzerkonto hinzufügen.
    3. Gehen Sie im Dialogfeld Nutzerkonto zur Instanz hinzufügen unter "Integrierte Authentifizierung" vor:
    4. Geben Sie den Nutzernamen DATABASE_USERNAME ein.
    5. Geben Sie das Passwort DATABASE_PASSWORD ein
    6. Klicken Sie auf Add.

    gcloud

    • Erstellen Sie den Nutzer in der kürzlich erstellten Instanz:

      gcloud sql users create DATABASE_USERNAME \
          --instance INSTANCE_NAME \
          --password DATABASE_PASSWORD
      

      Ersetzen Sie PASSWORD durch ein sicheres Passwort.

Secret-Werte in Secret Manager speichern

Nachdem die Sicherungsdienste konfiguriert sind, benötigt Django Informationen zu diesen Diensten. Anstatt diese Werte direkt in den Django-Quellcode einzufügen, verwendet diese Anleitung Secret Manager, um diese Informationen sicher zu speichern.

Der App Engine-Standard interagiert mit Secrets über sein Dienstkonto.

Django-Umgebungsdatei als Secret Manager-Secret erstellen

Sie speichern die zum Starten von Django erforderlichen Einstellungen in einer sicheren Umgebungsdatei. Die Beispielanwendung verwendet die Secret Manager API, um den Secret-Wert abzurufen, und das Paket django-environ, um die Werte in die Django-Umgebung zu laden. Das Secret ist für den Zugriff durch den App Engine-Standard konfiguriert.

  1. Erstellen Sie eine Datei mit dem Namen .env und definieren Sie den Datenbank-Verbindungsstring, den Namen des Medien-Buckets sowie einen neuen SECRET_KEY-Wert:

    echo DATABASE_URL=postgres://DATABASE_USERNAME:DATABASE_PASSWORD@//cloudsql/PROJECT_ID:REGION:INSTANCE_NAME/DATABASE_NAME > .env
    echo GS_BUCKET_NAME=PROJECT_ID_MEDIA_BUCKET >> .env
    echo SECRET_KEY=$(cat /dev/urandom | LC_ALL=C tr -dc '[:alpha:]'| fold -w 50 | head -n1) >> .env
    
  2. Speichern Sie das Secret in Secret Manager:

    Console

    1. Rufen Sie in der Cloud Console die Seite „Secret Manager“ auf.

      Zur Seite "Secret Manager"

    2. Klicken Sie auf Secret erstellen.

    3. Geben Sie im Feld Name django_settings ein.

    4. Fügen Sie im Dialogfeld Secret-Wert den Inhalt Ihrer .env-Datei ein.

    5. Klicken Sie auf Secret erstellen.

    6. Löschen Sie die lokale Datei, um zu verhindern, dass lokale Einstellungsüberschreibungen verwendet werden.

    gcloud

    1. Erstellen Sie das neue Secret django_settings mit dem Wert der Datei .env:

      gcloud secrets create django_settings --data-file .env
      
    2. Prüfen Sie Folgendes, um die Erstellung des Secrets zu bestätigen:

      gcloud secrets describe django_settings
      
      gcloud secrets versions access latest --secret django_settings
      
    3. Löschen Sie die lokale Datei, um lokale Einstellungsüberschreibungen zu verhindern:

      rm .env
      
  3. Konfigurieren Sie den Zugriff auf das Secret:

    Console

    1. Klicken Sie auf den Tab Berechtigungen.
    2. Klicken Sie auf Add.
    3. Geben Sie in das Feld Neue Mitglieder PROJECT_ID@appspot.gserviceaccount.com ein und drücken Sie dann Enter.
    4. Wählen Sie im Drop-down-Menü Rolle die Option Zugriffsfunktion für Secret Manager-Secret aus.
    5. Klicken Sie auf Speichern.

    gcloud

    1. Gewähren Sie dem App Engine-Standarddienstkonto Zugriff auf das Secret.

      gcloud secrets add-iam-policy-binding django_settings \
          --member serviceAccount:PROJECT_ID@appspot.gserviceaccount.com \
          --role roles/secretmanager.secretAccessor
      

App auf lokalem Computer ausführen

Nachdem Sie die Sicherungsdienste konfiguriert haben, können Sie die App jetzt auf Ihrem Computer ausführen. Diese Konfiguration ermöglicht die lokale Entwicklung, die Erstellung eines Superuser und die Anwendung von Datenbankmigrationen.

  1. Starten Sie den Cloud SQL Auth-Proxy in einem separaten Terminal:

    Linux/macOS

    ./cloud_sql_proxy -instances="PROJECT_ID:REGION:INSTANCE_NAME"=tcp:5432
    

    Windows

    cloud_sql_proxy.exe -instances="PROJECT_ID:REGION:INSTANCE_NAME"=tcp:5432
    

    Mit diesem Schritt wird eine Verbindung vom lokalen Computer zur Cloud SQL-Instanz für lokale Testzwecke hergestellt. Lassen Sie den Cloud SQL Auth-Proxy die gesamte Zeit lang testen, wenn Sie Ihre Anwendung lokal testen. Wenn Sie diesen Prozess in einem separaten Terminal ausführen, können Sie währenddessen weiter arbeiten. Führen Sie die nächsten Schritte in einem separaten Terminal durch.

  2. Legen Sie in einem neuen Terminal die Projekt-ID lokal fest :

    Linux/macOS

      export GOOGLE_CLOUD_PROJECT=PROJECT_ID
    

    Windows

      set GOOGLE_CLOUD_PROJECT=PROJECT_ID
    
  3. Legen Sie eine Umgebungsvariable fest, die angibt, dass Sie den Cloud SQL-Auth-Proxy verwenden. Dieser Wert wird im Code erkannt:

    Linux/macOS

      export USE_CLOUD_SQL_AUTH_PROXY=true
    

    Windows

      set USE_CLOUD_SQL_AUTH_PROXY=true
    
  4. Führen Sie die Django-Migrationen aus, um Ihre Modelle und Assets einzurichten:

    python manage.py makemigrations
    python manage.py makemigrations polls
    python manage.py migrate
    python manage.py collectstatic
    
  5. Starten Sie den Django-Webserver:

    python manage.py runserver
    
  6. Wechseln Sie in Ihrem Browser zu 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.

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

Admin-Konsole von Django verwenden

Für die Anmeldung in der Admin-Konsole von Django ist ein Superuser erforderlich. Da Sie eine lokal zugängliche Verbindung zur Datenbank haben, können Sie Verwaltungsbefehle ausführen:

  1. Erstellen Sie einen Superuser: Sie werden aufgefordert, einen Nutzernamen, eine E-Mail-Adresse und ein Passwort einzugeben.

    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.

  4. Melden Sie sich mit dem Nutzernamen und dem Passwort an, die Sie beim Ausführen von createsuperuser verwendet haben.

App in der App Engine-Standardumgebung bereitstellen

Wenn alle Sicherungsdienste eingerichtet und die Anwendung lokal getestet wurden, können Sie die Anwendung nun für die App Engine-Standardumgebung bereitstellen:

  1. Laden Sie die Anwendung mit dem folgenden Befehl hoch. Dadurch wird die Anwendung wie in app.yaml beschrieben bereitgestellt und die neu bereitgestellte Version als Standardversion festgelegt. Dadurch wird der gesamte neue Traffic verarbeitet:
    gcloud app deploy
  2. Bestätigen Sie die Einstellungen, indem Sie bei Aufforderung "yes" eingeben.
  3. Warten Sie auf die Nachricht, dass das Update abgeschlossen ist.

Bereitgestellte Anwendung ausführen

Die App wurde bereitgestellt und kann jetzt aufgerufen werden:

  • Öffnen Sie die bereitgestellte Website:

    gcloud app browse
    
  • Alternativ können Sie die URL aufrufen und manuell öffnen:

    gcloud app describe --format "value(defaultHostname)"
    

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

Anwendung aktualisieren

Wenn Sie die Anwendung aktualisieren möchten, nehmen Sie Änderungen am Code vor und führen Sie den Befehl gcloud app deploy noch einmal aus.

Mit dem Deployment wird eine neue Version der Anwendung erstellt und auf die 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.

Für die Produktion konfigurieren

Sie haben jetzt eine funktionierende Django-Bereitstellung, aber Sie können weitere Schritte ausführen, um sicherzustellen, dass Ihre Anwendung produktionsreif ist.

Debugging muss deaktiviert sein

Achten Sie darauf, dass die Variable DEBUG in mysite/settings.py auf False festgelegt ist. Dadurch wird verhindert, dass dem Nutzer detaillierte Fehlerseiten angezeigt werden, wodurch Informationen zu den Konfigurationen offengelegt werden können.

Berechtigungen für Datenbanknutzer einschränken

Alle Nutzer, die mit Cloud SQL erstellt werden, haben die Berechtigungen, die der Rolle cloudsqlsuperuser zugeordnet sind: CREATEROLE, CREATEDB und LOGIN.

Erstellen Sie den Nutzer manuell in PostgreSQL, um diese Berechtigungen für den Django-Datenbanknutzer nicht zu erhalten. Dazu müssen Sie das interaktive psql-Terminal installieren oder Cloud Shell verwenden, in dem das Tool vorinstalliert ist.

Console

  1. Aktivieren Sie Cloud Shell in der Cloud Console.

    Cloud Shell aktivieren

  2. Stellen Sie in Cloud Shell über das integrierte Terminal eine Verbindung zur Instanz INSTANCE_NAME her:

    gcloud sql connect INSTANCE_NAME --user postgres
    
  3. Geben Sie das Nutzerpasswort für Postgres ein.

    Sie verwenden jetzt psql. Die postgres=>-Eingabeaufforderung sollte nun angezeigt werden.

  4. Erstellen Sie einen Nutzer:

    CREATE USER DATABASE_USERNAME WITH PASSWORD 'DATABASE_PASSWORD';
    

    Ersetzen Sie PASSWORD durch ein zufälliges, eindeutiges Passwort.

  5. Gewähren Sie dem neuen Nutzer uneingeschränkte Rechte für die neue Datenbank:

    GRANT ALL PRIVILEGES ON DATABASE DATABASE_NAME TO DATABASE_USERNAME;
    
  6. Beenden Sie psql:

    \q
    

gcloud

  1. Starten Sie eine Verbindung zur SQL-Instanz:

    gcloud sql connect INSTANCE_NAME --user postgres
    

    Ersetzen Sie INSTANCE_NAME durch die erstellte Cloud SQL-Instanz.

  2. Geben Sie das Nutzerpasswort für Postgres ein.

    Sie verwenden jetzt psql. Die postgres=>-Eingabeaufforderung sollte nun angezeigt werden.

  3. Erstellen Sie einen Nutzer:

    CREATE USER DATABASE_USERNAME WITH PASSWORD 'DATABASE_PASSWORD';
    
  4. Gewähren Sie dem neuen Nutzer uneingeschränkte Rechte für die neue Datenbank:

    GRANT ALL PRIVILEGES ON DATABASE DATABASE_NAME TO DATABASE_USERNAME;
    
  5. Beenden Sie psql:

    \q
    

Den Code verstehen

Beispielanwendung

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

django-admin startproject mysite
python manage.py startapp polls

Die grundlegenden Ansichten, Modelle und Routenkonfigurationen werden aus Erste Django-Anwendung schreiben (Teil 1 und Teil 2) kopiert.

Secrets aus Secret Manager

Die Datei settings.py enthält Code, der mit der Secret Manager Python API die neueste Version des benannten Secrets abruft und sie mithilfe von django-environ in die Umgebung abruft:

env = environ.Env(DEBUG=(bool, False))
env_file = os.path.join(BASE_DIR, ".env")

if os.path.isfile(env_file):
    # Use a local secret file, if provided

    env.read_env(env_file)
# ...
elif os.environ.get("GOOGLE_CLOUD_PROJECT", None):
    # Pull secrets from Secret Manager
    project_id = os.environ.get("GOOGLE_CLOUD_PROJECT")

    client = secretmanager.SecretManagerServiceClient()
    settings_name = os.environ.get("SETTINGS_NAME", "django_settings")
    name = f"projects/{project_id}/secrets/{settings_name}/versions/latest"
    payload = client.access_secret_version(name=name).payload.data.decode("UTF-8")

    env.read_env(io.StringIO(payload))
else:
    raise Exception("No local .env or GOOGLE_CLOUD_PROJECT detected. No secrets found.")

Mit dem Secret werden mehrere Secret-Werte gespeichert, um die Anzahl der zu konfigurierenden Secrets zu reduzieren.

Lokale Secret-Überschreibungen

Wenn eine Datei .env im lokalen Dateisystem gefunden wird, wird sie anstelle des Werts aus Secret Manager verwendet. Das lokale Erstellen einer .env-Datei kann bei lokalen Tests hilfreich sein (z.B. lokale Entwicklung für eine SQLite-Datenbank oder andere lokale Einstellungen).

Datenbankverbindung

Die Datei settings.py enthält die Konfiguration für Ihre SQL-Datenbank. Wenn Sie USE_CLOUD_SQL_AUTH_PROXY festlegen, wird die Einstellung DATABASES geändert, um die Verwendung des Cloud SQL Auth-Proxys abzuleiten.

# Use django-environ to parse the connection string
DATABASES = {"default": env.db()}

# If the flag as been set, configure to use proxy
if os.getenv("USE_CLOUD_SQL_AUTH_PROXY", None):
    DATABASES["default"]["HOST"] = "127.0.0.1"
    DATABASES["default"]["PORT"] = 5432

Gehosteter statischer Inhalt

Die Datei app.yaml enthält Konfigurationsinformationen für die Bereitstellung in App Engine. Die Datei app.yaml 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

Wenn die Anwendung lokal ausgeführt wird und DEBUG aktiviert ist, werden diese Dateien lokal von Django bereitgestellt:

from django.conf import settings
from django.conf.urls.static import static
from django.contrib import admin
from django.urls import include, path

urlpatterns = [
    path("", include("polls.urls")),
    path("admin/", admin.site.urls),
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

Bereinigen

Damit Ihrem Google Cloud-Konto die in dieser Anleitung verwendeten Ressourcen nicht in Rechnung gestellt werden, löschen Sie entweder das Projekt, das die Ressourcen enthält, oder Sie behalten das Projekt und löschen die einzelnen Ressourcen.

Projekt löschen

  1. Wechseln Sie in der Cloud Console zur Seite Ressourcen verwalten.

    Zur Seite „Ressourcen verwalten“

  2. Wählen Sie in der Projektliste das Projekt aus, das Sie löschen möchten, und klicken Sie dann auf Löschen.
  3. Geben Sie im Dialogfeld die Projekt-ID ein und klicken Sie auf Shut down (Beenden), um das Projekt zu löschen.

Nächste Schritte