Lokalen Entwicklungsserver verwenden

Sie können den lokalen Entwicklungsserver verwenden, um die Ausführung Ihrer App Engine-Anwendung in der Produktion zu simulieren und für den Zugriff auf gebündelte App Engine-Dienste zu nutzen.

Die simulierte Umgebung erzwingt gewisse Sandbox-Einschränkungen wie eingeschränkte Systemfunktionen und PHP 5-Modulimporte. Andere Einschränkungen wie Anfragezeitüberschreitungen oder Kontingente werden hingegen nicht erzwungen.

Der lokale Entwicklungsserver simuliert außerdem die von den Bibliotheken im SDK für App Engine bereitgestellten Dienste, einschließlich Datenspeicher, Memcache und Aufgabenwarteschlangen. Hierzu werden die Aufgaben der Dienste vom Server lokal ausführt. Wenn die Anwendung auf dem Entwicklungsserver ausgeführt wird, können Sie weiterhin Remote API-Aufrufe über HTTP-Endpunkte von Google APIs an die Produktionsinfrastruktur senden.

Hinweise

Da PHP 5 das Ende des Supports erreicht hat, können Sie Ihre Anwendungen nicht mehr mit der neuesten Version von dev_appserver.py lokal ausführen. So laden Sie eine archivierte Version von devapp_server.py herunter:

  1. Laden Sie aus dem Archiv den komprimierten Ordner herunter, der den Server dev_appserver.py für Laufzeiten enthält, die das Ende des Supports erreicht haben.

  2. Extrahieren Sie den Inhalt des Verzeichnisses in Ihr lokales Dateisystem, z. B. in Ihr /home-Verzeichnis. Sie finden dev_appserver.py im Verzeichnis google_appengine/.

Lokalen Entwicklungsserver einrichten

Für die Ausführung des lokalen Entwicklungsserver-Tools muss Folgendes eingerichtet sein:

  1. Prüfen Sie, ob Sie einen Python 2-Interpreter der Version 2.7.12 oder höher installiert haben.

  2. Legen Sie für die DEVAPPSERVER_ROOT-Umgebungsvariable in Ihrer Shell den Pfad des Python 2-Interpreters fest.

Lokalen Entwicklungsserver ausführen

Nachdem Sie den lokalen Entwicklungsserver eingerichtet und die Konfigurationsdatei app.yaml für die Anwendung erstellt haben, können Sie den dev_appserver.py-Befehl für Ihre Anwendung lokal ausführen.

So starten Sie den lokalen Entwicklungsserver:

  1. Führen Sie in dem Verzeichnis, das Ihre app.yaml-Konfigurationsdatei enthält, den dev_appserver.py-Befehl aus.

    Windows/macOS

    Geben Sie den Verzeichnispfad zur Anwendung an. Beispiel:

         python2 [DEVAPPSERVER_ROOT]/google_appengine/dev_appserver.py [PATH_TO_YOUR_APP]
    

    Alternativ können Sie die Konfigurationsdatei eines bestimmten Dienstes angeben. Beispiel:

         python2 [DEVAPPSERVER_ROOT]/google_appengine/dev_appserver.py app.yaml
    

    Fügen Sie die Option --port ein, um den Port zu ändern:

         python2 [DEVAPPSERVER_ROOT]/google_appengine/dev_appserver.py --port=9999 [PATH_TO_YOUR_APP]
    

    Ersetzen Sie [DEVAPPSERVER_ROOT] durch den Pfad zu dem Ordner, in den Sie die archivierte Version von devapp_server.py extrahieren.

    Linux/benutzerdefinierte Version von php-cgi

    Wenn Sie Linux verwenden oder eine benutzerdefinierte Version von php-cgi verwenden möchten, müssen Sie den Verzeichnispfad zu php-cgi angeben:

    1. Erstellen Sie auf einem lokalen Computer eine eigene Version der App Engine-PHP-Erweiterung.

    2. Starten Sie den lokalen Entwicklungsserver mit den Optionen --php_executable_path und --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
      

      Ersetzen Sie:

      • DEVAPPSERVER_ROOT durch den Pfad zu dem Ordner, in den Sie die archivierte Version von devapp_server.py extrahieren.
      • --php_executable_path durch den Speicherort des PHP-Interpreters.
      • --php_gae_extension_path durch den Speicherort der Datei gae_runtime_module.so, die Sie im vorherigen Schritt erstellt haben.

    Weitere Informationen zu dev_appserver.py-Befehlsoptionen finden Sie unter Lokale Entwicklungsserver-Optionen.

  2. Der lokale Entwicklungsserver wird jetzt ausgeführt und ist für Anfragen bereit. Rufen Sie http://localhost:8080/ in Ihrem Webbrowser auf, um die Anwendung in Aktion zu sehen.

    Wenn Sie einen benutzerdefinierten Port mit der Option --port angegeben haben, müssen Sie den Port in Ihrem Browser öffnen.

Mit den folgenden Tastenkombinationen können Sie den lokalen Server über die Befehlszeile beenden:

  • macOS oder Linux: Strg + C
  • Windows: Strg + Pause

