Regions-ID
REGION_ID
ist ein abgekürzter Code, den Google anhand der Region zuweist, die Sie beim Erstellen Ihrer Anwendung ausgewählt haben. Der Code bezieht sich nicht auf ein Land oder eine Provinz, auch wenn einige Regions-IDs häufig verwendeten Länder- und Provinzcodes ähneln können. Bei Anwendungen, die nach Februar 2020 erstellt wurden, ist REGION_ID.r
in den App Engine-URLs enthalten. Bei Anwendungen, die vor diesem Datum erstellt wurden, ist die Regions-ID in der URL optional.
Hier erfahren Sie, wie Sie eine Anwendung in App Engine mit PHP 7.4 oder 8.1 erstellen. Mit der hier verwendeten Beispielanwendung können Nutzer Titel, Autoren, Beschreibungen, Erscheinungsdatum und Bilder ihrer Lieblingsbücher auf einer Webseite veröffentlichen. Die Anwendung speichert die Textdaten in einer Cloud SQL-Datenbank und die Bilder in einem Cloud Storage-Bucket.
Inhaltsverzeichnis
Hinweise
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Build API.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Build API.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
- Installieren Sie Composer, das PHP-Tool zur Abhängigkeitsverwaltung. Sie müssen Composer global auf Linux- und Mac OS X-Systemen installieren.
Beispielanwendung herunterladen
Untersuchen Sie den Code in GitHub.
Laden Sie die Anwendung herunter oder klonen Sie sie.
git clone https://github.com/GoogleCloudPlatform/php-docs-samples.git
Alternativ können Sie auch das Beispiel als Zip-Datei herunterladen und diese dann extrahieren.
Rufen Sie das Verzeichnis
getting-started
auf.cd php-docs-samples/appengine/standard/getting-started
Abhängigkeiten mit composer.json angeben
Die Anwendung verwendet einen Front-Controller zur Weiterleitung von Anfragen. Der Beispielcode in diesem Leitfaden verwendet zur Verarbeitung von HTTP-Anfragen das Slim-Framework. Sie können jedoch auch ein Web-Framework Ihrer Wahl einsetzen.
Öffnen Sie die Datei
composer.json
, um alle direkten Abhängigkeiten zu prüfen:Führen Sie den folgenden Befehl aus, um die Abhängigkeiten zu installieren und eine
composer.lock
-Datei zu erstellen:composer install
Die Datei
composer.lock
unterstützt Ihre Anwendung dabei, dieselben Versionen der Pakete abzurufen, die Sie in mehreren Builds und Umgebungen verwenden.
Anwendung initialisieren und Front-Controller definieren
Die Datei index.php
initialisiert die Anwendung und leitet alle Anfragen an die in der ./src/controllers.php
-Datei definierten Controller weiter.
Weitere Informationen zur Verarbeitung von Anfragen finden Sie unter Anwendungsstart und Anfrageverarbeitung.
In Google Cloud-Dienste einbinden
App Engine erfordert die Einbindung von Anwendungen in externe Systeme zur Datenspeicherung. Die Beispielanwendung speichert Textdaten in Cloud SQL und Bilder in Cloud Storage.
Weitere Informationen zu allen Google Cloud-Speicheroptionen finden Sie auf der Seite "Speicheroption auswählen".
Cloud SQL verwenden
In der Beispielanwendung veröffentlichen Nutzer Bücher auf einer Webseite. Die Anwendung verwendet eine Cloud SQL-Datenbank, um Titel, Autoren, Erscheinungsdatum und Beschreibungen der Bücher zu speichern.
Sie müssen eine Cloud SQL-Instanz erstellen, um Inhalte zur Datenbank der Anwendung hinzuzufügen.
Cloud SQL-Instanz erstellen
Verwenden Sie die gcloud CLI, um eine Cloud SQL-Instanz zu erstellen:
gcloud sql instances create INSTANCE_NAME --tier=MACHINE_TYPE --region=REGION
Wenn Sie Ihre Instanz beispielsweise bookshelf
nennen und den Maschinentyp db-n1-standard-2
in der zentralen Region der USA verwenden möchten:
gcloud sql instances create bookshelf --tier=db-n1-standard-2 --region=us-central1
MySQL-Root-Nutzer einrichten
Sie können die gcloud CLI verwenden, um das Passwort des Root-Nutzers Ihrer Cloud SQL-Instanz festzulegen:
gcloud sql users set-password USER --host=HOST --instance=INSTANCE_NAME --password=PASSWORD
Wenn Sie beispielsweise das Passwort des Root-Nutzers für die Cloud SQL-Instanz bookshelf
auf passw0rd!
setzen möchten:
gcloud sql users set-password root --host=% --instance=bookshelf --password=passw0rd!
Datenbank auf der Cloud SQL-Instanz einrichten
So erstellen Sie eine MySQL-Datenbank, um Autoren, Titel, Erscheinungsdatum und Beschreibungen der Bücher zu speichern:
gcloud sql databases create DATABASE_NAME --instance=INSTANCE_NAME
Wenn Sie beispielsweise eine Datenbank namens book-data
auf der Cloud SQL-Instanz bookshelf
erstellen möchten:
gcloud sql databases create book-data --instance=bookshelf
Verbindung zur Cloud SQL-Datenbank herstellen
Die Beispielanwendung verwendet PDO von PHP, um mit der MySQL-Datenbank zu interagieren.
In diesem Leitfaden werden diese Parameter unter Anwendung konfigurieren als Umgebungsvariablen angegeben.
Einzelne Zeile abfragen
Klickt ein Nutzer auf ein Buch, fragt die Anwendung die Datenbank ab und gibt eine einzelne Zeile mit dem Titel, dem Autor, dem Erscheinungsdatum und der Beschreibung des Buchs zurück.
Cloud Storage verwenden
Die Beispielanwendung nutzt Cloud Storage, um die Bilder zu speichern. Hierbei handelt es sich um Binärdateien, die von Nutzern hochgeladen werden.
Cloud Storage-Bucket erstellen
Cloud Storage verwendet Buckets, um den Zugriff auf Daten zu organisieren und zu steuern.
Verwenden Sie die gcloud CLI, um einen Cloud Storage-Bucket zu erstellen:
gcloud storage buckets create gs://BUCKET_NAME/ --location=BUCKET_REGION
Wenn Sie beispielsweise einen Bucket namens picture-storage
in der Region us-central1
erstellen möchten, müssen Sie so vorgehen:
gcloud storage buckets create gs://picture-storage/ --location=us-central1
War die Erstellung erfolgreich, wird Folgendes ausgegeben:
Creating gs://BUCKET_NAME/
Wenn nicht, ist folgende Ausgabe möglich:
ServiceException: 409 Bucket BUCKET_NAME already exists
Versuchen Sie es noch einmal mit einem anderen Bucket-Namen.
Projekt mit Cloud Storage-Bucket verbinden
Zur Verwendung von Cloud Storage müssen Sie die Cloud Storage-Bibliothek angeben.
Bilder speichern
Nachdem Sie einen Cloud Storage-Bucket erstellt und eine Verbindung hergestellt haben, können Sie Bilder speichern. Bilder können mit vordefinierten Access Control Lists (ACL) hochgeladen werden, um den Zugriff auf die Bilder zu steuern.
In der Beispielanwendung wird für hochgeladene Bilder die vordefinierte ACL public-read
verwendet. Die öffentliche URL kann über die Eigenschaft mediaLink
Ihres Cloud Storage-Objekts aufgerufen werden. Sie können diese URL in einem HTML-Bild-Tag verwenden.
Eine Anleitung zum Lesen eines privaten Cloud Storage-Objekts finden Sie auf der Seite Objekte herunterladen.
Images löschen
Löscht ein Nutzer ein Buch aus der Anwendung, wird das Bild aus dem Cloud Storage-Bucket durch folgenden Code entfernt.
App konfigurieren
Die Konfiguration von Anwendungen für die Ausführung in App Engine erfolgt mithilfe der Datei app.yaml. Diese enthält Angaben zur Laufzeit, die Umgebungsvariablen und andere Einstellungen der Anwendung.
Bei einer Anwendung mit minimalen Konfigurationsanforderungen kann die Datei app.yaml
aus einer einzelnen Zeile bestehen:
PHP 8.1
runtime: php81
PHP 7.4
runtime: php74
Sie können der Konfigurationsdatei app.yaml
weitere Konfigurationsoptionen und anwendungsspezifische Umgebungsvariablen hinzufügen.
Umgebungsvariablen hinzufügen
In der Datei app.yaml
wird die Umgebungskonfiguration für die App bereitgestellt. Das in diesem Handbuch verwendete Bookshelf-Beispiel benötigt eine Konfiguration, die als Umgebungsvariablen bereitgestellt wird, um zu wissen, wie eine Verbindung zur richtigen Cloud SQL-Instanz und zum Cloud Storage-Bucket hergestellt wird.
Zum Bereitstellen der Anwendung müssen Sie die Konfigurationsdatei app.yaml
bearbeiten:
Legen Sie die Variable
GOOGLE_STORAGE_BUCKET
auf den Namen des Cloud Storage-Buckets fest.Legen Sie die Variable
CLOUDSQL_CONNECTION_NAME
auf app-name:region:instance-name fest. Sie können die benötigten Details mit dem folgendengcloud
-Befehl abrufen:gcloud sql instances describe INSTANCE
Bei einer Cloud SQL-Instanz der zweiten Generation hat
CLOUDSQL_CONNECTION_NAME
das folgende Format:your_project_name:your_region:your_instance
Entfernen Sie das Kommentarzeichen und legen Sie die Variable
CLOUD_SQL_DATABASE_NAME
fest, wenn die von Ihnen erstellte Datenbank einen anderen Namen alsbookshelf
hat. In diesem Beispiel wurde die Datenbank mit dem Namenbook-data
erstellt.Prüfen Sie Ihre
app.yaml
-Datei, die in etwa so aussehen sollte:
PHP 8.1
runtime: php81
env_variables:
GOOGLE_STORAGE_BUCKET: picture-storage
CLOUDSQL_CONNECTION_NAME: sample-application:us-central1:bookshelf
CLOUDSQL_USER: root
CLOUDSQL_PASSWORD: passw0rd!
CLOUDSQL_DATABASE_NAME: book-data
PHP 7.4
runtime: php74
env_variables:
GOOGLE_STORAGE_BUCKET: picture-storage
CLOUDSQL_CONNECTION_NAME: sample-application:us-central1:bookshelf
CLOUDSQL_USER: root
CLOUDSQL_PASSWORD: passw0rd!
CLOUDSQL_DATABASE_NAME: book-data
Anwendung bereitstellen
Gehen Sie zum Bereitstellen der Anwendung zum Verzeichnis
getting-started
und führen Sie den folgenden Befehl aus:gcloud app deploy
Wenn Sie aufgefordert werden, einen Standort einzugeben, wählen Sie einen in der Nähe der Anwendungsnutzer aus. App Engine ist regional. Das bedeutet, dass sich die Infrastruktur, in der die Anwendung ausgeführt wird, in einer bestimmten geografischen Region befindet. In diesem Leitfaden wurde beispielsweise die Region
us-central1
verwendet, um die zugehörigen Speicherressourcen bereitzustellen. Stellen Sie die Anwendung in der gleichen Region bereit, um die Latenz zu verringern und die Leistung zu verbessern.Ein Standort in der Nähe Ihrer Nutzer ist in der Regel eine gute Wahl. In einigen Fällen kann es jedoch von Vorteil sein, die Anwendung in der Nähe ihrer Ressourcen bereitzustellen. Informationen hierzu finden Sie unter App Engine-Standorte und Ressourcenstandorte.
Rufen Sie die Anwendung auf:
gcloud app browse
Bereinigen
Löschen Sie Ihr Google Cloud-Projekt, um die Abrechnung für die im Projekt verwendeten Ressourcen zu beenden.
Löschen Sie das Projekt mit folgendem Befehl:
gcloud projects delete PROJECT_ID
Prüfen Sie dann, ob das Projekt gelöscht wurde. Listen Sie dafür Ihre Projekte folgendermaßen auf:
gcloud projects list
Weitere Informationen
- Anleitung zum Authentifizieren von Nutzern
- Schreiben von Anwendungsprotokollen und Interpretieren von Systemprotokollen (siehe Anwendungsprotokolle lesen und schreiben)
- Nach Ihrer Anfrage mithilfe von Cloud Tasks asynchron im Hintergrund arbeiten
- Mehr zur Anfrageverarbeitung und zum Anfragerouting
- Ausführliche Informationen zur Funktionsweise von App Engine finden Sie unter PHP-Laufzeitumgebung.