Node.js Hosting bei Openshift == A.W.E.S.O.M.-O
Dieser Post zeigt, wie man eine Node.js Applikation mit dem freien Account bei Openshift aufsetzen kann, mit Git-Deployment, SSH-Zugang uvm. In Verbindung mit einer eigenen Domain eignet sich das hervorragend für das Hosting kleinerer Projekte, Kundendemonstrationen, als Testumgebung oder Spielwiese.
Cartman als “asciimo” ausgeliefert via Node.js @ Openshift [Quelle]
Was ist Openshift?
Openshift ist eine Cloud-Plattform von RedHat und bietet Hosting in der Cloud (Platform as a service, PaaS) mit Unterstützung für diverse Softwarestacks basierend auf verschiedenen Programmiersprachen wie Java, Ruby, PHP oder auch JavaScript via Node.js. Es existiert ein kostenfreier Account bei welchem drei sog. Gears zur Verfügung stehen. Ein Gear, oder auch Application genannt, ist eine Art Container mit einer begrenzten Anzahl RAM und Speicherplatz, welcher die verschiedenen Komponenten (Cartridges) verwaltet. Eine Cartridge ist eine austauschbare Komponente, welche neben Anderen innerhalb einer Applikation verwendet werden kann. Mindestanforderung ist eine Sprachumgebung wie z.B. PHP, danach können weitere Komponenten hinzugefügt werden, von Datenbanksystemen wie MySQL oder MongoDB bis hin zur Unterstützung für kontinuierliche Integration mit Jenkins.
Node.js Hosting
Viele Standard Hosting Pakete bieten im Allgemeinen nicht viel Kontrolle über die auf dem Server installierte Software. Im Zeitalter von Vagrant und Co. sind es Entwickler allerdings gewohnt, eine Maschine per Knopfdruck mit genau definiertem Softwarestack zu erstellen und zum Laufen zu bringen.
Recht ähnlich verhält es sich bei Openshift, nur in der Cloud, und mit Git. Es wird von Haus aus Node.js unterstützt und das Erstellen/Verwalten von Apps sowie das Deployment (via Git) ist kinderleicht.
Eine schöne Liste zum Thema Hosting von Node.js Apps findet sich auf JSNews.de.
Hands on!
Mit Hilfe weniger Kommandos hat man eine neue App erstellt, welche dann auch sofort weltweit erreichbar ist. Ein Account bei Openshift sowie die lokale Installation einiger Abhängigkeiten (Ruby mit rhc tool, Git) sind die Voraussetzung. Mehr Informationen dazu auf openshift.com/get-started.
Das Erstellen einer App bei Openshift, sowie das Hinzufügen von Cartridges kann man von der Kommandozeile aus oder per Webinterface erledigen, ich verwende die Kommandozeile, eine Node.js App erstellt man mit dem Openshift Kommandozeilen-Tool rhc
wie folgt:
Der erste Befehl erstellt eine neue App mit dem Namen MyApp
basierend auf der Node.js Version 0.10. Im zweiten Befehl wird dieser App dann auch gleich eine Datenbank-Cartridge hinzugefügt: mit MongoDB in Version 2.2.
Zwei Minuten später:
Openshift URLs bestehen aus dem Namen der App, sowie einem globalen Namespace, welchen man selbst einmalig vergeben kann: (hier mwager)
http(s)://appname-namespace.rhcloud.com
Für jede App wird automatisch ein Git-Repository initialisiert. Zugriff erhält man per SSH Public-Key Authentifizierung, der Public Key wurde beim CLI Setup bereits an Openshift übermittelt. Die URL hat die Form:
ssh://APP_KEY@appname-namespace.rhcloud.com/~/git/appname.git/
Zugriff via SSH ist übrigens auch möglich:
Ein Commit existiert bereits:
Im Repo befindet sich eine einfache, auf dem Express Framework basierende, Node.js-App in der Datei server.js
. Diese App reagiert auf 2 Routes: /
, sowie /asciimo
. Unter Letzterer erscheint Cartman als asciimo
wie im Introbild zu sehen ist - eine nette Anspielung auf Southpark’s Folge 116 aus Staffel 8 (Quelle: Wikipedia), in der Cartman sich als Roboter namens A.W.E.S.O.M.-O 4000 verkleidet um an Butters’ peinliche Geheimnisse zu gelangen und ihn damit aufzuziehen.
Deployment
Nach Änderungen im Repo reicht nun ein git push
und die neue Version ist live. Zusammen mit einer eigenen Domain und einer DNS Weiterleitung ist das eine feine Sache. Weitere Ideen wären das Hosting eines Blogs oder privaten Continuous Integration Servers.
Quellen
Questions, Comments, Notes? Send me a PM on Twitter or an email (PGP public key).