Anwendungs-IDs angeben

Zum Aufrufen der Anwendungs-ID auf dem lokalen Server, z. B. für das Spoofing einer E-Mail-Adresse, verwenden Sie die Funktion AppIdentityService::getApplicationId. Den Hostnamen der ausgeführten Anwendung können Sie mit der Funktion AppIdentityService::getDefaultVersionHostname abrufen.

Laufzeitumgebung der Anwendung erkennen

Ermitteln Sie den Wert der Umgebungsvariable SERVER_SOFTWARE, um zu prüfen, ob der Code in einer Produktionsumgebung oder auf dem lokalen Entwicklungsserver ausgeführt wird:

if (strpos(getenv('SERVER_SOFTWARE'), 'Development') === 0){
  echo 'Local development server';
} else {
  echo 'Production';
}

Daten speichern

App Engine for PHP unterstützt das Lesen und Schreiben von Daten in Cloud Storage über die Streams API von PHP. Wenn Sie eine PHP-Funktion verwenden, die die Implementierung von PHP-Streams unterstützt, z. B. fopen, fwrite oder file_get_contents, geben Sie zum Lesen und Schreiben von Daten in Cloud Storage einen Cloud Storage-URI (gs://) an.

Der lokale Entwicklungsserver emuliert diese Funktionalität, indem er in temporäre lokale Dateien schreibt und daraus liest, die zwischen Anfragen erhalten bleiben.

Lokalen Datenspeicher durchsuchen

Wenn die Anwendung mithilfe des lokalen Entwicklungsservers Daten in den lokalen Datenspeicher geschrieben hat, können Sie diese in der lokalen Entwicklungsconsole durchsuchen.

So durchsuchen Sie den lokalen Datenspeicher:

  1. Starten Sie den Entwicklungsserver.

  2. Rufen Sie in der lokalen Entwicklungsconsole den Datastore-Betrachter auf. Die URL lautet http://localhost:8000/datastore.

  3. Sehen Sie sich die Inhalte des lokalen Datenspeichers an.

Nutzerdienst verwenden

App Engine bietet einen Nutzerdienst, der die Authentifizierung und Autorisierung für Ihre Anwendung vereinfacht. Der lokale Entwicklungsserver simuliert das Verhalten von Google-Konten mit eigenen Anmelde- und Abmeldeseiten. Bei der Ausführung auf dem lokalen Entwicklungsserver geben die Funktionen createLoginURL und createLogoutURL URLs für /_ah/login und /_ah/logout auf dem lokalen Server zurück.

E-Mail-Dienst verwenden

Der lokale Entwicklungsserver kann einen SMTP-Server oder eine lokale Installation von Sendmail nutzen, um E-Mails für Aufrufe an den App Engine-E-Mail-Dienst zu senden.

SMTP verwenden

Zum Aktivieren der E-Mail-Unterstützung mit einem SMTP-Server rufen Sie dev_appserver.py so auf:

   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]

Ersetzen Sie:

  • [DEVAPPSERVER_ROOT] durch den Pfad zu dem Ordner, in den Sie die archivierte Version von devapp_server.py extrahieren.
  • Optionen --smtp_host, --smtp_port, --smtp_user und --smtp_password durch Ihre eigenen Konfigurationswerte.

Sendmail verwenden

Zum Aktivieren der E-Mail-Unterstützung mit Sendmail rufen Sie dev_appserver.py so auf:

   python2 [DEVAPPSERVER_ROOT]/google_appengine/dev_appserver.py --enable_sendmail=yes [PATH_TO_YOUR_APP]

Ersetzen Sie [DEVAPPSERVER_ROOT] durch den Pfad zu dem Ordner, in den Sie die archivierte Version von devapp_server.py extrahieren.

Der lokale Server verwendet dann den Befehl sendmail, um E-Mail-Nachrichten mit der Standardkonfiguration Ihrer Installation zu versenden.

URL Fetch verwenden

Wenn die Anwendung die URL Fetch API zum Erstellen einer HTTP-Anfrage verwendet, führt der lokale Entwicklungsserver die Anfrage direkt von Ihrem Computer aus. Das Verhalten von URL Fetch auf dem lokalen Server kann sich vom Verhalten in der App Engine-Produktionsumgebung unterscheiden, wenn Sie einen Proxyserver für den Zugriff auf Websites verwenden.

Lokale Fehlerbehebung mit XDebug

Wenn Sie einen Debugger haben, der mit dem XDebug-Debugger kompatibel ist, und das Modul xdebug installiert ist, können Sie XDebug mit dem lokalen Entwicklungsserver verwenden.

So aktivieren Sie XDebug unter Linux oder macOS auf dem Entwicklungsserver:

  1. Exportieren Sie die Umgebungsvariable XDEBUG_CONFIG mit einem IDE-Schlüssel (idekey), damit die IDE dazu eine Verbindung herstellen kann:

    export XDEBUG_CONFIG="idekey=netbeans-xdebug remote_host=localhost"
    
  2. Entwicklungsserver mit --php_remote_debugging=yes aufrufen