Open Source im professionellen Einsatz
Linux-Magazin 09/2012
© john krempl, photocase.com

© john krempl, photocase.com

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.

841

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.

Alles schon eingebaut

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;

Abbildung 1: Im Beispiel startet der Programmierer die Mojolicious-Applikation auf Port 8888 des lokalen Rechners.

Abbildung 2: Ergebnis im Browser: Das einfache Mojolicious-Skript erzeugt im Browser die gewünschte Ausgabe.

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.

Abbildung 3: Das Kommandozeilen-Tool heroku des so genannten Heroku Toolbelt loggt den User ein.

Reisegepäck

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 );

Abbildung 4: Das einfache Hello-Skript läuft nun im offenen Internet auf einem Heroku-Server.

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 3 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

Linux-Magazin kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

comments powered by Disqus

Ausgabe 04/2017

Digitale Ausgabe: Preis € 6,40
(inkl. 19% MwSt.)

Artikelserien und interessante Workshops aus dem Magazin können Sie hier als Bundle erwerben.