Utilizzo del server di sviluppo locale

Puoi utilizzare il server di sviluppo locale per simulare l'esecuzione della tua applicazione App Engine in produzione e per accedere ai servizi integrati di App Engine.

L'ambiente simulato applica alcune limitazioni della sandbox, ad esempio le funzioni di sistema limitate e le importazioni dei moduli PHP 5, ma non altre, come i timeout o le quote delle richieste.

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 relative 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 Google.

Prima di iniziare

Poiché il supporto di PHP 5 è terminato, non puoi più utilizzare la versione più recente di dev_appserver.py per eseguire localmente le tue applicazioni. Per scaricare una versione archiviata di devapp_server.py, segui questi passaggi:

  1. Dall'archivio, scarica la cartella compressa contenente il dev_appserver.py server per i runtime che hanno raggiunto il termine del supporto.

  2. Estrai i contenuti della directory nel file system locale, ad esempio nella directory /home. Puoi trovare dev_appserver.py nella directory google_appengine/.

Configura il server di sviluppo locale

Per eseguire lo strumento del server di sviluppo locale, devi configurare quanto segue:

  1. Verifica di aver installato un interprete Python 2 della versione 2.7.12 o successiva.

  2. Imposta la variabile di ambiente DEVAPPSERVER_ROOT nella 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 la tua app localmente.

Per avviare il server di sviluppo locale:

  1. Nella directory che contiene il file di configurazione app.yaml, esegui il comando dev_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.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 estrarre la versione archiviata di devapp_server.py.

    Linux / php-cgi personalizzato

    Se utilizzi Linux o se vuoi utilizzare una versione personalizzata di php-cgi, devi specificare il percorso della directory di php-cgi:

    1. Crea la tua versione dell'estensione PHP di App Engine sulla tua macchina locale.

    2. 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 estrarre la versione archiviata di devapp_server.py.
      • --php_executable_path con la posizione dell'interprete PHP.
      • --php_gae_extension_path con la posizione del file gae_runtime_module.so che hai creato nel passaggio precedente.

    Per scoprire di più sulle opzioni del comando dev_appserver.py, consulta Opzioni del server di sviluppo locale.

  2. Ora il server di sviluppo locale è in esecuzione e rimane in attesa delle richieste. Puoi visitare la pagina http://localhost:8080/ nel tuo 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 quanto segue:

  • macOS o Linux: Control+C
  • Windows: Ctrl+Break

Specifica gli ID applicazione

Per accedere al tuo 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 in file locali temporanei che vengono conservati tra le richieste.

Sfogliare il Datastore locale

Se la tua app ha scritto dati in Datastore locale utilizzando il server di sviluppo locale, puoi sfogliarli nella console di sviluppo locale.

Per sfogliare Datastore locale:

  1. Avvia il server di sviluppo.

  2. Accedi a Visualizzatore Datastore nella console di sviluppo locale. L'URL è http://localhost:8000/datastore.

  3. Visualizza i contenuti del tuo 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 degli Account Google con le proprie pagine di accesso e di uscita. Durante l'esecuzione sul server di sviluppo locale, le funzioni createLoginURL e createLogoutURL re restituiscono gli URL per /_ah/login e /_ah/logout sul server locale.

Utilizzare Posta

Il server di sviluppo locale può inviare email per le chiamate al servizio email 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, invoca 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 estrarre la versione archiviata di devapp_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 della posta con Sendmail, invoca 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 i 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 dell'URL sul server locale potrebbe essere diverso da quello di App Engine di produzione se utilizzi un server proxy per accedere ai siti web.

Eseguire 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:

  1. Esporta la variabile di ambiente XDEBUG_CONFIG con un'idekey a cui deve collegarsi il tuo IDE

    export XDEBUG_CONFIG="idekey=netbeans-xdebug remote_host=localhost"
    
  2. Richiama il server di sviluppo con --php_remote_debugging=yes