Ubuntu auf dem Google Nexus 7

Ubuntu ist auf Androidhardware kein seltener Gast und in unterschiedlichsten Formen lauffähig, eine der Varianten habe ich im Artikel HowTo: Ubuntu auf dem Android Smartphone beschrieben.

Ubuntu Nexus 7 Desktop Installer
Ubuntu Nexus 7 Desktop Installer

Seit dem Artikel hat sich allerdings einiges geändert und eines im Speziellen: Das Google Nexus 7 ist veröffentlich worden und somit ein Android Tablet, welches viel Leistung zu vernüftigen Preisen verspricht. Diese Entwicklung geht natürlich auch an Canonical, seines Zeichens die Firma hinter Ubuntu, nicht vorbei und da Canonical recht offen und kreativ sein kann verschliesst man sich dem Tabletwunsch vieler Anwender nicht und betrachtet das Nexus 7 als quasi Entwicklungsreferenz für eine Basisversion von Ubuntu, angepasst für Tablets.

Zuge dieser Bemühungen ist ein erste Ubuntu Installer, der das Nexus 7 mit einer Ubuntuversion versieht. Canonical beschreibt die Voraussetzungen und die Installation im hauseigenen Wiki recht anschaulich:

[sws_button class=““ size=“sws_btn_medium“ align=“sws_btn_align_center“ href=“#“ target=“_blank“ label=“HowTo: Ubuntu auf Nexus 7 installieren“ template=“sws_btn_outrageousorange“ textcolor=““ bgcolor=““ bgcolorhover=““ glow=“sws_btn_glow“] [/sws_button]

Die wichtigsten Punkte einmal im Überblick:

  • Ein Nexus 7 mit 8 oder 16 GB sind die Grundvoraussetzung
  • Das Nexus 7 muss einen offenen Bootloader haben (fastboot starten und mittels „sudo fastboot oem unlock“ den Prozess beginnen. Das Gerät wird zurückgesetzt und alle Daten gehen verloren!
  • Ubuntu ab Version 12.04 muss zur Installation genutzt werden

An den Ubuntu Nexus 7 Desktop Installer kommt man mit folgenden Schritten:

[sws_code language=“html“] [/sws_code]

Man sollte keine Oberfläche erwarten die auf Tablets optimiert ist, lediglich das Standard-Ubuntu mit Unity. Das heisst es gibt keine angepassten Icons, keine Bereiche die für die Fingereingabe taugen. Aktuell ist es mehr eine Proof-of-Concept Version, die Entwickler animieren soll, sich am Projekt zu beteiligen, um zukünftige Versionen von Ubuntu für Tablets optimieren zu können.

Freundlicherweise erwähnt Canonical im Wiki auch wie man auf das Nexus 7 Stock-ROM zurückkehren kann, so dass allen ambitionierten Nutzern ein Blick ermöglicht werden kann.

Behaltet aber im Hinterkopf, alles was ihr tut, tut ihr auf eigene Gefahr und nehmt den Verlust der Herstellergarantie in Kauf!

Wie schaut es bei euch aus? Ubuntu für das Tablet und gerade für das Nexus 7, ist das etwas, was ihr unterstützt und reizvoll findet?

How To: .cue/.bin Dateien in .iso konvertieren

Es ist äusserst einfach Images von CDs oder DVDs unter Linux einzubinden, ohne diese auf ein physikalisches Medium brennen zu müssen.

ISOs, häufig anhand der .iso Endung erkennbar, sind nach den Vorgaben der Internationalen Standartisierungs Organisation erstellte Abbilder von Medien. Wie man diese unter Ubuntu mounten kann, haben wir bereits beschrieben: ISOs unter Ubuntu mounten

Hin und wieder kommt man allerdings an kombinierten .cue/.bin Dateien vorbei. Häufig empfiehlt es sich diese Dateien einfach in ein ISO-Format zu konvertieren, mit bchunk geht das schnell und ohne Probleme.

Zuvor muss bchunk installiert werden, das kann man direkt über das Software Center machen oder auf der Konsole mittels APT:

sudo apt-get install bchunk
.cue/.bin Image nach .iso umwandeln mit bchunk
.cue/.bin Image nach .iso umwandeln mit bchunk

Um nicht zu sehr zu verwirren ersparen wir uns die kompletten Optionen von bchunk und behandeln eine reine Umwandlung von .cue/.bin Dateien ins ISO-Format. Dies geht mit folgendem Befehl:

bchunk image.bin image.cue image.iso

Das war es auch schon, denn nach kurzer Zeit ist eine .iso Datei erstellt, die nun gemountet werden kann.

War der Artikel für euch hilfreich, dann freuen wir uns über ein +1 oder like. Gerne könnt ihr den Artikel auch teilen.

Steam für Linux kommt bald

Was lange währt, wird endlich gut! So oder so ähnlich könnte der Untertitel zur aktuellen Meldung lauten, denn schon häufig munkelte man über eine Steam-Umsetzung für Linux, leider ohne handfeste Beweise. Der Phoronix Chefredakteur Michael Larabel war allerdings bei Valve eingeladen und konnte sich einen ersten Eindruck Steam Client, der auf einem Ubuntu 11.10 Testrechner lief, machen.

Steam Client Linux
Nativer Steam Client auf dem Ubuntu 11.10 Testsystem in der Valve Firmenzentrale. Foto: Michael Larabel/Phoronix

Diese Erfahrung liess er recht schnell per Twitter ins große weite Netz hinausfliegen:

Als erste Portierung soll Left 4 Dead 2 angegangen werden. Weitere Spiele von Valve werden folgen, ausserdem animiere man andere Hersteller Linux Portierungen der über Steam vertriebenen Spiele zu Verfügung zu stellen. Eine Veröffentlichung, bzw. ein Start des Betatestes könnte noch vor dem Oktoberfest möglich sein, wie Larabel verlauten liess.

Das sind wirklich gute Neuigkeiten, denn bisher sind Spieler, die auf Linux als Hauptsystem zurückgreifen wollen, an die Spiele gebunden, die mittels Wine gut unterstützt werden. Natürlich gibt es durchaus gute native Spiele für Linux, die großen „Publikumsmagnete“ sind allerdings noch nicht ohne ein Schlückchen Wein zu erleben.

Was sagt ihr dazu? Mit breiter Unterstützung von aktuellen Titeln könnte Linux somit ernsthaft als alleiniges System auf eurem PC beheimatet sein?

Open Idea CMA – PS Vita mit Linux verbinden

Sonys PS VITA ist nun gute vier Wochen auf dem Markt und die Nutzer erfreuen sich an den Games, doch irgendwann kommt der Punkt, wo man sein System sichern will. Momentan gibt es dafür nur Sonys eigenen Content Manager Assistant (CMA) für Windows und Mac, doch was ist mit Linux Nutzern? Momentan nichts von Sonys Seite, da kommt wieder die Community ins Spiel.

Quelle: Sony

Im Forum von wololo, dem Erfinder vom Homebrew „wagic“ und dem Vita Homebrew Loader, hat sich der Coder Dridri zusammen mit yifan lu, welcher wiederum für das openCMA zuständig ist, zusammengesetzt und eine open-source library für die Vita entwickelt – mit welcher es nun möglich sein wird die PS VITA mit Linux Rechnern zu verbinden, anscheinend momentan auch NUR mit Linux Systemen.

Mit der Library wird es auch anderen Entwicklern möglich sein, die Vita in ihre eignen Medienprogramme einzubinden.

Momentan wird nach Testern gesucht, wer also Interesse hat, kann sich im Thread dazu anmelden.

Da es die Entwickler erwähnt haben, will ich ebenfalls darauf hinweisen, dass es damit nicht möglich ist, illegal Spiele abzuspielen.

HowTo: Ubuntu auf dem Android Smartphone

Ubuntu auf nahezu jedem Android Smartphone auszuführen ist wirklich kein Hexenwerk, dank Anleitungen, Installer, fertigen Images und Skripten kann Jeder Ubuntu auf seinem Gerät ausführen.

Ubuntu auf dem Samsung Galaxy Note
Ubuntu auf dem Samsung Galaxy Note mit LXDE und Firefox

Wie es Schritt für Schritt geht, zeige ich euch mit diesem HowTo-Artikel. Der vorgestellte Weg ist einer von vielen, aber sicherlich einer der Einfachsten.

Welche Voraussetzungen müssen erfüllt sein, damit Ubuntu auf dem Android Gerät ausgeführt werden kann?

  • Root muss vorhanden sein
  • Busybox muss installiert sein
  • Der Kernel muss ein Loop Device unterstützen
  • USB-Debugging muss aktiviert sein

Sind die Voraussetzungen erfüllt, kann es schon losgehen. Im Android Market befindet sich die „Ubuntu Installer“ App, sowohl in einer Lite, als auch in einer Paid Version. In der Paid Version hat man die Möglichkeit Ubuntu direkt zu starten und die Image Dateien über einen FTP Server herunter zu laden. Ansonsten sind beide Versionen identisch und eher eine grafische Anleitung mit Links, als eine vollumfängliche App.

Um Ubuntu zu starten benötigt man das Boot-Skript, ein Ubuntu Image (steht in einer minimalen und in einer full-Variante zum Download zur Verfügung), einen Terminal Emulator und einen VNC Viewer.

Die App verlinkt direkt auf die Downloads, die man sich direkt auf dem Android Gerät laden kann. Hier gilt es allerdings zu bedenken, dass der verfügbare Speicherplatz zur Verfügung stehen muss, wenn man das Image auch auf dem Android entpackt.

Das Minimal-Image ist rund 500MB groß (entpackt 2,5GB) und beinhaltet ein LXDE als grafische Oberfläche und ansonsten nur die absolute Minimalausstattung. Im Full Image sind bereits OpenOffice, Thunderbird, Firefox usw. installiert, was zu 1,5GB im Download und 3,5GB entpackt führt. Rund 1,5GB Speicherplatz sind für eigene Programme vorgesehen, damit man das System auch sinnvoll nutzen kann.

Ubuntu Installer für Android
Ubuntu Installer für Android: Alle benötigten Dateien werden direkt aus dem Programm heraus verlinkt und zum Download angeboten

Hat man bereits einen Terminal Emulator installiert, kann man sich den Download der verlinkten Variante sparen, es funktionieren hier alle Apps, die ein Terminal auf den lokalen Host zulassen. Bei der VNC Anwendung verhält es sich ähnlich, in Ubuntu wird letztendlich ein VNC Server gestartet, der auf Port 5900 Daten liefert und von jeder VNC Anwendung angefragt werden kann.

Hat man das Image und Bootskript heruntergeladen, kann man sie entpacken und in den Ordner „ubuntu“ (ist selbst anzulegen) ins Rootverzeichnis der SD-Karte verschieben. Hat man die Paid-Version des Installers gekauft und installiert, kann man nun durch einen Klick direkt starten, die Lite Version erfordert nun die Terminal App.

Ubuntu unter Android starten
Ubuntu unter Android starten: Mit wenigen Befehlen ist Ubuntu mittels Bootskript gestartet

 

In der gestarteten Terminal App führt man folgende Befehle aus:

  1. su
  2. cd sdcard
  3. cd ubuntu
  4. sh ubuntu.sh

Es wird nun beim ersten Start das Loop-Device erstellt, der VNC Server gestartet und die IP Adresse angezeigt, über welche dieser erreichbar ist, denn man kann aus einem lokalen Netzwerk auch auf diesen zugreifen. Nach der Eingabe der eigenen Bildschirmauflösung ist man bereits fertig und man kann mit einem VNC Viewer auf das laufende Ubuntu zugreifen. Möchte man Befehle im Terminal absetzen, tut man dies vorzugsweise nicht über die Oberfläche sondern in der Terminal App.

Ubuntu mit LXDE unter Android
Ubuntu mit LXDE unter Android: Mit dem VNC Viewer kann auf das laufende System zugegriffen werden

Nun hat man ein vollwertiges Ubuntu auf dem Android Gerät laufen und kann munter hin und her wechseln. Um das System zu beenden einfach im Terminal „exit“ eingeben, die benötigten Skripte um Ubuntu sauber zu beenden werden hiermit ausgeführt.

Die Geschwindigkeit hängt natürlich vom verwendeten Android Gerät ab, ein 1GHz Prozessor wird jedoch als Voraussetzung angesehen. Auf dem Samsung Galaxy Note lief Ubuntu sehr gut bedienbar, natürlich sind Eingaben mit einer externen Maus und Tastatur wesentlich effektiver, aber man installiert sich solche Kombinationen ohnehin gerne aus einem Grund: Weil man es kann!

Die aktuellen Images und das Bootskript gibt es immer im XDA Developer Forumsbeitrag, der als Quelle hier verlinkt ist.

Howto: Absinthe Jailbreak für iPhone 4S und iPad 2 unter Linux

Darauf haben Besitzer eines iPhone 4S oder eines iPad 2 einige Zeit gewartet, ein unteathered Jailbreak für iOS5. Vor ein paar Tagen ist Absinthe erschienen und steht zum Download zur Verfügung.

Neben Versionen für Windows und MacOS gibt es eine Linux Version, anhand der Nutzung von Ubuntu soll hiermit kurz erklärt werden wie ihr euer iOS Gerät zu einem erfolgreichen Jailbreak verhelfen könnt.

Greenpoison Absinthe Logo

Solltet ihr euer Gerät noch nicht mit eurem Ubuntu-Rechner verbunden haben, dann fehlt euch wahrscheinlich noch ein Paket: libimobiledevice-utils. Vorzugsweise sollte das Paket in seiner jeweils aktuellen Version aus der eigenen PPA installiert werden, die man mit:

sudo add-apt-repository ppa:pmcenery/ppa

hinzufügen kann. Anschliessend sollte die neue Quelle eingelesen und die Paketliste aktualisiert werden:

sudo apt-get update

Nun kann das Paket installiert werden:

sudo apt-get install libimobiledevice-utils

Ein Neustart des Rechners kann nicht schaden. Nun benötigt man Absinthe, welches man auf der Webseite in der Version 0.3 herunterladen kann: Download Absinthe v0.3

Das heruntergeladene Archiv entpacken und dann entsprechend der installierten Variante entweder absinthe.x86 (für 32Bit) oder absinthe.x86_64 (für 64Bit) starten.

Ein Doppelklick auf die passende Version startet Absinthe
Ein Doppelklick auf die passende Version startet Absinthe

Das iPhone 4S oder iPad 2 mit dem PC verbinden, einschalten und im Absinthe Startbildschirm auf „Jailbreak“ drücken. Nach einem automatischen Reboot des Gerätes sollte der Cydia Market installiert sein und der Jailbreak war erfolgreich.

Gerät verbinden und Jailbreak starten
Gerät verbinden und Jailbreak starten

Anmerkungen: Das Gerät sollte auf iOS 5.0.1 laufen, eventuell vorher ein Update durchführen. Ein Update auf iOS 5.0.2, sobald es erscheint sollte nicht installiert werden, damit wird der Jailbreak wieder weg sein! Ein Jailbreak lässt den Garantieanspruch erlöschen. Ihr handelt auf eigene Gefahr, nodch.de übernimmt keine Verantwortung für Schäden an den Geräten!

HowTo: Box.com unter Ubuntu mit WebDAV einbinden

Box haut im Moment ja einiges an Speicher raus, gerade in Verbindung mit verschiedenen Herstellern und deren Aktionen. Schnell können es 50GB sein, die man unkompliziert als stolzer Besitzer eines LG, Sony Ericsson usw. Gerätes einheimsen kann.

Ja, ich weiss, man kann sich den zusätzlichen Speicher auch erschleichen, genügend Blogartikel dazu gibt es im Netz. Ich habe bewusst darauf verzichtet, denn mit solchen Aktionen schadet ihr den Anbietern und am Ende euch selbst, weil es die Dienste vielleicht schon bald nicht mehr gibt, da sie sich nicht mehr finanzieren können, oder sie lassen in den Qualität nach, da die Mischkalkulation nicht mehr klappt.

Das musste einfach mal gesagt werden, denn genau in solchen Momenten geht mir die „wir wollen alles kostenlos“-Mentalität sehr gegen den Strich, da man sich letztendlich immer nur selbst schadet, bei solchen Vorteilserschleichungen.

Wer nun seinen Box Account bequem im Ubuntu Dateimanager eingebunden haben möchte und sich den Weg und Zugriff über die Webseite ersparen will, der kann sich mittels WebDAV mit dem Box-Server verbinden:

Ubuntu Box.com WebDAV Einrichtung
Ubuntu Box.com WebDAV Einrichtung
  1. Auf „Datei -> Mit Server verbinden“ gehen
  2. Im folgenden Bildschirm die entsprechenden Einstellungen (Server muss dav.box.com/dav lauten, Stand 18.09.2014!) auswählen
  3. Für Benutzername und Passwort die entsprechenden Box.com Accountdaten nutzen
  4. Auf „Verbinden“ drücken
Anschliessend öffnet sich automatisch der Dateimanager und zeigt euren Box-Account an. Man kann nun Daten hin und her kopieren und Box.com fast wie einen lokalen Ordner nutzen.
Sollte dieser kleine Tip für euch nützlich gewesen sein, dann sagt es doch weiter, vielleicht hilft er auch anderen Nutzern!

NixNote ist Evernote für Linux

Evernote ist mein ausgelagertes und wesentlich effektiveres Gedächtnis! Man kann so ziemlich alles festhalten, von Kurznotizen, zu Zeichnungen, Audio- und Videoaufnahmen, Fotos, Screenshots, einfach alles. All diese Dinge kann man schnell und unkompliziert festhalten und für den späteren Gebrauch ablegen. Besonders schön: Evernote ist quasi von jedem System aus erreichbar, egal ob Android, iOS, Windows oder MacOS.

NixNote - Evernote Client für Linux
NixNote - Evernote Client für Linux

Wer die Liste genauer anschaut, der wird Linux in der Aufzählung vermissen, dann das wird von Evernote nicht nativ unterstützt. Zwar lässt sich die Evernote Windows-Version mittlerweile recht reibungslos mittels Wine installieren und nutzen, leider erscheint sie mir aber weiterhin etwas zähflüssig, daher bin ich vor einiger Zeit auf NixNote gestossen (hiess damals noch Nevernote), einer Andwendung, die ähnliche Funktionen wie Evernote bietet und sich mit Evernote verbinden und synchronisieren kann. Zwar fehlen ein paar Dinge wie Aufnahmen mit der Webcam oder Freihandzeichnungen, dafür bietet es aber eine Verschlüsselung auf Datenbankebene und zeigt mir PDF Dateien „In-Line“ an – beides sehr nett.

Wer bereits Evernote im Einsatz hat und Linux als Desktopsystem bevorzugt, der sollte sich NixNote einmal anschauen. Unter Ubuntu ist es, dank verfügbarer PPA schnell installiert:

[sws_shortcode width=“450″ float=“none“ class=“sws_grey“] [/sws_shortcode]

Nutzt ihr Evernote oder Alternativen? Wie sortiert ihr eure Gedanken und erinnert euch an das, was ihr noch tun wolltet? Lasst es uns wissen!

Ubuntu One Windows Client ab sofort verfügbar

Es ist der Blick über den Tellerrand, abseits der täglichen Hypethemen zu Android, Apple und Facebook, denn es gibt Neuigkeiten aus meinem „Stammrevier“ Ubuntu: Ubuntu One funktioniert nun auf Windows, dank eigenem Client.

Ubuntu One Windows Client
Ubuntu One Windows Client

Über Ubuntu One habe ich schon einiges geschrieben, der Dienst bietet, wie Dropbox, Onlinespeicher an und kommt seit Ubuntu 9.04 in jeder Installation mit. Es gibt 2GB kostenlos, mehr Speicherplatz kann hinzugebucht werden. Mit Ubuntu One lassen sich mehr und mehr Anwendungsdaten direkt synchronisieren, darüber hinaus natürlich Adressbücher, Musik und mehr. Nachdem ein eigener Android Client für Kontakte veröffentlicht wurde, folgt nun ein Windows Client. Konsequent und ein Schritt zur Plattformunabhängigkeit, den ich im Vergleich zwischen Ubuntu One und Dropbox bereits bemängelt hatte.

Ubuntu One ist unter Windows schnell installiert:

  • Client herunterladen: Download Ubuntu One Windows Client
  • Den Installer ausführen
  • Zum Abschluss der Installation in einen bestehenden Ubuntu One Account einloggen oder einen neuen Account anlegen
  • „Start Setup“ auswählen und die Ordner markieren, die synchronisiert werden soll
Das war es dann auch schon, alle Dateien in den Ordnern werden synchronisiert und sind auf allen PCs, die mit Ubuntu One Clients betrieben werden, vorhanden. Musik- und Videodaten können gestreamt und Ordner mit anderen Personen/Benutzern geteilt werden.

Nutzt man Ubuntu One schon recht intensiv auf der Ubuntu-Seite, dann ist der Windows Client eventuell eine recht willkommene Lösung. Inwiefern ein Neueinstieg Sinn macht, oder ein Wechsel von Dropbox hin zu Ubuntu One, darf in Anbetracht der Gerüchte zu einem Dienst wie Google Drive, durchaus in Frage gestellt werden.

Was haltet ihr von Ubuntu One, Dropbox oder einem eventuellen Google Drive?

Nginx konfigurieren und PHP als FastCGI bereitstellen

Teil 3 unserer kleinen HowTo-Reihe. Wir zeigen euch, wie man eine WordPress Webseite mit Nginx auf Ubuntu Server beschleunigen kann. Nachdem wir Nginx bereits installiert haben und PHP und MySQL, wird nun erklärt, wie man ein reibungsloses Zusammenspiel konfiguriert. [sws_divider_top]Bevor ich nun erkläre wie man PHP in Nginx einbindet, müssen wir ersteinmal wissen, wie die Nginx Konfiguration funktioniert. Die Konfiguration hat eine feste, logische Struktur:

# Hier werden nur Einstellungen vorgenommen die ganz global sind # wie z.b. der User, womit nginx ausgeführt werden soll
befehl;
befehl;

events {
  # hier kann einstellt werden wie nginx mit Verbindungen umgeht
  befehl;
}

http {
  # Einstellungen für den http Server
  befehl;
  befehl;
  include conf/mime.types; # Einstellungen aus anderer Datei dazuholen 

  server {
    # Einstellungen für einen Host
    listen nodch.de; # dieser Serverbereich gilt für die domain nodch.de
    befehl;
    befehl;

    location / {
      # Einstellungen für das Root Verzeichnis 
      befehl;
    }

    location /download/ {
      # Einstellungen für /downloads
      befehl;
    }

    location ~* ^.+\.(jpg|jpeg|gif)$ {
      # Einstellungen für alle URLs die auf .jpg, .jpeg oder .gif enden
      befehl;
    }
  }
}

Der server und der location Bereich kann beliebig oft vorkommen, solange er an der richtigen Sstelle ist. Einige Befehle können nur in definierten Bereichen stehen. Ich werde euch hier die wichtigsten Funktionen für jeden Bereich erklären.

Globale Einstellungen

user             www www;             # nginx wird als User www in der Gruppe www ausgeführt 
worker_processes 2;                   # nginx wird 2 Verarbeiter Prozesse starten
pid              /var/run/nginx.pid;  # pid file wird dort gespeichert

Außerdem kann noch der error_log definiert werden, jedoch separiere ich diese immer in die einzelnen Server.  Wird sie oben angegeben, sieht man im log auch globale Fehler. Eine komplette Auflistung aller globalen Einstellungen findet man im Nginx Wiki#NginxHttpMainModule. Mit worker_processes und dem event Bereich könnt ihr die Performance des Servers beeinflussen. Der event Bereich lässt verschiedene Einstellungen zu, der Wichtigste ist aber:

worker_connections 1024;

Wenn ihr worker_proesses * worker_connections rechnet, erhaltet ihr die maximale Anzahl gleichzeitiger Clients, im Beispiel also maximal 2048. Auch hier findet ihr wieder alle möglichen Einstellungen im Nginx Wiki#NginxHttpEventsModule.

Die richtige Wahl der worker_processes ist wichtig! Wollt ihr eine Webseite haben, die sehr Last intensiv ist, also mit SSL und GZIP, so sollte die Zahl der Worker Prozesse nicht die Anzahl der CPU Cores übersteigen. Verwendet ihr den Server aber als Host für statischen Content, kann die Zahl erhöht werden, um einen schnellstmöglichen Dateizugriff zu haben.

HTTP Server Einstellungen

Alle hier getätigten Einstellungen wirken sich direkt auf die eingetragenen server Bereiche aus. Im http Bereich werden in der Regel Einstellungen gemacht, die für alle server Bereiche gleich sind, wie beispielsweise das access log format, oder gzip. Diese Befehle können problemlos im server Bereich überschieben werden. Hier seht ihr wie der http Bereich bei nodch.de aussieht:

include /etc/nginx/mime.types;

log_not_found off; # kein Status 404 logen
                   # Log format soll Apache ähnlich sein
log_format main	'$remote_addr - $remote_user [$time_local] "$request"'
 ' $status $body_bytes_sent "$http_referer" "$http_user_agent"';

sendfile           on;  # Erlaubt sendfile(). Infos hier
tcp_nodelay        on;  # Für sendfile()
keepalive_timeout  6;   # Verbindungen früh wieder schließen
server_tokens      off; # Versionsnummer nicht auf der Fehlerseite zeigen

gzip               on;    # GZip Anschalten
gzip_http_version  1.0;
gzip_comp_level    2;     # Kompressionslevel. Performancesache
gzip_proxied       any;   # Proxy Verhalten
gzip_min_length	   1100;  # erst ab 1100 byte größe kompremieren
gzip_buffers       16 8k;
# Folgende Dateitypen kompremieren
gzip_types         text/plain text/html text/css application/x-javascript
                   application/xml application/xml+rss text/javascript;
gzip_disable       "MSIE [1-6].(?!.*SV1)"; # GZip für den IE6 auschalten
gzip_vary          on;  # Vary Header senden

# server und zusatzconfigs einbinden
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;

Dies ist eine vergleichsweise simple Konfiguration, wir definieren, das wir immer GZip benutzen wollen, jedoch nicht für den IE6. Außerdem setzen wir das keepalive_timeout stark runter, um erhöhtes Trafficaufkommen problemlos zu verarbeiten. Außerdem ändern wir das Log Format in das von Apache, um Analyse Tools zu benutzen. Eine Auflistung aller Core Befehle gibt es auch wieder im Nginx Wiki#NginxHttpCoreModule sowie eine Übersicht über alle anderen Module. Viel wichtiger als der http Bereich, ist für uns aber der server Bereich.

Der server Bereich ist ähnlich dem VirtualHost Eintrag im Apache. Hier ein Beispiel:

server {
  server_name  nodch.de; # Dieser Bereich ist nur für die Domain nodch.de   # nodch.de wird auf www.nodch.de umgeschrieben
  rewrite ^(.*)	https://nodch.de$1 permanent;
}

server {
  listen        80; # Port 80 benutzen   # Dieser Bereich gilt für diese beiden Domains
  server_name   www.nodch.de photo.nodch.de; 

  root          /var/www/nodch.de/httpdocs; # Hier liegen die Dateien
  # Log hier schreiben und dabei das "main"-Format benutzen
  access_log    /var/www/nodch.de/logs/access.log  main;
  # Die Fehler landen in dieser Datei
  error_log     /var/www/nodch.de/logs/error.log;

  # die index Datei ist index.php wenn nicht da index.html ... usw.
  index         index.php index.html index.htm;
}

Wenn nun eine [sws_highlight hlcolor=“fbfac7″]index.html[/sws_highlight] Datei in [sws_highlight hlcolor=“fbfac7″]/var/www/nodch.de/httpdocs[/sws_highlight]  liegt und euer Server ist gestartet, dann könnt ihr mit eurem Webbrowser darauf zugreifen und ihr werdet den Inhalt der index.html dargestellt bekommen. Nur wird es ohne weiteres nicht klappen nodch.de aufzurufen und eure Datei zu sehen 🙂 Ihr müsst es entweder auf localhost ändern oder eure eigene Domain eintragen. Aber insoweit ist Nginx konfiguriert um statischen Content zu hosten, welcher brav komprimiert wird. Im server Bereich könnt ihr eigene location Bereiche anlegen, in denen Befehle hinterlegt werden können, die eben nur an dieser location gültig sind. Hierzu ein Beispiel:

# Gilt für die Hauptseite
location / {
  # URLs probieren ob es sie gibt, letzter Eintrag ist immer Default
  try_files $uri $uri/ /index.php;
}
 # Die Datei piwik.js, egal wo sie liegt bekommt eine Cachezeit von 90 Tagen.
location ~ piwik.js$ {
  expires 90d;
}

# Das favicon interessiert uns nicht. Log aus.
location = /favicon.ico {
  access_log off;
}

# Adressen die mit wp-content, js oder css anfangen
location ~ ^/(wp-content|js|css)/  {
  expires 30d; # Cachzeit 30 Tage
  root    /var/www/nodch.de/static; # Dateien aus anderen Ordner beziehen
}

Der location Bereich kann ziemlich frei, mithilfe von Regex bestimmt werden. Mithilfe von Steuerzeichen kann außerdem bestimmt werden, wie wichtig ein location Bereich ist.

  • =   Bedeutet, dass diese location fest ist, kein Regex
  • ~   Regex ist case sensitiv
  • *~ Regex ist case insensitiv
  • ^~ Sucht ein Regex, hört an dieser location auf wenn gefunden

Genauere Infos erhaltet ihr natürlich wieder im Nginx Wiki#location, auch sind die default Konfigurationen gut kommentiert, sodass man damit auch gleich loslegen kann.[sws_divider_top]

PHP einbinden

Mit dem vorherigen Artikel habt ihr schon PHP installiert und als FastCGI Anwendung auf 127.0.0.1:9000 gespawnt. Um diese nun mit nginx anzusteuern, müssen zwei kleine Modifikationen vorgenommen werden. Öffnet zuerst die Datei [sws_highlight hlcolor=“fbfac7″]/etc/nginx/fastcgi_params[/sws_highlight] . Der Inhalt sollte so aussehen:

fastcgi_param	QUERY_STRING		$query_string;
fastcgi_param	REQUEST_METHOD		$request_method;
fastcgi_param	CONTENT_TYPE		$content_type;
fastcgi_param	CONTENT_LENGTH		$content_length;

fastcgi_param	SCRIPT_FILENAME		$document_root$fastcgi_script_name;
fastcgi_param	SCRIPT_NAME		$fastcgi_script_name;
fastcgi_param	REQUEST_URI		$request_uri;
fastcgi_param	DOCUMENT_URI		$document_uri;
fastcgi_param	DOCUMENT_ROOT		$document_root;
fastcgi_param	SERVER_PROTOCOL		$server_protocol;

fastcgi_param	GATEWAY_INTERFACE	CGI/1.1;
fastcgi_param	SERVER_SOFTWARE		nginx/$nginx_version;

fastcgi_param	REMOTE_ADDR		$remote_addr;
fastcgi_param	REMOTE_PORT		$remote_port;
fastcgi_param	SERVER_ADDR		$server_addr;
fastcgi_param	SERVER_PORT		$server_port;
fastcgi_param	SERVER_NAME		$server_name;

Es ist wichtig, dass in SCRIPT_FILENAME der absolute Pfad verwendet wird, denn dieser wird an die PHP Worker gegeben. Würde ein vermeindlich relativer Dateipfad übergeben werden, wie z.B. [sws_highlight hlcolor=“fbfac7″]/wordpress/index.php[/sws_highlight], werdet ihr die Fehlermeldung No input file specified bekommen. Er muss also absolut sein: [sws_highlight hlcolor=“fbfac7″]/var/www/prad/zu/index.php[/sws_highlight].

Ist diese Anpassung gemacht, öffnet bitte die Datei, in der ein server Bereich vorhanden ist. Fügt eine neue location hinzu:

location ~ \.php$ {
  include                  fastcgi_params; # Parameter einbinden
  fastcgi_pass             127.0.0.1:9000; # Anfrage an Worker weitergeben
  fastcgi_index	           index.php; # Standard Dateiname
  fastcgi_split_path_info  ^(.+\.php)(/.+)$; # Parameter abtrennen
  fastcgi_intercept_errors on; # Fehler ausgeben
}

Diese location bezieht sich auf alle PHP Dateien und reicht die Verarbeitung an unsere PHP Worker weiter. Die Parameter werden von der URL abgetrennt, was bewirkt, das auch URL Parameter an PHP gegeben werden und normal benutzt werden können. Alternativ zu 127.0.0.1:900 kann auch ein Unix-Socket verwendet werden. Dazu im Startscript einfach nicht die Adresse 127.0.0.1:9000 sondern eine Datei wie [sws_highlight hlcolor=“fbfac7″]/var/socket/php.socket[/sws_highlight]  binden. Danach muss der Parameter fastcgi_pass angepasst werden:

fastcgi_pass unix:/var/socket/php.socket;

Das wars auch schon. Ihr könnt jetzt folgendes testen:

$ echo "<?php phpinfo(); ?>" > /var/www/eure/httpdocs/info.php

Dann einfach die info.php im Browser aufrufen und ihr werdet die PHP Konfigurationswebseite sehen!

Viel Spaß beim testen! Im nächsten Teil dieser Serie werde ich euch dann zeigen, wie ihr WordPress auf einer Nginx Umgebung benutzt und es mit Hilfe von W3TotalCache, sowie anderen Optimierungsmethoden spürbar schneller machen könnt.

[sws_divider_top] Teil 0: Einführung
Teil I: Installation der aktuellen Nginx-Version auf Ubuntu
Teil II: Installation von MySQL und PHP
Teil III: Nginx konfigurieren und PHP als FastCGI bereitstellen
– Alternativ: PHP-FPM Installieren und bereitstellen (folgt !)
Teil IV: Nginx für WordPress optimieren