PHPGangsta - Der praktische PHP Blog

PHP Blog von PHPGangsta


Google App Engine (GAE) for PHP

with 2 comments

GAE-for-PHPNach der Ankündigung auf der Google IO 2013 im Mai diesen Jahres habe ich heute, nach über 4 Monaten Wartezeit, endlich meine Test-PHP-Applikation für die “Google App Engine for PHP” gewhitelisted bekommen, sodass ich nun PHP-Applikationen in der Google App Engine laufen lassen kann.

Schnell die erforderliche Software installiert (Python und das Google App Engine PHP SDK), und innerhalb von 5 Minuten meine erste PHP-Applikation erstellt und in die Google-Cloud hochgeladen.

Folgendes ist zu tun:

Zuerst muss man sich registrieren und seine Applikation whitelisten lassen. Das kann einige Zeit dauern, ich bin gespannt wann dieses Whitelisting-Warte-Verfahren aufgehoben wird.

EDIT: GAE for PHP ist nun allgemein verfügbar, der Status wechselte von “Limited Preview” nach “Preview”, kein Whitelisting mehr nötig.

Wenn man dann eine E-Mail erhält dass das Whitelisting erfolgreich war lädt man sich Python 2.7 und das GAE-SDK herunter und installiert beides.

Nach dem Start des Launchers musste ich in den Einstellungen noch die beiden Pfade zu Python und dem SDK angeben. Dann noch schnell 2 Dateien erstellt, einmal die app.yaml und eine helloworld.php mit folgenden Inhalten:

application: phpgangsta-phptest
version: 1
runtime: php
api_version: 1

handlers:
- url: /.*
script: helloworld.php

 

<?php
echo 'Hello, World!';

Dann mit dem Laucher das existierende Verzeichnis importieren:

GAE_launcher

Mit einem Klick auf “Run” startet der lokale Webserver und man kann die Seite so begucken wie sie dann später auch aussehen wird. Mit einem Browser schauen wir uns das Ergebnis lokal an: http://localhost:8080/
Wenn man mehrere Applikationen lokal betreibt haben alle einen unterschiedlichen Port, darauf bitte achten! Es erscheint “Hello World!”

Ein weiterer Klick auf “Deploy” lädt die Dateien in die Google App Engine Cloud und die Applikation kann online genutzt werden: http://phpgangsta-phptest.appspot.com/

Einige Eigenheiten gibt es zu beachten (zu finden in der Dokumentation), damit Google die Applikation in der Cloud problemlos skalieren kann, beispielsweise ist das Document-Root nicht beschreibbar, alle hochgeladenen Dateien müssen im Google Cloud Storage abgelegt werden. Dafür hat Google einen Stream-Wrapper zur Verfügung gestellt, auf Dateien kann also einfach mittels file_put_contents(), file_get_contents() oder fopen() zugegriffen werden, das Format lautet: gs://bucket_name/desired_object_name

Eine Datenbank, die wie eine MySQL-Datenbank genutzt werden kann, heißt Google Cloud SQL. Die Dokumentation ist noch recht unvollständig, Details über Eigenheiten und Features sind schwer zu finden. Ich nehme aber an dass die meisten Queries und Features, die “man” so nutzt, unterstützt werden.

In der Google-Cloud hat man auch Zugriff auf einen Memcached-Cluster, eine Task-Queue, einen Logging-Dienst, einen E-Mail-Dienst und noch einiges mehr.

Die aktuell genutzt PHP-Version ist PHP 5.4.19 (Stand 30.09.2013)

Spezielle Dinge zu beachten hat man auch bei den Request-Headern, den Response-Headern, den PHP-Extensions, die Liste der nicht verfügbaren PHP-Funktionen und Stream-Wrappern sowie den Quotas und Limits.

Ein interessantes Beispiel gibt es auch in der Dokumentation, nämlich wie man WordPress so verändert dass es in der App Engine läuft und problemlos skaliert bei hohen Zugriffszahlen. Dort ist beschrieben wie man die  Cronjobs einrichtet und die SQL-Datenbank konfiguriert. Sieht gar nicht so schwer aus, bestehende Anwendungen anzupassen sollte in den meisten Fällen nicht all zu schwer sein.

Interessante weitere Infos, Beispiele, Probleme und Lösungen finden sich auch in der Google+ Community.

Die Google App Engine kann frei genutzt werden, aber die Beschränkungen der freien Version sind relativ streng, beispielsweise sind nur 100 E-Mails pro Tag erlaubt. Auch beim Datenspeicher, Bandbreite und Logs gibt es Limits. All diese Limits können umgangen werden sobald man seinen Account mit Zahldaten versehen hat, von denen Google im Falle der Überschreitung abbuchen kann.

Eine schöne Alternative zu Shared Hosting ist es auf jeden Fall, vor allem da es automatisch skaliert und durch die Google Cloud von überall auf der Welt schnell erreichbar ist, falls das Projekt erfolgreich wird muss man demnach keine Angst haben dass es offline ist sobald der Ansturm kommt.

Written by Michael Kliewe

September 30th, 2013 at 12:41 pm

2 Responses to 'Google App Engine (GAE) for PHP'

Subscribe to comments with RSS or TrackBack to 'Google App Engine (GAE) for PHP'.

  1. Interessanter Artikel. Es ist schon recht einfach, heute einen hochverfügbaren Webdienst anzubieten. Allerdings hat ja auch Google in letzter Zeit gezeigt, dass es keine absolute Verfügbarkeit garantieren kann – zumindest was deren eigene Webdienste betrifft (Google Suche, Google Mail, Google Drive). Auch Amazon hatte mit bei seinen AWS schon einige schwerwiegende Ausfälle.
    Ich denke die einzige Möglichkeit, eine Verfügbarkeit nahe 100% garantieren zu können, ist die Nutzung mehrfacher, vollständiger und verteilter Redundanz durch Anycast. Ich behaupte an dieser Stelle allerdings, dass das wohl für weniger als 1% der Webdienste und Unternehmen wirklich nötig ist.
    In Bezug auf die Skalierbarkeit sind derartige Angebote allerdings gerade auch für kleinere oder private Projekte (z.B. Blogs) natürlich eine tolle Sache, wenn auch sich die Möglichkeit der automatischen Skalierung natürlich im Preis widerspiegelt verglichen mit einem “festen” Hosting-Paket. Mir persönlich wäre eine derartige Lösung vermutlich zu langweilig, auch wenn es schon einiges an Erfahrung und Geld kostet, selbst eine vergleichbare Verfügbarkeit zu erreichen.

    basti

    1 Okt 13 at 09:45

  2. Hallo!

    Bin vor allem über die vier Monate Wartezeit erstaunt, ich fand die paar Wochen damals schon viel. ;-)
    Der Rest deckt sich mit meinen Erfahrungen der damaligen Tests, die ich mit einer (simplen) Seite auf Basis des Silex-Frameworks gemacht habe [werbung: https://geschke.name/asap/article/67/google-app-engine-fur-php-erste-schritte-mit-silex-im-sdk.html mit Update nach Freischaltung].

    Beste Gruesse,
    Ralf

    Ralf Geschke

    1 Okt 13 at 12:04

Leave a Reply

You can add images to your comment by clicking here.