ID regione
REGION_ID
è un codice abbreviato assegnato da Google
in base alla regione selezionata al momento della creazione dell'app. Il codice non
corrispondono a un paese o a una provincia, anche se potrebbero essere visualizzati alcuni ID regione
in modo simile ai codici paese e provincia 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 titoli, autori descrizioni, date di pubblicazione e immagini dei loro libri preferiti a una pagina web. L'app archivia i dati testuali in un database Cloud SQL e le immagini in un nel bucket Cloud Storage.
Struttura della guida
Prima di iniziare
- 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
- Installa Composer, lo strumento di gestione delle dipendenze PHP. Devi installare Composer a livello globale su sistemi Linux e Mac OS X.
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, scarica l'esempio come file ZIP ed estrailo.
Vai alla directory
getting-started
.cd php-docs-samples/appengine/standard/getting-started
Specifica le dipendenze con Composer.json
L'app utilizza un front controller per instradare le richieste. Il codice campione in questa guida utilizza il framework sottile, ma sei libero di usare il framework web che preferisci.
Apri il file
composer.json
per esaminare tutte le dipendenze dirette:Per installare le dipendenze e produrre un file
composer.lock
, esegui il comando seguente comando:composer install
Il file
composer.lock
consente alla tua app di recuperare le stesse versioni dei pacchetti che utilizzi in più build ed ambienti.
Inizializzare l'app e definire i front controller
Il file index.php
inizializza l'app e inoltra tutte le richieste ai controller
definita nel file ./src/controllers.php
.
Per saperne di più sulla gestione delle richieste, leggi le informazioni sull'avvio dell'applicazione e sulla gestione delle richieste.
Integrazione con i servizi Google Cloud
App Engine richiede l'integrazione delle app con sistemi esterni per l'archiviazione dei dati. L'app di esempio archivia dati di testo su Cloud SQL e immagini su Cloud Storage.
Consulta la pagina Scelta di un'opzione di archiviazione per tutte le opzioni di archiviazione di 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.
Dovrai creare un'istanza Cloud SQL prima di aggiungere contenuti al del database dell'app.
Creazione di 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 assegnare il nome bookshelf
all'istanza e utilizzare il tipo di macchina db-n1-standard-2
nella regione centrale degli Stati Uniti:
gcloud sql instances create bookshelf --tier=db-n1-standard-2 --region=us-central1
Configurazione dell'utente root MySQL
Puoi utilizzare gcloud CLI per impostare la password dell'utente root della tua 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'account Cloud SQL
dall'istanza bookshelf
a passw0rd!
:
gcloud sql users set-password root --host=% --instance=bookshelf --password=passw0rd!
Configurare un database nell'istanza Cloud SQL
Per archiviare autori, titoli, data di pubblicazione e 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
nell'istanza Cloud SQL bookshelf
:
gcloud sql databases create book-data --instance=bookshelf
Connessione 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 Configurazione dell'app.
Esecuzione di query su una singola riga
Quando l'utente fa clic su un libro, l'app interroga il database e restituisce un singolo riga che include titolo, autore, data di pubblicazione e descrizione del libro.
Utilizzo di Cloud Storage
L'app di esempio utilizza Cloud Storage per archiviare le immagini, ovvero file binari, caricati dagli utenti.
Creazione di 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 ha esito positivo, verrà visualizzato il seguente output:
Creating gs://BUCKET_NAME/
In caso contrario, potresti visualizzare il seguente output:
ServiceException: 409 Bucket BUCKET_NAME already exists
Riprova utilizzando un altro nome per il bucket.
Collegamento di un progetto a un bucket Cloud Storage
Per utilizzare Cloud Storage, devi specificare Libreria Cloud Storage.
Archiviazione delle immagini
Ora che hai creato un bucket Cloud Storage e hai configurato una connessione, puoi archiviare le immagini. Le immagini possono essere caricate elenchi di controllo dell'accesso (ACL) predefiniti per controllare l'accesso alle immagini.
In questa app di esempio, le immagini caricate avranno l'ACL predefinitapublic-read
. Puoi 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.
Eliminazione delle immagini
Quando un utente elimina un libro dall'app, questo codice rimuove l'immagine dal nel bucket Cloud Storage.
Configurazione dell'applicazione
Puoi configurare le applicazioni per l'esecuzione su App Engine utilizzando un file app.yaml, che specifica il runtime dell'applicazione, le variabili di ambiente e altre impostazioni.
Per un'app con requisiti di configurazione minimi, il file app.yaml
può essere un
riga singola:
PHP 8.1
runtime: php81
PHP 7.4
runtime: php74
Puoi aggiungere altre opzioni di configurazione e variabili di ambiente specifiche per l'applicazione nel file di configurazione app.yaml
.
Aggiunta di variabili di ambiente
Il file app.yaml
è il luogo in cui la configurazione dell'ambiente viene fornita all'app.
Per l'esempio di scaffale utilizzato in questa guida è necessario fornire una configurazione
come variabili di ambiente per sapere come connetterti
dell'istanza e del bucket Cloud Storage.
Per eseguire il deployment dell'app, devi modificare il file di configurazione app.yaml
:
Imposta la variabile
GOOGLE_STORAGE_BUCKET
sul nome del tuo bucket Cloud Storage.Imposta la variabile
CLOUDSQL_CONNECTION_NAME
su app-name:region:instance-name Puoi recuperare i dettagli necessari utilizzando il seguente comandogcloud
:gcloud sql instances describe INSTANCE
Per un'istanza Cloud SQL di seconda generazione,
CLOUDSQL_CONNECTION_NAME
avrà il seguente formato:your_project_name:your_region:your_instance
Rimuovi il commento e imposta la variabile
CLOUD_SQL_DATABASE_NAME
se il database che hai creato ha un nome diverso dabookshelf
. In questo esempio, il database è stato creato con il nomebook-data
.Controlla il file
app.yaml
, che dovrebbe avere il seguente aspetto:
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-started
e esegui questo comando:gcloud app deploy
Quando viene visualizzata la richiesta di posizione, scegli una posizione vicino agli utenti dell'app. App Engine è regionale, il che significa che l'infrastruttura che esegue si trova in una specifica area geografica. Ad esempio, questo tutorial ha utilizzato la regione
us-central1
per 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, la scelta di una posizione vicina agli utenti è una buona idea, ma quando si esegue il deployment di un'applicazione vicino al punto in cui si trovano le sue risorse è consigliabile. Scopri di più sulle località di App Engine e sulle località delle risorse disponibili.
Visualizza l'applicazione:
gcloud app browse
Pulizia
Elimina il progetto Google Cloud per interrompere la fatturazione delle risorse utilizzate al suo interno.
Per eliminare il progetto utilizzando il comando seguente:
gcloud projects delete PROJECT_ID
Per verificare che il progetto sia stato eliminato, elenca i tuoi 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 un'attività in background in modo asincrono dopo la richiesta utilizzando Cloud Tasks.
- Scopri di più sulla gestione delle richieste e sul routing delle richieste.
- Per approfondire il funzionamento di App Engine, consulta l'ambiente di runtime PHP.