Puoi utilizzare il server di sviluppo locale per simulare l'esecuzione della tua applicazione App Engine in produzione, nonché per accedere ai servizi in bundle di App Engine.
L'ambiente simulato applica alcune limitazioni della sandbox, come le funzioni di sistema e le importazioni di moduli PHP 5 limitate, ma non altre, come i timeout delle richieste o le quote.
Il server di sviluppo locale simula anche i servizi forniti dalle librerie nell'SDK per App Engine, tra cui Datastore, Memcache e Task Queues, eseguendo le attività localmente. Quando l'applicazione è in esecuzione nel server di sviluppo, puoi comunque effettuare chiamate API remote all'infrastruttura di produzione utilizzando gli endpoint HTTP delle API di Google.
Prima di iniziare
Poiché PHP 5 ha raggiunto la fine del supporto, non puoi più utilizzare l'ultima versione di dev_appserver.py per eseguire le tue applicazioni in locale. Per scaricare una versione archiviata di devapp_server.py, segui questi
passaggi:
Dall'archivio, scarica la cartella compressa contenente il server
dev_appserver.pyper i runtime che hanno raggiunto la fine del supporto.Estrai i contenuti della directory nel file system locale, ad esempio nella directory
/home. Puoi trovaredev_appserver.pynella directorygoogle_appengine/.
Configurare il server di sviluppo locale
Per eseguire lo strumento del server di sviluppo locale, devi configurare quanto segue:
Verifica di aver installato un interprete Python 2 versione 2.7.12 o successiva.
Imposta la variabile di ambiente
DEVAPPSERVER_ROOTnella shell sul percorso dell'interprete Python 2.
Esegui il server di sviluppo locale
Dopo aver configurato il server di sviluppo locale e creato il file di configurazione
app.yaml
per la tua app, puoi utilizzare il comando dev_appserver.py per eseguire l'app in locale.
Per avviare il server di sviluppo locale:
Nella directory che contiene il file di configurazione
app.yaml, esegui il comandodev_appserver.py.Windows / macOS
Specifica il percorso della directory dell'app, ad esempio:
python2 [DEVAPPSERVER_ROOT]/google_appengine/dev_appserver.py [PATH_TO_YOUR_APP]In alternativa, puoi specificare il file di configurazione di un servizio specifico, ad esempio:
python2 [DEVAPPSERVER_ROOT]/google_appengine/dev_appserver.py app.yamlPer modificare la porta, includi l'opzione
--port:python2 [DEVAPPSERVER_ROOT]/google_appengine/dev_appserver.py --port=9999 [PATH_TO_YOUR_APP]Sostituisci
[DEVAPPSERVER_ROOT]con il percorso della cartella in cui estrai la versione archiviata didevapp_server.py.Linux / cust. php-cgi
Se utilizzi Linux o vuoi utilizzare una versione personalizzata di
php-cgi, devi specificare il percorso della directory diphp-cgi:Crea la tua versione dell'estensione PHP di App Engine sulla tua macchina locale.
Avvia il server di sviluppo locale con le opzioni
--php_executable_pathe--php_gae_extension_path:python2 DEVAPPSERVER_ROOT/google_appengine/dev_appserver.py --php_executable_path=[PATH_TO_PHP_CGI] --php_gae_extension_path=[PATH_TO_APPENGINE_EXTENSION] app.yamlSostituisci:
- DEVAPPSERVER_ROOT con il percorso della cartella in cui
estrai la versione archiviata di
devapp_server.py. --php_executable_pathcon la posizione dell'interprete PHP.--php_gae_extension_pathcon la posizione del filegae_runtime_module.soche hai creato nel passaggio precedente.
- DEVAPPSERVER_ROOT con il percorso della cartella in cui
estrai la versione archiviata di
Per scoprire di più sulle opzioni del comando
dev_appserver.py, consulta Opzioni del server di sviluppo locale.Ora il server di sviluppo locale è in esecuzione e rimane in attesa delle richieste. Puoi visitare la pagina http://localhost:8080/ nel browser web per vedere l'app in azione.
Se hai specificato una porta personalizzata con l'opzione
--port, ricordati di aprire il browser su quella porta.
Per arrestare il server locale dalla riga di comando, premi:
- macOS o Linux: Control+C
- Windows: Control+Interrompi
Specifica gli ID applicazione
Per accedere all'ID app nel server locale, ad esempio per falsificare un indirizzo email, utilizza la funzione
AppIdentityService::getApplicationId. Per ottenere il nome host dell'app in esecuzione, utilizza la funzione
AppIdentityService::getDefaultVersionHostname.
Rilevamento dell'ambiente di runtime dell'applicazione
Per determinare se il codice è in esecuzione in produzione o nel server di sviluppo locale, puoi controllare il valore della variabile di ambiente SERVER_SOFTWARE:
if (strpos(getenv('SERVER_SOFTWARE'), 'Development') === 0){
echo 'Local development server';
} else {
echo 'Production';
}
Archiviare dati
App Engine per PHP supporta la lettura e la scrittura su
Cloud Storage tramite l'API
streams di PHP. Puoi leggere e scrivere in Cloud Storage specificando un URI Cloud Storage (gs://) quando utilizzi qualsiasi funzione PHP che supporta l'implementazione di PHP Streams, ad esempio fopen, fwrite o file_get_contents.
Il server di sviluppo locale emula questa funzionalità leggendo e scrivendo file locali temporanei che vengono conservati tra le richieste.
Sfogliare il datastore locale
Se la tua app ha scritto dati nel tuo Datastore locale utilizzando il server di sviluppo locale, puoi sfogliarli nella console di sviluppo locale.
Per sfogliare Datastore locale:
Accedi a Datastore Viewer nella console di sviluppo locale. (L'URL è
http://localhost:8000/datastore.)Visualizza i contenuti del datastore locale.
Utilizzare il servizio utenti
App Engine fornisce un servizio utenti per semplificare l'autenticazione e l'autorizzazione per la tua applicazione. Il server di sviluppo locale simula il comportamento di Google Accounts con le proprie pagine di accesso e disconnessione. Durante l'esecuzione sul server di sviluppo locale, le funzioni
createLoginURL
e createLogoutURL
restituiscono URL per /_ah/login e /_ah/logout sul server locale.
Utilizzare Mail
Il server di sviluppo locale può inviare email per le chiamate al servizio di posta di App Engine utilizzando un server SMTP o un'installazione locale di Sendmail.
Utilizzo di SMTP
Per attivare il supporto della posta con un server SMTP, richiama dev_appserver.py come segue:
python2 [DEVAPPSERVER_ROOT]/google_appengine/dev_appserver.py --smtp_host=smtp.example.com --smtp_port=25 \
--smtp_user=ajohnson --smtp_password=k1tt3ns [PATH_TO_YOUR_APP]
Sostituisci:
[DEVAPPSERVER_ROOT]con il percorso della cartella in cui estrai la versione archiviata didevapp_server.py.--smtp_host,--smtp_port,--smtp_usere--smtp_passwordcon i tuoi valori di configurazione.
Utilizzo di Sendmail
Per attivare il supporto della posta con Sendmail, richiama dev_appserver.py nel seguente modo:
python2 [DEVAPPSERVER_ROOT]/google_appengine/dev_appserver.py --enable_sendmail=yes [PATH_TO_YOUR_APP]
Sostituisci [DEVAPPSERVER_ROOT] con il percorso della cartella in cui
estrai la versione archiviata di devapp_server.py.
Il server locale utilizzerà il comando sendmail per inviare messaggi email con la configurazione predefinita dell'installazione.
Utilizzare il recupero URL
Quando l'applicazione utilizza l'API URL Fetch per effettuare una richiesta HTTP, il server di sviluppo locale effettua la richiesta direttamente dal computer. Il comportamento di recupero URL sul server locale potrebbe differire da quello di App Engine di produzione se utilizzi un server proxy per accedere ai siti web.
Esegui il debug in locale con XDebug
Se hai un debugger compatibile con il
debugger XDebug e hai installato il modulo xdebug,
puoi utilizzare XDebug con il server di sviluppo locale.
Per attivare XDebug sul server di sviluppo su Linux o macOS:
Esporta la variabile di ambiente
XDEBUG_CONFIGcon una chiave idekey per consentire all'IDE di connettersiexport XDEBUG_CONFIG="idekey=netbeans-xdebug remote_host=localhost"Richiamare il server di sviluppo con
--php_remote_debugging=yes