Ein Webserver für den Raspberry Pi (apache, lighthttpd, nginx)

Bisher war für mich klar, ich verwende Apache als Webserver. Seit über 15 Jahren leistet dieser Webserver auf Millionen Webseiten gute Dienste. Warum also überhaupt an eine alternative denken? In den letzten Monaten las ich jedoch immer wieder von anderen Webservern (nginx & lighttpd). Dies hat mich dazu bewogen doch einmal etwas genauer zu recherchieren. Hier meine Ergebnisse:

  • Apache, der klassische Webserver. Lange Konfigurationsdateien. Hoher Speicherverbrauch durch viele Prozesse. Zum Apache Webserver findet man sehr viele Anleitungen im Internet.
  • nginx, ein neuer Webserver. Ngix wird auf einigen großen Seiten eingesetzt. Konfiguration etwas aufwendiger.
  • lighttpd, ein leichtgewichtiger Webserver. Einfach zu Konfigurieren und für kleine Seiten geeignet.

Daher habe ich mich dazu entschieden lighthttpd als Webserver für den Raspberry Pi zu testen.

lighttpd

Die installation ist mit sudo apt-get install lighttpd schnell erledigt. Jedoch unterstützt der Webserver per Default kein php. PHP muss in der Konfigurations-Datei eingerichtet werden. Der Pfad der Konfigurations-Datei ist: /etc/lighttpd/lighttpd.conf. So sieht die Datei mit aktivierten PHP-Support aus:

View the code on Gist.


Das war die Einrichtung von lighttpd, nun kann der Webserver genutzt werden.

Weiterführende Links:

Exit-Code eines Programm in der Shell ermitteln

Das Linux Shell-Script ist eine großartige Sache, leider ist es für mich etwas fremd, da ich aus der Java-Ecke komme. Somit habe ich noch viel zum Shell-Script zu lernen. Meine neuste Erkenntnis ist, wie ich den Exit-Code eines Programms heraus finde. Der Exit-Code einer Anwendung gibt an, ob diese ohne Fehler beendet wurde. Null bedeutet dabei, es sind keine Fehler aufgetreten. Alle Werte größer Null deuten auf ein oder mehrere Fehler hin. Das folgende Listing zeigt wie man sich den Exit-Code in der Konsole anzeigen lässt:

View the code on Gist.

[Linux]Paketquellen

Eine sehr schön Sache an Linux ist das Software installieren. Einfach apt-get install xy eingeben und schon wird das entsprechende Programm installiert. Leider wird manchmal eine veraltete Version des Programms installiert. Da stellte sich mir die Frage, wie kommt die Software in das OnlineRepository und wer aktualisiert es. Auch vom Standpunkt des Sicherheitsmanagement ist die Frage sehr interessant. Schließlich könnte über den Kanal wunderbar kompromittierte Software übertragen werden.

Ubuntu setzt bei Paketen auf das DebianRepository. Um ein Paket ins DebianRepository einzustellen muss man ein ein Ticket mit dem Status wishlist erstellen (Dies kann per Mail oder mit dem Tool reportbug geschehen). Das Paket selbst wird auf einen FTP-Server hochgeladen (ftp.upload.debian.org/pub/UploadQueue/ ). Erstaunlicherweise benötigt man für diesen FTP-Server keine Zugangsdaten, sondern man kann das Paket als anonymous hochladen. Danach muss sich eine berechtige Person dem Paket annehmen.

Der gesamt Vorgang wirkt auf mich recht komplex. Es gibt leider kein schönes Webinterface über das man alles machen kann. Dies mag auch dran liegen das Linux aus der Zeit vor dem WWW kommt und der Prozess immer noch weitgehend der selbe zu sein scheint. Darüber hinaus muss man auch erstmal ein Package erstellen, das ist nochmal eine Menge Aufwand. Das erstellen von Package Dateien (*.deb) ist mit dem Tool dpkg möglich. Aber mit dem Tool muss ich mich noch einmal genauer auseinander setzen.

Dies ist wahrscheinlich auch der Grund warum einige Paket nur sehr selten aktualisiert werden.

Links:

Chocolatey das apt-get für Windows

Mit apt-get ist es unter Linux sehr einfach Software zu installieren. Bisher fehlte unter Windows ein solches Tool. Der Windows 8 App Store geht jedoch auch in diese Richtung, nur leider finden sich dort zumeist nur Apps für die neue Modern UI. Die klassischen Anwendungen fehlen. Hier schafft Chocolatey abhilfe. Mit dem Tool kann man viele normale Windows Anwendungen einfach installieren, wie mit apt-get unter Linux.

via http://www.biggle.de/blog/se-verfhrung-mit-chocolatey-dein-apt-get-fr-windows

[PhantomJs] Screenshots

Phantom.js enthält einen auf Webkit basierenden Renderer für Webseiten. Damit kommen Tests mit Phantom.js den Browsern Chrome und Safari recht nahe, da diese Browser ebenfalls Webkit zum rendern der Seiten benutzen. Das folgende Script erstellt ein Bildschirmfoto einer Webseite.

View the code on Gist.

Mit dem Script kann einfach per Kommandline ein Screenshot einer Webseite angefertigt werden. Dabei muss kein X-Server aktiv sein.

Siehe auch:

Android Bibliotheken

Die App Entwicklung für Android ist dank Java und dem einfach Entwicklermodus sehr einfach. Noch einfacher wird es schöne Apps zu erstellen wenn man gute Bibliotheken einsetzt. Das Problem hierbei ist oft diese Bibliotheken zu finden. Glücklicherweise gibt es einige Seiten die Android Bibliotheken auflisten. Vorbeischauen lohnt sich, man findet garantiert eine Komponente für ein Feature welches man gerne in seiner App hätte.

Chrome OS als Basis für Plattformübergreifende (HTML5-)Apps

Mit dem Chromebook Pixel will Google offenbar einen neuen Versuch unternehmen seinem Betriebssystem Chrome OS zum Durchbruch zu verhelfen. Als Entwickler stelle ich mir dabei die Frage: Lohnt es sich für Chrome OS zu entwickeln? Im wesentlichen besteht das Chrome OS aus dem Browser Chrome und der läuft auf fast allen Plattformen. Dadurch bieten Apps für Chrome eine einfache Möglichkeit Plattformunabhängig zu entwickeln. Interessant ist auch, dass es jetzt einen Launcher für Chrome Apps in einer Preview Version für Windows gibt. Damit lassen sich Chrome Apps quasi wie normale Anwendungen ausführen. Über einen AppStore verfügt Chrome OS, bzw. der Browser Chrome auch. Darüber hinaus werden die Apps mit HTML5 erstellt (Natürlich mit erweiterten APIs). Damit scheint auch die Technische Seite zukunftssicher. Somit sind Apps für Chrome (OS) eine interessante Sache. Und sollte man diese Apps außerhalb des Googleuniversums zum laufen bringen möchten/müssen, sollten sich die HTML5 Apps für Chrome mit wenig Aufwand mit NodeWebkit betreiben lassen. Bei NodeWebkit handelt es sich um eine Abwandlung des Quelloffenen Chromium Browser mit einer node.js Runtime. Eine weitere Möglichkeit der Wiederverwendung von HTML5-Apps für Chrome wäre die Verwendung in einer normalen Webseite.

Ich hoffe ja, das es bald möglich sein wird Plattformunabhängige Anwendungen zu entwickeln. HTML5 erscheint mir dafür die vielversprechendste Lösung zu sein. Chrome OS bzw. Chrome bieten jetzt schon eine gute Möglichkeit die Platformen Windows, Mac und Linux und Chrome OS abzudecken. Für Android, iOS und Windows Phone muss man jedoch derzeit noch Tools wie PhoneGap verwenden.

Phantom.js für den Raspberry Pi

Eine Sache, die ich gerne mit dem Raspberry Pi machen möchte ist das Testen von Webseiten. Dazu möchte ich am liebsten Phantom.js verwenden. Als alternative hatte ich Selenium in Betracht gezogen, jedoch hakt die HtmlUnit von Selenium oft bei komplexen JavaScript. Dadurch lassen sich Seiten die z.B. mit Vaadin erstellt worden sind nicht testen. Phantom.js hat dieses Problem nicht. Darüberhinaus kann Phantom.js einfach Screenshots von Webseiten erstellen.

Leider lässt sich Phantom.js nicht ohne weiteres auf dem Raspberry Pi installieren. Dies war zu mindest bis jetzt so. Auf github gibt es nun ein Projekt das eine kompilierte Binary für den Raspberry Pi beinhaltet. Leider gibt es keine direkte Downloadmöglichkeit per wget, Daher muss das git-Repository ausgecheckt werden:

git clone https://github.com/piksel/phantomjs-raspberrypi.git

Danach ins bin Verzeichnis navigieren und mit chmod +x phantomjs die Anwendung ausführbar machen. Nun kann man phantomjs auch noch global ausführbar machen:

sudo ln -s /home/pi/javascript/phantom/phantomjs-raspberrypi/bin/phantomjs /bin/phantomjs

Ein Anleitung für phantomjs selbst ist ebenfalls bei github verfügbar. Viel Erfolg beim Testen mit Phantom.js

via https://github.com/piksel/phantomjs-raspberrypi
via https://groups.google.com/forum/?fromgroups=#!topic/phantomjs/1jmDlVpxV5Q