Wolken bewegen sich

PHP und Zend Server auf OpenShift
Kommentare

Nachdem die letzten Ausgaben dieser Kolumne etwas philosophischer waren, möchte ich dieses Mal wieder etwas konkreter werden und ein vielversprechendes Cloud-Projekt vorstellen: OpenShift. OpenShift ist ein PaaS-Dienst von Red Hat, der im Jahr 2011 gestartet wurde. Wobei „ein“ PaaS-Dienst etwas untertrieben ist: Es gibt JBoss, Ruby, aber natürlich auch PHP und sogar den Zend-Server als „Applikationsbasis“. Und das Ganze noch kostenlos für insgesamt drei Instanzen bzw. Gears, wie sie bei OpenShift genannt werden.

PHP Magazin

Die Kolumne „Cumulus“ von Jan Burkl ist erstmalig erschienen im PHP Magazin 1.2013

Auf der Seite http://red.ht/MqsdsC findet sich ein Beispiel, wie viel Power ein solches Gear hat: Für eine Drupal 7 Site mit fünf Seiten/Sekunde, Hunderten von Artikeln und ungefähr 50 000 Besuchern pro Monat reichen drei Gears, können also über die kostenlose Plattform abgebildet werden. Zumindest für eine private Low-Traffic-Website scheint mir das mehr als ausreichend. Für den Einsatz von mehr Gears oder die dynamische Skalierung der Applikation bietet Red Hat das kostenpflichtige Angebot MegaShift. Die Server selbst laufen sowohl bei OpenShift als auch bei MegaShift auf der AWS-Plattform von Amazon in der Cloud. Red Hat ist also nicht zum Cloud-Provider geworden, sondern setzt die eigene Managementkonsole auf bestehende Dienste auf.

Schauen wir uns doch einfach mal an, wie das Angebot genutzt werden kann. Nach der einfachen Registrierung kann unter dem Reiter MY APPLICATIONS eine neue Applikation hinzugefügt werden. Im ersten Schritt wird eine so genannte Web Cartridge gewählt. Für die meisten wird die PHP 5.3 Cartridge oder Zend Server Cartridge interessant sein. Bei der PHP 5.3 Cartridge ist zu beachten, dass bei Redaktionsschluss noch die Version 5.3.2 verwendet wurde. Zend Server hat die neuere PHP-Version mit 5.3.14 an Bord. Wer keine Lizenz für den Zend Server hat oder kaufen möchte, muss trotzdem nicht verzichten: OpenShift setzt direkt einen Lizenzschlüssel, der bis Ende September 2013 gültig ist. Aber auch ohne Lizenz kann der Zend-Server in der Community Edition als PHP-Stack genutzt werden. Der nächste Schritt verlangt nach einem Applikationsnamen und – weil es für die meisten der erste Server bei OpenShift sein wird – einen systemweit eindeutigen Namespace (Abbildung 1).

Abb. 1: Anlegen eines neuen OpenShift-Gears

Schritt 3 beschreibt im Wesentlichen nur, wie der eigene Code auf den Server kommen kann. Auch ein eigener Public-Key kann hochgeladen werden, um direkt auf den Server via Commandline zuzugreifen [1]. Hier wird beschrieben, dass ein einfacher Git-Push-Befehl reicht, um die eigene Applikation auf dem OpenShift-System zu deployen. Dazu gibt es einen eigenen Abschnitt in der Dokumentation [2].

Spannend ist aber auch die Tatsache, dass über weitere Cartridges z. B. eine MySQL- oder eine MongoDB-Instanz hinzugefügt werden können. Ein besonderes Schmankerl: Sogar das Continuous-Integration-System Jenkins gibt es als eine eigene Cartridge, sowie einen entsprechenden Client. So kann auf simpelste Weise Code vollautomatisiert von einem Git-Repository ausgecheckt und direkt auf dem PHP-Server deployt werden. Und das geht so: Zunächst muss eine solche Jenkins-Server-Applikation erstellt werden – das geht analog zum Erstellen der PHP-Applikation. Um zu testen, ob Jenkins erfolgreich hochgefahren wurde, kann das von OpenShift generierte Passwort direkt über die Jenkins-Oberfläche geändert werden. Jetzt müssen Jenkins und der Applikationsserver miteinander verknüpft werden. Dazu wird der Jenkins-Client als Erweiterung innerhalb der PHP-Applikation installiert bzw. als Cartridge hinzugefügt. Dadurch wird automatisch ein Job in Jenkins angelegt, der auch schon vorkonfiguriert ist. Ab jetzt übernimmt Jenkins den automatisierten Deploy.

So muss Cloud aussehen: Auf Knopfdruck ein PHP-Server, ein Continuous-Integration-System und die Verknüpfung von beidem. Ein ideales System zum Testen der eigenen Applikation in der Cloud.

Das Spiel lässt sich natürlich noch weiter treiben: Jenkins kann so konfiguriert werden, dass es sich automatisch Updates von einem entfernten Git-Repository holt, wie z. B. auch aus der Developer Cloud (phpcloud.com), über die ich in Ausgabe 5.2012 berichtet habe. Zugegebenermaßen ist bei diesem Beispiel ein wenig mehr Handarbeit notwendig, da aus dem Git-Repository der Developer Cloud nichts anonym ausgecheckt werden kann. Zur Einrichtung eines privaten Schlüssels auf dem Jenkins-System zur Authentifizierung am Git-Repository ist der Forumsbeitrag [3] zu empfehlen.

Zu guter Letzt möchte ich den Command Line Client rhc von OpenShift erwähnen (Abbildung 2). Dieser kann unter Windows, Linux und Mac installiert werden (siehe [4]) und bietet vollen Remote-Zugriff auf die OpenShift-Gears. Alles, was über die Weboberfläche gemacht werden kann, bietet auch rhc. Dank ihm lassen sich wiederholende Prozesse im Arbeitsablauf weiter automatisieren. Eine tolle Sache: volle PHP Integration, Continuous Integration – und das alles ohne Einrichtungsaufwand. Es lohnt sich auf jeden Fall, mal reinzuschnuppern.

Abb. 2: Defaultseite einer neu erstellten PHP-Applikation
Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -