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
-
Melden Sie sich bei Ihrem Google-Konto an.
Wenn Sie noch kein Konto haben, melden Sie sich hier für ein neues Konto an.
-
Wählen Sie in der Google Cloud Console auf der Seite der Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.
-
Die Abrechnung für das Cloud-Projekt muss aktiviert sein. So prüfen Sie, ob die Abrechnung für Ihr Projekt aktiviert ist.
- Aktivieren Sie die Cloud SQL Admin API.
- 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.
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
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
- Laden Sie den Proxy herunter:
wget https://dl.google.com/cloudsql/cloud_sql_proxy.linux.amd64 -O cloud_sql_proxy
- Machen Sie den Proxy ausführbar:
chmod +x cloud_sql_proxy
Linux 32-Bit
- Laden Sie den Proxy herunter:
wget https://dl.google.com/cloudsql/cloud_sql_proxy.linux.386 -O cloud_sql_proxy
- Machen Sie den Proxy ausführbar:
chmod +x cloud_sql_proxy
macOS 64-Bit
- Laden Sie den Proxy herunter:
curl -o cloud_sql_proxy https://dl.google.com/cloudsql/cloud_sql_proxy.darwin.amd64
- Machen Sie den Proxy ausführbar:
chmod +x cloud_sql_proxy
macOS 32-Bit
- Laden Sie den Proxy herunter:
curl -o cloud_sql_proxy https://dl.google.com/cloudsql/cloud_sql_proxy.darwin.386
- 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 incloud_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 incloud_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
- <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
</a>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. - 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
- 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.
- Erstellen Sie einen Cloud SQL-Nutzer und eine Cloud SQL-Datenbank:
Cloud Console
-
Erstellen Sie eine neue Datenbank mit der Cloud Console für die Cloud SQL-Instanz
polls-instance
. Sie können beispielsweise den Namenpolls
vergeben. - Erstellen Sie mithilfe der Cloud Console einen neuen Nutzer für die Cloud SQL-Instanz
polls-instance
.
Postgres-Client
-
Installieren Sie den Postgres-Client in einem neuen Befehlszeilentab.
sudo apt-get install postgresql
-
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
-
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];
-
Erstellen Sie eine neue Datenbank mit der Cloud Console für die Cloud SQL-Instanz
Datenbankeinstellungen konfigurieren
Öffnen Sie
mysite/settings.py
zum Bearbeiten.So verwenden Sie MySQL anstelle von PostgreSQL:
- Folgen Sie der Anleitung in den Dateikommentaren, um den MySQL-Datenbanktreiber zu aktivieren.
- Öffnen Sie
requirements.txt
zum Bearbeiten und folgen Sie der Anleitung, um den Abhängigkeiten den MySQL-Datenbanktreiber hinzuzufügen.
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.Rufen Sie die Werte für Ihre Instanz ab:
gcloud sql instances describe [YOUR_INSTANCE_NAME]
Kopieren Sie aus der Ausgabe den Wert
connectionName
, der im nächsten Schritt verwendet werden soll.Setzen Sie
<your-cloudsql-connection-string>
aufconnectionName
aus dem vorherigen Schritt.
Schließen und speichern Sie
settings.py
.
App auf lokalem Computer ausführen
Zum Ausführen der Django-App auf Ihrem lokalen Computer richten Sie eine Python-Entwicklungsumgebung ein, einschließlich Python,
pip
undvirtualenv
.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
Führen Sie die Django-Migrationen aus, um die Modelle einzurichten:
python manage.py makemigrations python manage.py makemigrations polls python manage.py migrate
Starten Sie einen lokalen Webserver:
python manage.py runserver
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.
Drücken Sie
Control+C
, um den lokalen Webserver zu beenden.
Django-Verwaltungskonsole verwenden
Erstellen Sie einen Superuser: Sie müssen einen Nutzernamen und ein Passwort festlegen.
python manage.py createsuperuser
Starten Sie einen lokalen Webserver:
python manage.py runserver
Wechseln Sie in Ihrem Browser zu http://localhost:8000/admin.
http://localhost:8000/admin
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.
Erstellen Sie einen Cloud Storage-Bucket:
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>
Sammeln Sie alle lokalen statischen Inhalte in einem Ordner:
python manage.py collectstatic
Laden Sie die statischen Inhalte zu Cloud Storage hoch:
gsutil rsync -R static/ gs://<your-gcs-bucket>/static
Bearbeiten Sie "settings.py":
Öffnen Sie
mysite/settings.py
zum Bearbeiten.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/
Schließen und speichern Sie
settings.py
.
app.yaml bearbeiten
Öffnen Sie
app.yaml
zum Bearbeiten.Führen Sie den folgenden Befehl über die Befehlszeile aus:
gcloud sql instances describe [YOUR_INSTANCE_NAME]
Kopieren Sie aus der Ausgabe den Wert
connectionName
, der im nächsten Schritt verwendet werden soll.Ersetzen Sie
<your-cloudsql-connection-string>
durchconnectionName
aus dem vorherigen Schritt.Schließen und speichern Sie
app.yaml
.
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.
Geben Sie im Webbrowser die folgende URL ein:
https://PROJECT_ID.REGION_ID.r.appspot.com
Ersetzen Sie Folgendes:
PROJECT_ID
: Ihre Google Cloud-Projekt-IDREGION_ID
: Code, der Ihrer Anwendung von App Engine zugewiesen wird
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:Legen Sie in der Datei
settings.py
den Wert vonSTATIC_URL
fest, um anzugeben, wie die App statischen Inhalt bereitstellt:Die Datei
app.yaml
enthält Konfigurationsinformationen für die Bereitstellung in der flexiblen Umgebung: