ID regione
L'elemento REGION_ID è un codice abbreviato che Google assegna in base alla regione selezionata quando crei l'app. Il codice non corrisponde a un paese o a una provincia, anche se alcuni ID regione possono sembrare simili ai codici di paesi e province di uso comune. Per le app create dopo
febbraio 2020, REGION_ID.r è incluso negli
URL di App Engine. Per le app esistenti create prima di questa data, l'
ID regione è facoltativo nell'URL.
Scopri di più sugli ID regione.
Scopri come creare un'app in App Engine utilizzando PHP versione 7.4 o 8.1. L'app di esempio consente agli utenti di pubblicare i titoli, gli autori, le descrizioni, la data di pubblicazione e le immagini dei loro libri preferiti su una pagina web. L'app archivia i dati di testo in un database Cloud SQL e le immagini in un bucket Cloud Storage.
Struttura della guida
Prima di iniziare
- Accedi al tuo Google Cloud account. Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti senza costi per l'esecuzione, il test e il deployment dei workload.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Cloud Build API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
Installa Google Cloud CLI.
-
Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.
-
Per inizializzare gcloud CLI, esegui questo comando:
gcloud init -
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Cloud Build API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
Installa Google Cloud CLI.
-
Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.
-
Per inizializzare gcloud CLI, esegui questo comando:
gcloud init - Installa Composer, lo strumento di gestione delle dipendenze PHP. Devi installare Composer a livello globale sui sistemi Linux e Mac OS X.
- A causa delle modifiche al comportamento predefinito di utilizzo dei service account di Cloud Build nei nuovi progetti e delle modifiche alle policy dell'organizzazione secure-by-default, potresti dover concedere ruoli aggiuntivi al account di servizio di deployment. Per ulteriori informazioni sulla concessione di ruoli specifici, consulta la guida alla risoluzione dei problemi.
Scarica l'app di esempio
Esplora il codice su GitHub
Scarica o clona l'app.
git clone https://github.com/GoogleCloudPlatform/php-docs-samples.git
In alternativa puoi scaricare l'esempio come file ZIP ed estrarlo.
Vai alla directory
getting-started.cd php-docs-samples/appengine/standard/getting-started
Specifica le dipendenze con composer.json
L'app utilizza un controller front-end per instradare le richieste. Il codice campione in questa guida utilizza Slim Framework, ma puoi utilizzare un framework web a tua scelta.
Apri il file
composer.jsonper esaminare tutte le dipendenze dirette:Per installare le dipendenze e generare un file
composer.lock, esegui questo comando:composer installIl file
composer.lockaiuta l'app a recuperare le stesse versioni dei pacchetti utilizzati in più build e ambienti.
Inizializza l'app e definisci i controller front-end
Il file index.php inizializza l'app e inoltra tutte le richieste ai controller definiti nel file ./src/controllers.php.
Per ulteriori informazioni sulla gestione delle richieste, consulta Avvio dell'applicazione e gestione delle richieste.
Esegui l'integrazione con i servizi Google Cloud
App Engine richiede che le app si integrino con sistemi esterni per l'archiviazione dei dati. L'app di esempio archivia i dati di testo su Cloud SQL e le immagini su Cloud Storage.
Per tutte le opzioni di archiviazione, consulta la pagina Scelta di un'opzione di archiviazione per tutte le opzioni di archiviazione Google Cloud .
Utilizzo di Cloud SQL
Nell'app di esempio, gli utenti pubblicano libri su una pagina web. L'app utilizza un database Cloud SQL per archiviare i titoli, gli autori, la data di pubblicazione e le descrizioni dei libri.
Prima di aggiungere contenuti al database dell'app, devi creare un'istanza Cloud SQL.
Crea un'istanza Cloud SQL
Utilizza gcloud CLI per creare un'istanza Cloud SQL:
gcloud sql instances create INSTANCE_NAME --tier=MACHINE_TYPE --region=REGION
Ad esempio, se vuoi chiamare l'istanza bookshelf e utilizzare il tipo di macchina db-n1-standard-2 nella regione Stati Uniti centro:
gcloud sql instances create bookshelf --tier=db-n1-standard-2 --region=us-central1
Configura l'utente root MySQL
Puoi utilizzare gcloud CLI per impostare la password dell'utente root dell'istanza Cloud SQL:
gcloud sql users set-password USER --host=HOST --instance=INSTANCE_NAME --password=PASSWORD
Ad esempio, se vuoi impostare la password dell'utente root per l'istanza Cloud SQL bookshelf su passw0rd!:
gcloud sql users set-password root --host=% --instance=bookshelf --password=passw0rd!
Configura un database sull'istanza Cloud SQL
Per archiviare gli autori, i titoli, la data di pubblicazione e le descrizioni dei libri, crea un database MySQL:
gcloud sql databases create DATABASE_NAME --instance=INSTANCE_NAME
Ad esempio, se vuoi creare un database denominato book-data sull'istanza Cloud SQL bookshelf:
gcloud sql databases create book-data --instance=bookshelf
Connettiti al database Cloud SQL
L'app di esempio utilizza PDO di PHP per interagire con il database MySQL.
Per questo tutorial, questi parametri sono specificati come variabili di ambiente di seguito in Configura l'app.
Esegui una query su una singola riga
Quando l'utente fa clic su un libro, l'app esegue una query sul database e restituisce una singola riga che include il titolo, l'autore, la data di pubblicazione e la descrizione del libro.
Utilizzo di Cloud Storage
L'app di esempio utilizza Cloud Storage per archiviare le immagini, che sono file binari, caricati dagli utenti.
Crea un bucket Cloud Storage
Cloud Storage utilizza i bucket per organizzare e controllare l'accesso ai dati.
Utilizza gcloud CLI per creare un bucket Cloud Storage:
gcloud storage buckets create gs://BUCKET_NAME/ --location=BUCKET_REGION
Ad esempio, se vuoi creare un bucket denominato picture-storage nella regione us-central1:
gcloud storage buckets create gs://picture-storage/ --location=us-central1
Se l'operazione riesce, viene visualizzato il seguente output:
Creating gs://BUCKET_NAME/
Se l'operazione non riesce, potresti visualizzare il seguente output:
ServiceException: 409 Bucket BUCKET_NAME already exists
Riprova utilizzando un altro nome per il bucket.
Collega un progetto a un bucket Cloud Storage
Per utilizzare Cloud Storage, devi specificare la libreria Cloud Storage.
Archivia le immagini
Ora che hai creato un bucket Cloud Storage e configurato una connessione, puoi archiviare le immagini. Le immagini possono essere caricate con elenchi di controllo dell'accesso (ACL) predefiniti per controllare l'accesso alle immagini.
In questa app di esempio, le immagini caricate avranno l'ACL predefinito public-read. È possibile accedere all'URL pubblico tramite la proprietà mediaLink dell'oggetto Cloud Storage. Puoi utilizzare questo URL in un tag immagine HTML.
Per istruzioni su come leggere un oggetto Cloud Storage privato, consulta la pagina Download di oggetti.
Elimina le immagini
Quando un utente elimina un libro dall'app, questo codice rimuove l'immagine dal bucket Cloud Storage.
Configura l'app
Configura le applicazioni da eseguire su App Engine utilizzando un file app.yaml, che specifica il runtime, le variabili di ambiente e altre impostazioni dell'applicazione.
Per un'app con requisiti di configurazione minimi, il file app.yaml può essere una singola riga:
PHP 8.1
runtime: php81
PHP 7.4
runtime: php74
Puoi aggiungere altre opzioni di configurazione e variabili di ambiente specifiche dell'applicazione nel file di configurazione app.yaml.
Aggiungi variabili di ambiente
Il file app.yaml è il punto in cui viene fornita la configurazione dell'ambiente all'app. L'esempio di scaffale utilizzato in questa guida richiede una configurazione fornita come variabili di ambiente per sapere come connettersi all'istanza Cloud SQL e al bucket Cloud Storage corretti.
Per eseguire il deployment dell'app, devi modificare il file di configurazione app.yaml:
Imposta la variabile
GOOGLE_STORAGE_BUCKETsul nome del bucket Cloud Storage.Imposta la variabile
CLOUDSQL_CONNECTION_NAMEsu app-name:region:instance-name Puoi recuperare i dettagli necessari utilizzando il seguentegcloudcomando:gcloud sql instances describe INSTANCE
Per un'istanza Cloud SQL di seconda generazione,
CLOUDSQL_CONNECTION_NAMEavrà il seguente formato:your_project_name:your_region:your_instanceRimuovi il commento e imposta la variabile
CLOUD_SQL_DATABASE_NAMEse il database che hai creato ha un nome diverso dabookshelf. In questo esempio, il database è stato creato con il nomebook-data.Esamina il file
app.yaml, che dovrebbe avere un aspetto simile al seguente:
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
Implementazione dell'applicazione
Per eseguire il deployment dell'applicazione, vai alla directory
getting-starteded esegui questo comando:gcloud app deploy
Quando viene visualizzato il prompt della località, scegli una località vicina agli utenti dell'app. App Engine è regionale, pertanto l'infrastruttura che esegue l'app si trova in un'area geografica specifica. Ad esempio, questo tutorial ha utilizzato la regione
us-central1per eseguire il deployment delle risorse di archiviazione. Esegui il deployment dell'app nella stessa regione per ridurre la latenza e migliorare le prestazioni.In generale, è consigliabile scegliere una località vicina agli utenti, ma in alcuni casi è consigliabile eseguire il deployment dell'applicazione vicino alla località delle risorse. Scopri di più sulle località di App Engine e sulle località delle risorse disponibili.
Visualizza l'applicazione:
gcloud app browse
Pulizia
Elimina il progetto per interrompere la fatturazione delle risorse utilizzate al suo interno. Google Cloud
Per eliminare il progetto, utilizza questo comando:
gcloud projects delete PROJECT_ID
Per verificare che il progetto sia stato eliminato, elenca i progetti:
gcloud projects list
Passaggi successivi
- Scopri come autenticare gli utenti.
- Scopri di più sulla scrittura dei log delle applicazioni e sull'interpretazione dei log di sistema in Lettura e scrittura dei log delle applicazioni.
- Scopri come eseguire il lavoro in background in modo asincrono dopo la richiesta utilizzando Cloud Tasks.
- Scopri di più sulla gestione delle richieste e sull' instradamento delle richieste.
- Per un approfondimento sul funzionamento di App Engine, consulta l'articolo sull'ambiente di runtime PHP.