Mit Heroku Webapplikationen starten
Einfach abheben
Wer in seiner Lieblingssprache eine Webapplikation zusammenklopfen und kostenlos veröffentlichen möchte, findet bei Heroku viel Komfort. Sogar ein eigener Webserver darf als Sprungbrett dienen.
© john krempl, photocase.com
Wer in seiner Lieblingssprache eine Webapplikation zusammenklopfen und kostenlos veröffentlichen möchte, findet bei Heroku viel Komfort. Sogar ein eigener Webserver darf als Sprungbrett dienen.
Perl-Snapshot feiert Jubiläum!
Der erste Artikel der Perl-Snapshot-Reihe im Linux-Magazin erschien im Oktober 1997, also schließt sie diesen Monat das 15. Jahr ab. Der Autor bedankt sich für alle Leserzuschriften und freut sich auf weitere Anregungen.
In letzter Zeit hört man auf Konferenzen häufig das Wort "Polyglot" [2]: Passé sind die Tage, in denen Entwickler sich mit Tunnelblick auf eine Programmiersprache und ihr Ökosystem konzentrierten und Errungenschaften anderer Systeme mit rotem Kopf für überflüssig erklärten. Vielmehr spioniert der Ingenieur von Welt heute in den Foren der Konkurrenz, erkennt fortschrittliche Entwicklungen und adaptiert sie zum Einsatz in der bevorzugten Sprache oder dem Applikationsstack der Wahl. Auch die Hoster von Webapplikationen unterstützen diesen Trend und bieten ihre Dienste für unterschiedlichste Programmiersprachen und Runtime-Umgebungen an.
So verfährt zum Beispiel der Applikationshoster Heroku.com. Er liegt eine Abstraktionsebene über Amazons AWS-Cloud, hat seine Plattform bewusst Sprachen-agnostisch aufgesetzt und unterstützt etwa ein Dutzend Programmiersprachen [3]. Der Entwickler entlässt seine Releases mit Hilfe des Revisionssystems Git in die Freiheit und findet sich losgelöst von den technischen Anforderungen realer Server. Dies erlaubt schnelle Entwicklungszyklen mit erstaunlich wenig administrativem Aufwand.
Listing 1 zeigt eine simple Webapplikation, die das Framework Mojolicious vom CPAN nutzt, das über einen eingebauten Webserver verfügt. Von der Kommandozeile mit dem Befehl »daemon«
und einer Webadresse auf dem lokalen Rechner gestartet (Abbildung 1) übergibt es einem Browser den fest einkodierten Textstring (Abbildung 2).
Listing 1
myapp.pl
1 #!/usr/bin/env perl
2 use Mojolicious::Lite;
3
4 get '/' => {
5 text => "I'll be your server tonight." };
6
7 app->start;
Um das Ganze im Internet auf einem Heroku-Server laufen zu lassen, sind nur wenige Schritte notwendig. Als Erstes muss der User sich bei Heroku mit einer E-Mail-Adresse kostenlos registrieren. Weitere Angaben entfallen. Bestätigt der User den Eingang der E-Mail, darf er ein Passwort setzen.
Das Kommandozeilentool "Heroku Toolbelt", das sich unter Ubuntu Linux mit
wget -qO- https://toolbelt.heroku.com/install.sh | sh
herunterladen und installieren lässt, findet nach dem Aufruf von »heroku login«
wie in Abbildung 3 die lokal verwendeten Public Keys und überträgt einen davon nach Bestätigung an den Heroku-Server.
Ab diesem Zeitpunkt kommuniziert der User mit dem Heroku-System, ohne das Passwort nochmals einzutippen. Weitere Public Keys für weitere Rechner zur Wartung bereits installierter Applikationen fügt er mit dem Werkzeuggürtel und dem Kommando »heroku keys:add«
an.
Für eine Perl-Applikation benötigt Heroku die Dateien »Makefile.PL«
sowie das Shellskript »Perloku«
. Diese Dateien installieren die nötigen CPAN-Module und werfen den eingebauten Mojolicious-Server an. Listing 2 zeigt das Makefile. Das Shellskript »Perloku«
enthält folgendes Kommando:
./myapp.pl daemon -l http://*:$PORT -m production
Zusammen mit dem vorher erwähnten Applikationsskript »myapp.pl«
aus Listing 1 liegen beide in einem lokalen Verzeichnis, in dem der User jetzt ein Git-Repository mit »git init«
anlegt. Die Befehlsfolgen »git add *«
und »git commit«
mit einem Commit-Kommentar zementieren die Version.
Die Perl-typische Datei »Makefile.PL«
gibt das CPAN-Modul Mojolicious in der Version 3.05 als Abhängigkeit an. Mojolicious hingegen benötigt keine weiteren CPAN-Module. Folgendes Kommando schickt das Triplet jetzt an Heroku:
heroku create -s cedar --buildpack http://github.com/judofyr/perloku.git
Bei »buildpack«
handelt es sich um einen auf Github abgelegten Adapter, der Heroku Perl-Applikationen mit Skripten schmackhaft macht. So sagt er Heroku, dass das Kommando zum Start der Applikation in »Perloku«
zu finden ist. Im lokalen Git-Repository definiert das Kommando »heroku create«
zudem eine im Git-Jargon so genannte Remote, die auf das Heroku-Repository zeigt. An dieses schickt der User den Code mit dem Kommando »git push heroku master«
.
So schickt Git zuerst die drei Source-Dateien an Heroku, das dann die in »Makefile.PL«
angegebenen CPAN-Module installiert und zum Start des handgestrickten Servers das Kommando in der Datei »Perloku«
aufruft. Heroku ruft das Shellskript »Perloku«
per Konvention mit der Environment-Variablen »PORT«
auf, die auf den Port gesetzt ist, auf dem der in »myapp.pl«
eingebaute Webserver auf eingehende Requests lauschen soll. Das Shellskript fügt den Wert in den Parameter für die Option »-l«
ein und übergibt das Ganze an »myapp.pl«
, das nun genau Bescheid weiß.
Abschließend spuckt Heroku die offizielle Webadresse der Applikation aus, im Beispiel ist das »http://hollow-fog-8976.herokuapp.com«
. Ein Browser, der diese Adresse aufruft, zeigt das erwartete Ergebnis (Abbildung 4).
Listing 2
Makefile.PL
1 #!/usr/bin/env perl
2 use ExtUtils::MakeMaker;
3 WriteMakefile(
4 PREREQ_PM => {'Mojolicious' => '3.05'}
5 );
Umfang: 3 Heftseiten
Preis € 0,99
(inkl. 19% MwSt.)
Alle Rezensionen aus dem Linux-Magazin
Im Insecurity Bulletin widmet sich Mark Vogelsberger aktuellen Sicherheitslücken sowie Hintergründen und Security-Grundlagen. mehr...