Molte app hanno bisogno di gestione della sessione per autenticazione e preferenze utente. Il framework Node.js Express viene fornito con un'implementazione basata sulla memoria per eseguire questa funzione. Tuttavia, questa implementazione non è adatta per un'app che può essere pubblicata da più istanze, perché la sessione registrata in un'istanza potrebbe essere diversa da altre. Questo tutorial mostra come gestire le sessioni su App Engine.
Obiettivi
- Scrivi l'app.
- Esegui l'app localmente.
- Eseguire il deployment dell'app su App Engine.
Costi
In questo documento utilizzi i seguenti componenti fatturabili di Google Cloud:
Per generare una stima dei costi basata sull'utilizzo previsto,
utilizza il Calcolatore prezzi.
Al termine delle attività descritte in questo documento, puoi evitare la fatturazione continua eliminando le risorse che hai creato. Per ulteriori informazioni, consulta la sezione Pulizia.
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 Firestore 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 Firestore API.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
Configurazione del progetto
Nella finestra del terminale, inizia in una directory a tua scelta e crea una nuova directory denominata
sessions
. Tutto il codice per questo tutorial è all'interno della directorysessions
.Passa alla directory
sessions
:cd sessions
Inizializza il file
package.json
:npm init .
Installa le dipendenze:
npm install \ --save @google-cloud/connect-firestore @google-cloud/firestore express express-session
Alla fine di questo tutorial, la struttura dei file finali è simile alla seguente:
sessions
├── app.yaml
├── index.js
└── package.json
Scrittura dell'app web
Questa app visualizza i saluti in diverse lingue per ogni utente. Gli utenti di ritorno vengono sempre accolti nella stessa lingua.
Prima che la tua app possa memorizzare le preferenze per un utente, devi conoscere un modo per memorizzare le informazioni sull'utente corrente in una sessione. Questa app di esempio utilizza Firestore per archiviare i dati della sessione.
Puoi utilizzare connect-firestore
, uno store compatibile con express-session
.
Nella finestra del terminale, crea un file denominato
index.js
con il seguente contenuto:
Il seguente diagramma illustra in che modo Firestore gestisce le sessioni per l'app App Engine.
Dopo aver impostato app.use(session)
, ogni richiesta ha una proprietà req.session
che puoi utilizzare per identificare gli utenti ricorrenti. I dati della sessione vengono archiviati in Firestore.
Eliminazione di sessioni
Connect-firestore
non elimina le sessioni vecchie o scadute. Puoi eliminare i dati della sessione nella console Google Cloud o implementare una strategia di eliminazione automatica. Se utilizzi soluzioni di archiviazione per sessioni come Memcache o Redis, le sessioni scadute vengono eliminate automaticamente.
Esecuzione locale
Nella finestra del terminale, installa le dipendenze per il progetto Google Cloud:
npm install
Avvia il server HTTP:
npm start
Visualizza l'app nel tuo browser web:
Cloud Shell
Nella barra degli strumenti di Cloud Shell, fai clic su Anteprima web e seleziona Anteprima sulla porta 8080.
Macchina locale
Nel browser, vai a
http://localhost:8080
Vedrai uno dei cinque saluti: "Ciao mondo", "Hallo Welt", "Hola mundo", "Salut le Monde" o "Ciao mondo". La lingua cambia se apri la pagina in un altro browser o in modalità di navigazione in incognito. Puoi visualizzare e modificare i dati della sessione nella console Google Cloud.
Per interrompere il server HTTP, premi
Control+C
nella finestra del terminale.
Deployment ed esecuzione su App Engine
Puoi utilizzare l'ambiente standard di App Engine per creare ed eseguire il deployment di un'app che può essere eseguita in modo affidabile con un carico elevato e con grandi quantità di dati.
Questo tutorial utilizza l'ambiente standard di App Engine per eseguire il deployment del server.
Nella finestra del terminale, crea un file
app.yaml
e copia quanto segue:Esegui il deployment dell'app su App Engine:
gcloud app deploy
Visualizza l'app pubblicata inserendo il seguente URL:
https://PROJECT_ID.REGION_ID.r.appspot.com
Sostituisci quanto segue:
PROJECT_ID
: l'ID del tuo progetto Google CloudREGION_ID
: un codice che App Engine assegna all'applicazione
Il saluto ora viene consegnato da un server web in esecuzione su un'istanza di App Engine.
Eseguire il debug dell'app
Se non riesci a connetterti all'app App Engine, controlla quanto segue:
- Verifica che i comandi di deployment di
gcloud
siano stati completati correttamente e che non abbiano restituito errori. Se si sono verificati errori (ad esempiomessage=Build failed
), correggili e prova a eseguire nuovamente il deployment dell'app App Engine. Nella console Google Cloud, vai alla pagina Esplora log.
Nell'elenco a discesa Risorse selezionate di recente, fai clic su Applicazione App Engine, quindi fai clic su Tutti i moduli_id. Viene visualizzato un elenco di richieste da quando hai visitato la tua app. Se non visualizzi un elenco di richieste, verifica di aver selezionato All module_id dall'elenco a discesa. Se vengono visualizzati messaggi di errore nella console Google Cloud, verifica che il codice dell'app corrisponda a il codice nella sezione relativa alla scrittura dell'app web.
Assicurati che l'API Firestore sia abilitata.
Esegui la pulizia
Elimina il progetto
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Elimina l'istanza di App Engine
- In the Google Cloud console, go to the Versions page for App Engine.
- Select the checkbox for the non-default app version that you want to delete.
- Per eliminare la versione dell'app, fai clic su Elimina.
Passaggi successivi
- Prova altri tutorial di Cloud Functions.
- Scopri di più su App Engine.
- Prova Cloud Run, che ti consente di eseguire container stateless in un ambiente completamente gestito o nel tuo cluster Google Kubernetes Engine.