Puoi utilizzare il server di sviluppo locale per simulare l'esecuzione dell'applicazione App Engine in produzione e utilizzarlo per accedere ai servizi in bundle di App Engine.
L'ambiente simulato applica alcune restrizioni della sandbox, come funzioni di sistema limitate e importazioni di moduli PHP 5, ma non altre, come timeout delle richieste o quote.
Il server di sviluppo locale simula inoltre i servizi forniti dalle librerie nell'SDK per App Engine, inclusi Datastore, Memcache e code di attività, eseguendo le attività localmente. Quando l'applicazione è in esecuzione sul 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 localmente. Per scaricare una versione archiviata di devapp_server.py
, procedi nel seguente modo:
Dall'archivio, scarica la cartella compressa che contiene il server
dev_appserver.py
per i runtime che hanno raggiunto la fine del supporto.Estrai i contenuti della directory nel tuo file system locale, ad esempio nella directory
/home
. Puoi trovaredev_appserver.py
nella directorygoogle_appengine/
.
Configurare il server di sviluppo locale
Per eseguire lo strumento del server di sviluppo locale, devi configurare quanto segue:
Verificare di aver installato un interprete Python 2 della versione 2.7.12 o successiva.
Imposta la variabile di ambiente
DEVAPPSERVER_ROOT
nella tua 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 di app.yaml
per la tua app, puoi utilizzare il comando dev_appserver.py
per eseguire l'app localmente.
Per avviare il server di sviluppo locale:
Nella directory che contiene il file di configurazione
app.yaml
, esegui il comandodev_appserver.py
.Windows / Mac OS
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.yaml
Per 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 usi Linux o se vuoi utilizzare una versione personalizzata di
php-cgi
, devi specificare il percorso della directory inphp-cgi
:Crea la tua versione dell'estensione PHP di App Engine sulla tua macchina locale.
Avvia il server di sviluppo locale con entrambe le opzioni
--php_executable_path
e--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.yaml
Sostituisci:
- DEVAPPSERVER_ROOT con il percorso della cartella in cui
hai estratto la versione archiviata di
devapp_server.py
. --php_executable_path
con la posizione dell'interprete PHP.--php_gae_extension_path
con la posizione del filegae_runtime_module.so
che hai creato nel passaggio precedente.
- DEVAPPSERVER_ROOT con il percorso della cartella in cui
hai estratto la versione archiviata di
Per scoprire di più sulle opzioni del comando
dev_appserver.py
, consulta Opzioni del server di sviluppo locale.Il server di sviluppo locale è ora in esecuzione e rimane in attesa delle richieste. Puoi visitare l'indirizzo http://localhost:8080/ nel browser web per vedere l'applicazione 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 quanto segue:
- macOS o Linux: Ctrl+C
- Windows: Ctrl+Interruzione
Specifica gli ID applicazione
Per accedere al tuo ID app nel server locale, ad esempio per eseguire lo spoofing di 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 delle applicazioni
Per determinare se il codice è in esecuzione in produzione o sul 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 le lettura e la scrittura in 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 supporti l'implementazione di flussi PHP come fopen, fwrite o file_get_contents.
Il server di sviluppo locale emula questa funzionalità tramite la lettura e la scrittura su file locali temporanei che vengono conservati tra una richiesta e l'altra.
Sfogliare il datastore locale
Se l'app ha scritto dati nel datastore locale utilizzando il server di sviluppo locale, puoi esaminarli nella console di sviluppo locale.
Per sfogliare il datastore locale:
Accedi a Visualizzatore Datastore nella console di sviluppo locale. (L'URL è
http://localhost:8000/datastore
).Visualizzare i contenuti Datastore locali.
Utilizzare il servizio Utenti
App Engine fornisce un servizio utenti per semplificare l'autenticazione e l'autorizzazione per l'applicazione. Il server di sviluppo locale simula il comportamento degli Account Google con le proprie pagine di accesso e uscita. Durante l'esecuzione nel server di sviluppo locale, le funzioni createLoginURL
e createLogoutURL
restituiscono gli URL per /_ah/login
e /_ah/logout
sul server locale.
Utilizza Mail
Il server di sviluppo locale può inviare email per le chiamate al servizio di posta 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 hai estratto la versione archiviata didevapp_server.py
.- Opzioni
--smtp_host
,--smtp_port
,--smtp_user
e--smtp_password
con i tuoi valori di configurazione.
Utilizzo di Sendmail
Per attivare il supporto email con Sendmail, richiama dev_appserver.py
come segue:
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 hai
estratto la versione archiviata di devapp_server.py
.
Il server locale utilizzerà il comando sendmail
per inviare messaggi email con la configurazione predefinita dell'installazione.
Usa il recupero URL
Quando l'applicazione utilizza l'API di recupero URL per effettuare una richiesta HTTP, il server di sviluppo locale effettua la richiesta direttamente dal tuo computer. Il comportamento di recupero degli URL sul server locale potrebbe essere diverso da quello di produzione di App Engine se utilizzi un server proxy per accedere ai siti web.
Esegui il debug in locale con XDebug
Se disponi di un debugger compatibile con il debugger XDebug e il modulo xdebug
è installato, puoi utilizzare XDebug con il server di sviluppo locale.
Per abilitare XDebug sul server di sviluppo in Linux o macOS:
Esporta la variabile di ambiente
XDEBUG_CONFIG
con un idekey a cui l'IDE potrà connettersiexport XDEBUG_CONFIG="idekey=netbeans-xdebug remote_host=localhost"
Richiama il server di sviluppo con
--php_remote_debugging=yes