Raspberry Pi: Webserver Nginx installieren

08 Aug
8. August 2012

Auf dem kleinen Wunderwerk, alias Raspberry Pi, läuft auch ein Webserver. Ich probierte den klassischen Apache 2 aus, wobei die Performance für mich nicht zufriedenstellend war. Somit entschied ich mich den Nginx Webserver zu installieren, welcher wesentlich runder läuft. Im Folgenden beschreibe ich, wie ihr diesen auf eurem Raspberry Pi installiert und einrichtet. Möchte man Ngnix mit Ruby on Rails installieren, so muss man erst bei Step 9 beginnen!

Voraussetzung: Raspbian oder vergleichbare Distribution installiert

Step 1

Die Installation geht dank dem Paketmanager APT denkbar einfach.

sudo apt-get install nginx

Step 2

Nun passen wir noch ein paar Werte bzgl. max. Prozesse an, so dass Nginx den Raspberry Pi nicht überlastet.

sudo sed -i "s/worker_processes 4;/worker_processes 1;/g" /etc/nginx/nginx.conf
sudo sed -i "s/worker_connections 768;/worker_connections 128;/g" /etc/nginx/nginx.conf

Step 3

Jetzt noch Ngix starten, damit er auch einen Nutzen hat 😉

sudo /etc/init.d/nginx start

Und das war’s schon. Fertig ist der Nginx installiert. Nun kann PHP (ich empfehle php5-fpm zu verwenden) und eine MySQL Datenbank wie unter jedem gewöhnlichen Debian Server nachinstalliert werden. Ebenfalls ist es möglich (siehe weiter unten) Ruby on Rails zu installieren.

PHP installieren

Step 4

Zuerst installieren wir PHP mit ein paar Standard-Erweiterungen mittels des Paketmanagers APT.

sudo apt-get install php5 php5-fpm php-pear php5-common php5-mcrypt php5-mysql php5-cli php5-gd

Step 5

Nun müssen wir PHP in nginx aktivieren. Dies machen wir, indem wir mittels eines Editors die folgende, erste Passage durch die zweite ersetzten. In nano speichert man mittels STRG + X und darauffolgend Y.

sudo nano /etc/nginx/sites-available/default

Step 7

Damit die index.php direkt geladen wird, müssen wir in derselben Datei wie in Step 3 wieder die erste durch die zweite, folgende Passage ersetzten.

sudo nano /etc/nginx/sites-available/default

ersetzen durch

Step 8

Jetzt müssen wir nginx und PHP starten.

sudo /etc/init.d/nginx restart
sudo /etc/init.d/php5-fpm restart

Nun läuft nginx mit PHP auf unserem Raspberry Pi. An dieser Stelle möchte ich noch darauf hinweisen das der Raspberry Pi bekanntlicherweise nicht der Leistungsstärkste ist und daher große Systeme, trotz des schlanken Webservers nginx, wie WordPress nur bedingt gut laufen werden.

Wie man Ruby on Rails zu Nginx installiert erkläre ich im Folgenden:

Ruby on Rails installieren

Step 9

Zunächst muss wir Ruby und Rails an sich installieren. Wie das geht erkläre ich im Tutorial Ruby on Rails installieren.

Step 10

Nun müssen wir noch ein paar benötigte Pakete installieren.

sudo apt-get install libcurl3-gnutls-dev libcurl3-openssl-dev

Step 11

Um die weiteren Schnitte ausführen zu können benötigen wir etwas mehr RAM als der Raspberry Pi bietet. Daher müssen wir unseren SWAP auf mind. 512 MB erweiteten. Wie das geht habe ich Artikel SWAP erweitern erklärt.

Step 12

Jetzt installieren wir das passenger-Modul für nginx, welches das benötigte Rack-Interface bereitstellt.

gem install passenger

Step 13

Mittels folgendem Befehl können wir nun das Installatios-Interface des passenger-Moduls für nginx starten. In diesem müssen wir zunächst mittels Enter einem Systemcheck zustimmen, daraufhin wählen wir Variante 1, wodurch wir nginx gleich korrekt kompilieren lassen. Alle weiteren Eingabeaufforderungen können wir mittels Enter bestätigen. Da nginx nun kompiliert wird dauert dies ein wenig (bei mir waren es ca. 50 min.).

rvmsudo passenger-install-nginx-module

Step 14

Nun müssen wir noch ein Startscript für nginx anlegen und dieses in den Autostart legen. Der Einfachheit halber könnt ihr dieses von meinem Server herunterladen.

wget https://jankarres.de/wp-content/uploads/2013/06/ngnix-startscript.gz
gunzip ngnix-startscript.gz
sudo mv ngnix-startscript /etc/init.d/nginx
sudo chmod +x /etc/init.d/nginx
sudo /usr/sbin/update-rc.d -f nginx defaults

Step 13

Zuletzt müssen wir nginx noch neustarten.

/etc/init.d/nginx restart

Nun läuft auch Nginx mit Ruby on Rails. Entsprechend wünsche ich gutes Coden 😉

Zugriff außerhalb des eigenen Netzwerks
Portfreigabe im Router

Soll der soeben installierte Dienst auch außerhalb des eigenen Netzwerkes verfügbar sein, so müssen folgende Ports im Router freigegeben werden. Wie man freigibt, beschrieb ich in dem Artikel Portforwarding bei Fritz!Box und Speedport.

80
443 (wenn SSL verwendet wird)
Dir hat der Artikel gefallen?
Teile ihn mit deinen Freunden!
110 Antworten
  1. Jan Karres says:

    Dieser Beitrag wurde am 15. Juni überarbeitet.

    Antworten
    • Dominic says:

      Hallo Jan,

      Vielen Dank für dieses und all die anderen tutorials. Leider scheiterts bei mir an Schritt 10. Und ich weiß nicht ganz, was ich mit dieser Fehlermeldung anfangen soll.

      Reading package lists… Done
      Building dependency tree
      Reading state information… Done
      Some packages could not be installed. This may mean that you have
      requested an impossible situation or if you are using the unstable
      distribution that some required packages have not yet been created
      or been moved out of Incoming.
      The following information may help to resolve the situation:

      The following packages have unmet dependencies:
      libcurl4-gnutls-dev : Conflicts: libcurl4-openssl-dev but 7.38.0-4+deb8u2 is to be installed
      libcurl4-openssl-dev : Conflicts: libcurl4-gnutls-dev but 7.38.0-4+deb8u2 is to be installed
      E: Unable to correct problems, you have held broken packages.

      Vielleicht kannst du mir sagen, was das zu bedeuten hat? Danke und viele Grüße!

      Antworten
  2. Jan Karres says:

    Und am 29. Juni wurde er erneut überarbeitet.

    Antworten
  3. Ulv says:

    Hallo Jan, kannst Du bitte unter Step 5.) deutlich(er) machen, welches genau die erste und welches die zweite Passage sein soll?! Danke.
    P.S. Wo ist eigentlich Step 6.)? 🙂

    Antworten
  4. Henry says:

    Hey Jan, wäere cool wenn du noch beschreiben könntest wie mann einen SVN-Server mit ngnix zum laufen bringt =)
    Gruß Henry

    Antworten
    • Jan Karres says:

      SVN ich zwar net so wissend, da ich zu den Freunden von Git gehöre, aber ich habs mal auf die Todo-Liste geschrieben 🙂

      Antworten
  5. Darian says:

    [email protected] ~ $ sudo apt-get install nginx
    sudo: apt-get install: command not found

    ????????

    damit ist der anfang ja schon mal klasse

    Antworten
    • Jan Karres says:

      Unter Raspbian oder vergleichbaren Distribution? Falls ja, hast du dein System vorab schon mal irgendwie zerschossen 😀

      Antworten
  6. Marcus Moeller says:

    Mit sed -i kannst du Dateien direkt inline bearbeiten. Dann kannst du dir den Umweg sparen.

    Antworten
  7. Markus says:

    Danke für die Anleitung. Aber mir fehlen Erklärungen, warum so viele PHP-Module statt nur fpm. Belegen die anderen nicht umsonst Speicher?

    Antworten
    • Jan Karres says:

      Könnte man natürlich weglassen, jedoch sind dies Bibliotheken, die von vielen PHP Scripten benutzt werden und daher meist als Standard vorausgesetzt werden. Daher installiere ich sie in diesem Tutorial gleich mit.

      Antworten
  8. Birger says:

    Hallo Jan,

    wie bekomme ich den Webserver und die PHP-Anwendungen in einen Autostart-Mechanismus? Muss die Dienste immer manuell starten.

    Bin noch ein Newbie..

    Hab noch eine andere Frage an dich, die hier allerdings nicht so ins Thema passt:

    Habe gestern zum testen folgendes Kommando eingegeben: sudo chmod 777 /media/Boxes (glaub ich)

    Seitdem sehe ich die externe Festplatte des Raspberrys nicht mehr in der grafischen Umgebung des Raspbian OS. Kann das an dem Kommando gelegen haben?

    Nur Owncloud und BittorrentSync sollen eigentlich auf die Platte schreiben.

    Über eine Antwort würde ich mich sehr freuen.

    P.S.: Die Installationen des Webservers sowie die von Owncloud haben nach deiner Antwort hervorragend geklappt. Nur die Verbindung von Owncloud mit BittorrentSync (Die du ja auch nicht beschreibst) bekomme ich als Linux-Newbie noch nicht so richtig hin. Die Verbindung soll auf der externen Platte stattfinden. BittorrentSync erstellt dabei nur Sicherheitskopien meiner Bilder und mit Owncloud wollte ich sie verwalten.

    Antworten
    • Jan Karres says:

      Zu Chmod: Nein, sollte nicht daran liegen können.

      Zu PHP: Solle automatisch im Autostart sein. Wenn nicht kannst dus mittels folgenden Kommandos in den Autostart legen.

      sudo update-rc.d mysql defaults

      Gegenfrage: Wieso ein Backup mit Bittorrent Sync machen? Gibt einfachere Methoden z.B. mit rsync.

      Antworten
      • Birger says:

        von rsync habe ich noch nichts gehört, werde ich mir mal ansehen. Danke.

        Habe meine o.g. Probleme mehr oder weniger in den Griff bekomme, was mich allerdings noch nicht weitergebracht hat. Konnte mit Owncloud meine durch BittorrentSync gesicherten Daten „sehen“. Owncloud zeigt mir jedoch nur leere Ordner an, obwohl die Dateien da waren. Das habe ich auf der externen Platte kontrolliert. Keine Ahnung wieso.. Vllt waren es einfach zu viele Daten für Owncloud. (Also nur teilweise funktionsfähig)

        Dann habe ich es komplett neu mit Seafile (natürlich ohne Bittorrentsync und Owncloud) probiert, was an sich schon wesentlich schneller lief. Jedoch konnte Seafile keine Synchronisierung durchführen. Im Client stand immer nur „Indiziere Dateien“ und nix weiter passierte. Verstehe ich ebenfalls nicht, da die Synchronisierung mit Seafile bei kleinen Ordnern gut funktionierte. (Funktioniert also ebenfalls nicht).

        Nun bin ich mit meinem Latein am Ende.

        Vllt. beschreibe ich einfach mal mein Problem:

        Mein Mac ist ziemlich voll mit Daten die ich permanent brauche. Daher liegen meine Bilder und meine Musik (bisher ungesichert) auf meiner Timecapsule, die als NAS fungiert. Natürlich wird ein Backup meines Macs mit TimeMachine auf der Timecapsule erstellt, da ich jeodoch wie gesagt die Musik und meine Bilder auslagern musste, liegen diese nun ungesichert auf der Timecapsule. Nun wollte ich es so gestalten, dass sobald sich etwas verändert, der 24/7 Raspi meinen Musik- und Bilderordner als Sicherung auf einer externen Platte spiegelt. Darüber hinaus hatte ich es mir eben so vorgestellt, dass ich mit Owncloud auch von außen darauf zugreifen kann, was anscheinen aufgrund der Datenmengen nicht funktioniert.

        Vllt. hast du ja noch eine Idee wie man mein Problem lösen kann.

        Antworten
        • Jan Karres says:

          Bzgl. Seafile: Bei vielen Dateien dauert das Indizieren der Dateien sehr lang. Da heißt es einfach abwarten. Zum sichern wie gesagt rsync verwenden.

          Antworten
  9. Markus says:

    Hallo Jan ich hoffe du kannst mir helfen. Ich habe nun auf dem cubietruck ein gateway eingerichtet. Nun möchte ich owncloud darauf noch installieren und folglich auch nginx.
    Wenn ich bei Step 3 nginx zu starten möchte kommt das hier.

    nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)

    Kannst du damit was anfangen?

    Antworten
    • Markus says:

      läuft wohl noch apache ohne das ich es installiert habe

      sudo nano /etc/nginx/sites-available/default
      hier hab ich den port von nginx geändert und läuft jetzt

      Antworten
      • Stellios says:

        Ich bekomme denselben Fehler, wenn auch ohne Apache. Der einzige Wechsel, den ich hatte, war, dass ich jetzt hinter einer F!Box mit Freigaben für 8001 etc. hänge und vorher hinter einem ddwrt-Router war. Ich bin streng nach deinem Post vorgegangen. Installiert sind nginx, Seafile und Baikal mit php5.
        Mit netstat -ntpl bekomme ich folgendes:
        tcp 0 0 0.0.0.0:12001 0.0.0.0:* LISTEN 2344/seaf-server
        tcp 0 0 0.0.0.0:8001 0.0.0.0:* LISTEN 2307/ccnet-server
        tcp 0 0 0.0.0.0:5002 0.0.0.0:* LISTEN 2424/perl
        tcp 0 0 127.0.0.1:13418 0.0.0.0:* LISTEN 2307/ccnet-server
        tcp 0 0 0.0.0.0:139 0.0.0.0:* LISTEN 2446/smbd
        tcp 0 0 0.0.0.0:8082 0.0.0.0:* LISTEN 2345/httpserver
        tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 2486/sshd
        tcp 0 0 0.0.0.0:8888 0.0.0.0:* LISTEN 2385/perl
        tcp 0 0 0.0.0.0:445 0.0.0.0:* LISTEN 2446/smbd

        Auf Port 80 ist nichts besetzt. Selbst wenn ich versuche, mit sudo fuser -k 80/tcp die app, die auf Port 80 sitzt, zu killen, geht es nicht.

        Kann es sein, dass die F!Box dazwischenfunkt?

        Antworten
        • Stelios says:

          Ich korrigiere. Bei mir schlägt der bind auf 8001 fehl:
          nginx: [emerg] bind() to 0.0.0.0:8001 failed (98: Address already in use)

          Auf 8001 ist der ccnet-server (PID 2307). Wie sähe hier die Lösung aus? Wieso will nginx auf 8001 statt 80 binden?

          Antworten
          • Jan Karres says:

            Du hast da wohl einige Ports nach eigenen Wünschen konfiguriert. Pro Port kann nur ein Service laufen.

  10. Reiter says:

    Schönes tut… Hat mir sehr geholfen
    Eine Frage
    Über apt-get installiert er die nginx-1.2.1
    Hab mir dies nginx-1.4.4.tar.gz runter geladen

    Wie kann ich diese den nun installieren? Und nginx aktualisieren?
    Wäre super wenn du mir da helfen könntest
    Danke

    Antworten
    • Jan Karres says:

      Klingt nach Sourcecode und folglich müsstest du es händisch kompilieren und installieren. Dazu solltest du zuvor alle Installationen von nginx über den Paketmanager APT zuvor entfernen. Folglich wäre das ein eigenes Tutorial. Wenn du nicht zwingend eine neue Funktion, die es erst ab einer neueren Version als 1.2.1 gibt, benötigst ist diese Version völlig in Ordnung.

      Antworten
      • reiter says:

        hallo jan..
        danke für deine antwort.. wäre schön wenn du dafür eventuell mal noch ein tut machen würdest wie man sowas macht..
        mir gehts eigentlich darum .. er zeigt mir in der owncloud folgenden fehler…

        Einrichtungswarnung
        Ihr Web-Server ist noch nicht für eine Datei-Synchronisation konfiguriert, weil die WebDAV-Schnittstelle vermutlich defekt ist. Bitte überprüfen Sie die Instalationsanleitungen.

        darum wollte ich ne neue version von nginx installieren bzw updaten

        vielleicht kannst eventuell mal noch wenn du etwas zeit findest das tut von der owncloud ergänzen wie man diese auf einen usb stick/festplatte auslagert.. das würde mich brennend interessieren und andere user mit sicherheit auch..
        danke

        Antworten
        • Reiter says:

          Hallo Jan.. Kannst mir bei meiner letzten Frage nicht helfen?
          Noch ne frage…
          Wie bekomm ich den die owncloud ausgelagert auf einen USB Stick/Festplatte?

          Kannst mir da eventuell helfen?
          Danke

          Antworten
        • Jan Karres says:

          Owncloud funktioniert mit der, über APT verfügbaren Nginx Version. Ich denke du hast Step 8 der Owncloud Anleitung nicht ordentlich ausgeführt.

          Antworten
  11. JBL says:

    Hallo,

    bekomme nach „sudo apt-get install nginx“ folgende Meldungen angezeigt:

    update-rc.d: error: insserv rejected the script header
    dpkg: Fehler beim Bearbeiten von nginx-common (–configure):
    Unterprozess installiertes post-installation-Skript gab den Fehlerwert 1 zurück
    dpkg: Abhängigkeitsprobleme verhindern Konfiguration von nginx-full:
    nginx-full hängt ab von nginx-common (= 1.2.1-2.2+wheezy2); aber:
    Paket nginx-common ist noch nicht konfiguriert.

    dpkg: Fehler beim Bearbeiten von nginx-full (–configure):
    Abhängigkeitsprobleme – verbleibt unkonfiguriert
    dpkg: Abhängigkeitsprobleme verhindern Konfiguration von nginx:
    nginx hängt ab von nginx-full | nginx-light; aber:
    Paket nginx-full ist noch nicht konfiguriert.
    Paket nginx-light ist nicht installiert.

    dpkg: Fehler beim Bearbeiten von nginx (–configure):
    Abhängigkeitsprobleme – verbleibt unkonfiguriert
    Fehler traten auf beim Bearbeiten von:
    E: Sub-process /usr/bin/dpkg returned an error code (1).

    Gibt es hierfür Lösungsmöglichkeiten?

    Danke und Gruss JBL

    Antworten
    • Jan Karres says:

      Ui, das sieht nach einem argen hund aus. Schau mal ob folgendes hilft.

      sudo apt-get -f install
      sudo apt-get purge nginx
      sudo apt-get update
      sudo apt-get install nginx

      Antworten
    • JBL says:

      sudo apt-get -f install
      sudo-get purge nginx und
      sudo apt-get install ngingx liefern folgende Ergebnisse:

      Paketlisten werden gelesen…
      Abhängigkeitsbaum wird aufgebaut….
      Statusinformationen werden eingelesen….
      0 aktualisiert, 0 neu installiert, 0 zu entfernen und 0 nicht aktualisiert.
      3 nicht vollständig installiert oder entfernt.
      Nach dieser Operation werden 0 B Plattenplatz zusätzlich benutzt.
      nginx-common (1.2.1-2.2+wheezy2) wird eingerichtet …
      insserv: warning: script ‚mathkernel‘ missing LSB tags and overrides
      insserv: There is a loop between service pyload and mathkernel if stopped
      insserv: loop involving service mathkernel at depth 2
      insserv: loop involving service pyload at depth 1
      insserv: Stopping mathkernel depends on pyload and therefore on system facility `$all‘ which can not be true!
      insserv: exiting now without changing boot order!
      update-rc.d: error: insserv rejected the script header
      dpkg: Fehler beim Bearbeiten von nginx-common (–configure):
      Unterprozess installiertes post-installation-Skript gab den Fehlerwert 1 zurück
      dpkg: Abhängigkeitsprobleme verhindern Konfiguration von nginx-full:
      nginx-full hängt ab von nginx-common (= 1.2.1-2.2+wheezy2); aber:
      Paket nginx-common ist noch nicht konfiguriert.

      dpkg: Fehler beim Bearbeiten von nginx-full (–configure):
      Abhängigkeitsprobleme – verbleibt unkonfiguriert
      dpkg: Abhängigkeitsprobleme verhindern Konfiguration von nginx:
      nginx hängt ab von nginx-full | nginx-light; aber:
      Paket nginx-full ist noch nicht konfiguriert.
      Paket nginx-light ist nicht installiert.

      dpkg: Fehler beim Bearbeiten von nginx (–configure):
      Abhängigkeitsprobleme – verbleibt unkonfiguriert
      Fehler traten auf beim Bearbeiten von:
      nginx-common
      nginx-full
      nginx
      E: Sub-process /usr/bin/dpkg returned an error code (1)

      „Arger Hund“ heisst „neu installieren“?

      Antworten
  12. JBL says:

    Hallo Jan,

    verstehe ich das richtig, dass der NGINX-Server ohne ssl und nur für den Zugriff aus dem internen Netz (http, Port 80) eingerichtet worden ist?
    Ich möchte zusätzlich von außerhalb meines Netzes darauf zugreifen (z.B. für TTRSS). Kann ich bereits vorhandene SSL Zertifikate (aus meiner pyload) Installation dafür verwenden? Und wenn ja, wohin müssen diese kopiert werden und welche configs müssen wie angepasst werden?
    Danke.

    Antworten
    • Jan Karres says:

      Auf einen Webserver wie nginx kann man sowohl über das interne Netz als auch von Extern zugreifen (in letztem Fall muss Port 80 bzw. mit SSL auch Port 443 im Router freigegeben werden) – egal ob mit oder ohne SSL. Ein SSL Zertifikat, sofern es kein Wildcard Zertifikat ist, sollte nur an einer Stelle zum Einsatz kommen.

      Wie du ein SSL Zertifikat ausstellst und nginx entsprechend konfiguriertst ist leider nicht in zwei Sätzen erklärt. In dem Seafile Tutorial wird dies in Step 11 und 12 durchgeführt. Mit diesem Beispiel und/oder etwas googeln solltest du es aber recht schnell verstehen können 🙂

      Ein eigenes Tutorial in dem u.a. das erklärt wird steht bereits in meiner Todo-Liste.

      Antworten
  13. Heinz-Rolf says:

    Ich bekomme eine Fehlermeldung beim Synchronisieren einer Datei mit ca. 800 MB.
    “ Gateway Time-Out“. Kann ich irgendwo eine Zeit einstellen, die dieses Problem behebt?

    mfg Heinz-Rolf

    Antworten
    • Jan Karres says:

      Du könntest in der php.ini (ich glaube in /etc/php5/php.in) den Parameter max_execution_time hochsetzen. Reload/Restart von php5-fpm nicht vergessen!

      Antworten
  14. heinz-herbert says:

    Hi, ich bekomme den Fehler

    apt-get install php5-fpm
    E: Unable to locate package php5-fpm

    Auch mit dem Erweitern der sources.list um
    deb http://packages.dotdeb.org stable all
    deb-src http://packages.dotdeb.org stable all

    komme ich nicht weiter. Ideen?

    Antworten
    • Jan Karres says:

      Welches Betriebssystem verwendest du denn? Und bist du als root-User angemeldet, oder warum hast du das sudo entfernt?

      Antworten
  15. Jörg Fuchs says:

    Hm, nach Step 5 bekomme ich eine Fehlermeldung:

    Starting nginx: nginx: [emerg] „location“ directive is not allowed here in /etc/nginx/sites-enabled/default:62
    nginx: configuration file /etc/nginx/nginx.conf test failed

    Antworten
    • Jan Karres says:

      Anhand der Fehlerbeschreibung würde ich darauf tippen, dass du den angegebenen Codeblock an der falschen Stelle eingefügt hast. Versuchs doch einfach noch mal 😉

      Antworten
  16. Gabriel says:

    Hi, erstmal: Super Tutorials hier für den Pi! Vielen Dank dafür!

    Ich weiß nicht ob deine Anleitung veraltet ist oder nicht aber:

    Ich bin grad dabei nginx mit php und ruby on rails zum Laufen zu bringen. Ruby on Rails wurde nach deiner Anleitung richtig installiert (glaub ich zumindest, bin ins Bett gegangen nachdem die Installation gestartet war 🙂 ). Allerdings hatte ich Probleme mit Step 10.

    sudo apt-get install libcurl3-gnutls-dev libcurl3-openssl-dev

    wirft bei mir Fehler wegen unerfüllten Abhängigkeiten. Musste NUR das Paket libcurl4-openssl-dev installieren. Dann hat der passenger-installer allerdings immer noch rumgemeckert ihm würden die ruby-dev files fehlen. Um das zu reparieren musste ich noch das Paket ruby1.9.1-dev nachinstallieren. Auch wenn rvm die Version 1.9.3 installiert hat scheint das doch zu passen…

    Jetzt ist die Installation vom Passenger-Modul angelaufen… Mal schauen obs durchläuft…

    Trotzdem super Tutorial!

    Antworten
    • Martin Cz. says:

      Hi,
      ich finde Deine Tutorials auch hervorragend! Herzlichen Dank dafür!

      Bei mr das gleiche Problem, da ich allerdings ein totaler Linux-Newbie bin, komme ich bei Step 10 nicht weiter.

      Antworten
  17. derwegi says:

    Hallo Jan,
    ich habe nach Punk 8 folgende Fehlermeldung:

    sudo /etc/init.d/nginx restart

    Restarting nginx: nginx: [emerg] unexpected end of file, expecting „}“ in /etc/nginx/sites-enabled/default:114

    kann ich das ignorieren?

    Antworten
    • Jan Karres says:

      Solltest du nicht ignorieren, denn nginx startet damit nicht mehr. Du wirst beim Kopieren der Konfiguration aus Sept 5 einen Fehler gemacht haben. Versuchs einfach erneut 🙂

      Antworten
  18. Paul Hein says:

    Wenn man nur nginx und php installiert braucht man dann noch punkt 13 – 15 mit dem Startscript oder läuft das auch so.
    War mir da etwas unsicher, da ich Ruby nicht brauche.

    Antworten
  19. JanS says:

    Hallo,
    wenn ich nun nginx mit php und ruby on rails installieren will. Wie muss ich da vorgehen?
    Deine Anleitung für Ruby on Rails kompiliert ja nginx neu. Heißt ich müsste php-fpm doch da auch mit reinbringen oder?

    Grüße

    Antworten
    • Jan Karres says:

      Ich erlaube mir von Anfang des Artikel zu zitieren: „Möchte man Ngnix mit Ruby on Rails installieren, so muss man erst bei Step 9 beginnen!“

      Antworten
      • JanS says:

        Hi,
        ich meinte wenn ich Nginx mit Ruby on Rails und PHP verwenden möchte. Wenn ich komplett erst bei Step 9 anfange dann habe ich ja kein PHP mit an Board.
        Kann sein das ich da brag etwas auf dem Schlauch stehe, wäre aber trotzdem nett wenn du mir das erläutern könntest wie ich vorgehen muss wenn ich beides benötige?

        Viele Grüße

        Antworten
        • Jan Karres says:

          Dann musst du natürlich auch php5-fpm installieren und dir zwei auf verschiedenen Ports laufende nginx virtual hosts anlegen. Das wäre aber schon wieder eine eigene Anleitung, weshalb ich dir empfehlen würde dich einfach mal via Suchmaschinen schlau zu machen wie man nginx virtual hosts konstruiert.

          Antworten
  20. Fabe says:

    Hallo Jan,
    zunächst vielen Dank für Deine wunderbaren Anleitungen. Seit einigen Tagen besitze ich auch endlich einen Raspberry Pi und habe schon einige Deiner Infos umgesetzt. Leider ist die Linux-Welt für mich noch komplett neu, so dass die Lerneffekte groß aber die Fragen daher manchmal etwas komisch sind.

    Ich habe zunächst dein Tutorial zum Aufsetzen des nginx-Webservers inkl. PHP befolgt. Alles hat wunderbar geklappt. Anschließend habe ich Baikal zusätzlich installiert und die Synchronisation von Kalender und Adressbuch ebenfalls hinbekommen. In Verbindung mit Baikal habe ich mich für die SSL-Variante entschlossen. Seitdem öffenet meine Webseite allerdings auch immer als verschlüsselte Seite, was ich vermeiden möchte.

    Meine Frage lautet daher: Kann ich die Baikal-Komponente weiterhein verschlüsselt austauschen, während die Webseiten, die ich auf dem Pi hoste, unverschlüsselt übertragen werden? Falls ja, wie stelle ich das an?

    Beste Grüße
    Fabe

    Antworten
    • Fabe says:

      Hallo nochmal,

      wie es scheint, habe ich eine Lösung gefunden: In der Nginx-Default-Datei unter ../sites-available/ habe ich jetzt mehrere Server angelegt. Zuvor habe ich bei noip.com einen weiteren Host angelegt. Jetzt klappt die Unterscheidung zwischen normalen Aufrufen von Webseiten (ungesichert) und der Baikal-Synchronisation (gesichert), da ich unterschiedliche Noip-Hosts für die beiden Zwecke verwende.

      Vermutlich ist diese Lösung umständlicher als nötig, aber für den Moment zweckmäßig.

      Grüße
      Fabe

      Antworten
    • Jan Karres says:

      Dazu brauchst du verschiedene nginx virtual hosts. Folglich hast du das schon richtig angegangen, auch wenn es nicht verschiedene Domains benötigen würde. Das Thema ist aber nicht ganz easy, weshalb das einen eigenen Artikel wert wäre.

      Antworten
  21. Michael says:

    Hallo Jan,

    Ich danke Dir für die super Doku.
    Jedoch habe ich folgendes Problem beim Ausführen von

    sudo /etc/init.d/nginx restart
    sudo /etc/init.d/php5-fpm restart

    Meldung:
    [emerg] unknown directive „pass“ in /etc/nginx/Sites-enabled/default:62
    Nginx: configuration file /etc/nginx/nginx.conf test failed

    Vielleicht kannst Du helfen.

    Vielen Dank!

    Servus

    Michael

    Antworten
  22. auch Jan says:

    nginx startet bei mir nicht mit dem Script. Ich muss nach dem Neustart manuel ’sudo nginx‘ eingeben (nicht /etc/init.d/nginx), damit es funktioniert. Hat das vielleicht etwas mit dem Pfad /opt/nginx zu tun, der bei mir nicht existiert?

    Antworten
    • Jan Karres says:

      In /opt/nginx sollte es auf jeden Fall nicht ein, wobei mich auch keine konkrete Idee habe. Vielleicht versuchst du es einfach noch einmal.

      Antworten
      • Carlo says:

        Habe das gleiche wie oben beschrieben. Nach dem Herunterladen und kopieren des Startscripts reagiert nginx bei Befehlen mit /etc/init.d/nginx XYZ nicht mehr.
        Habe mich beim Installieren genau an die Anleitung gehalten.
        Zumindest reagierte nginx vor dem Eintrag des Startscripts noch.

        Best Regards,
        Carlo

        Antworten
        • Martin says:

          Hallo Jan,

          habe ebenfalls das Problem, dass ich trotz penibler ausführung deiner Anleitung, nach einem Neustart des Pi’s mit deinem Startskript den nginx nicht zum laufen bekomme.

          ein „sudo nginx“ hilft zwar weiter, aber der cronjob ist damit quasi zwecklos…

          LG Martin

          Antworten
  23. nzm.knn says:

    Lieber Jan, vielen Dank für diesen tollen Blog, den ich regelmäßig und gerne lesen. Deine Beiträge sind wirklich eine Bereicherung und machen mir vieles einfacher. Ich habe eine kleine Frage. Ich habe so wie beschrieben den Raspberry Pi für Nginx und PHP fit gemacht, da ich gerne in Zukunft PHP lernen möchte. Meine Idee: den Raspberry Pi konfigurieren und ins LAN, dann Zugriff auf den usr/share/nginx/www/ um dort meine Dateien hochzuladen. Sicherlich könnte ich auf dem lokalen Rechner auch einen Server einrichten, aber waurm nicht den Raspberry nutzen?
    Ich habe nur folgendes Problem: Wenn ich per „nano index.html“ die Datei zu verändern versuche, wird mir angesagt, dass ich keine Berechtigung hätte. Und jedesmal als Root Dateien verändern möchte ich auch nicht. Was kann ich tun? Im Idealfall gebe ich dem www-Ordner die Eigenschaft, dass der User PI ihn beschreiben darf. Wie geht das?
    Ich danke dir vorab für deine Antwort.

    Antworten
    • Jan Karres says:

      Das hängt am Rechtesystem. Mit chmod bzw. chmod -r für Ordner kannst du die Rechte setzen. Folglich am besten mal mit diesem Kommando auseinandersetzen.

      Antworten
  24. Karl Georg Herzberg says:

    Hi Jan,

    erstmal Danke für diesen tollen Blog. Die Anleitungen versteht man wenigstens als RP-Anfänger und funktionieren auch noch (im gegensatz zu so manch einem YouTube-Typen)

    Habe aber trotzdem eine Frage: Funktioniert der Webserver auch zusammen mit dem NAS Fileserver, also das beide auf einem RP laufen?

    Antworten
    • Jan Karres says:

      Sollte kein Problem darstellen.

      Antworten
      • Karl Georg Herzberg says:

        Also einfach den Webserver noch drauf packen oder muss man da was beachten?

        Antworten
        • Jan Karres says:

          Einfach machen. Das sollte nichts Spezielles zu beachten sein 🙂

          Antworten
          • Karl Georg Herzberg says:

            Bei Step 10 gibt er mir folgende Fehlermeldung:
            Die folgenden Pakete haben unerfüllte Abhängigkeiten:
            libcurl4-gnutls-dev : Kollidiert mit: libcurl-dev
            Kollidiert mit: libcurl4-openssl-dev aber 7.26.0-1+wheezy11 soll installiert werden
            libcurl4-openssl-dev : Kollidiert mit: libcurl-dev
            Kollidiert mit: libcurl4-gnutls-dev aber 7.26.0-1+wheezy11 soll installiert werden
            E: Probleme können nicht korrigiert werden, Sie haben zurückgehaltene defekte Pakete.

          • Jan Karres says:

            Versuchs doch mal mit einem Update

            sudo apt-get update && sudo apt-get upgrade

          • Karl Georg Herzberg says:

            Funktioniert nicht. Der NAS-Fileserver und der Webserver laufen nicht zusammen auf einem RP. Von daher werde ich es nicht weiter probieren.

  25. Markus says:

    Wie sieht es den mit Step 2 bezüglich des Pi2 aus?
    Ist dieser Schritt hier noch immer sinvoll oder nicht bzw. mit anderen Werten

    Antworten
    • Karl Georg Herzberg says:

      Ich würde den Befehl drin lassen. NginX ist für Server mit min. 1-2GHz ausgelegt. Der RP hat, wenn du ihn nicht Übertaktest (höhere CPU-Temperatur) 900Hz.
      Aber ich kann da nichts genaues sagen, da ich und wahrscheinlich auch Jan nur den RP1 haben.
      Du kannst es gerne ausprobieren. Es schadet nicht wenn du es ohne Step 2 ausprobierst. Wenn es nicht wirklich so läuft, wie du es gerne hättest kannst du es ja mit Step 2 probieren. Schreib aber dein Ergebnis hier rein. Die Artikel müssen ja jetzt auf beide RPs ausgelegt werden.

      Antworten
    • Jan Karres says:

      Ich kann mich der Antwort von Karl Georg nur anschließen.

      Antworten
  26. ianinsane says:

    Vielen Dank für die tollen Tutorials!
    Leider habe auch ich ein Problem mit Step 10:
    „Die folgenden Pakete haben unerfüllte Abhängigkeiten:
    libcurl4-gnutls-dev : Kollidiert mit: libcurl-dev
    Kollidiert mit: libcurl4-openssl-dev aber 7.26.0-1+wheezy12 soll installiert werden
    libcurl4-openssl-dev : Kollidiert mit: libcurl-dev
    Kollidiert mit: libcurl4-gnutls-dev aber 7.26.0-1+wheezy12 soll installiert werden
    E: Probleme können nicht korrigiert werden, Sie haben zurückgehaltene defekte Pakete.“

    Bin auch noch totaler Linux-Newbie und dementsprechend ratlos. Wie könnte ich hier vorgehen?

    Antworten
    • Karl Georg Herzberg says:

      Dann probier mal folgendes: sudo apt-get install [Name des jeweiligen Pakets]. Sonst nochmal komplett neu aufsetzen. Ich hab bei meinen min. 10 mal neu aufgesetzt bis alles ging.

      Antworten
  27. Matze says:

    Wieso erstellt er bei mir nicht das Verzeichnis um auf die Config in Step 2 zuzugreifen?

    Antworten
  28. Gunnar says:

    Hallo Jan,
    im Step 4 werden (bei mir) Fehler ausgegeben. Da kommen dann so Meldungen wie:
    „Fehlschlag beim Holen von http://mirrordirector.raspbian.org/raspbian/pool/main/p/php5/php5_5.4.36-0+deb7u3_all.deb 404 Not Found“
    Das deutet m.E. auf geänderte Pfade an der Quelle hin.

    Der Tip am Ende hilft dann jedoch weiter:
    „E: Einige Archive konnten nicht heruntergeladen werden; vielleicht »apt-get update« ausführen oder mit »–fix-missing« probieren?“ Also:

    sudo apt-get update

    und

    sudo apt-get install php5 php5-fpm php-pear php5-common php5-mcrypt php5-mysql php5-cli php5-gd –fix-missing

    eingeben und die Fehler sind weg. Besser wäre natürlich ein repariertes Script.

    Wenn man diese Fehler übersieht, entstehen die hier beschriebenen Probleme u.U. als Folge daraus.

    btw: Heute in der neuen c’t 2015/9 gibt’s nette Raspi-Artikel zu lesen.

    Antworten
  29. Baccata says:

    Hallo Jan,

    danke für das (und andere) schöne Tut, aber irgendwie habe ich ein ungutes Gefühl einen Server aufzusetzen und zu betreiben, der versionsmäßig völlig überholt ist. Ich denke da gerade an Sicherheitslücken und evtl. Performanceverbesserungen in neueren Versionen. Weißst du mehr darüber?

    Antworten
    • Jan Karres says:

      Um Sicherheitslücken musst du dir keinen Kopf machen, denn die werden auch in den alten Versionen gepatcht. Jedoch stimmt es, dass du nicht die aktuellsten Hauptversionen der Software hast, was jedoch der Struktur von Debian geschuldet ist, was Chrsiopher in seinem Beitrag Debian oder Arch Linux? schon einmal schön erläutert hat.

      Antworten
  30. Sascha Flach says:

    Wie deinstalliere ich das denn sauber? Möchte doch lieber Apache benutzen.

    Antworten
  31. Yorven says:

    Hallo Jan,
    Ich hatte den Server nach deiner Anleitung installiert, alles lief ein halbes Jahr lang glatt.
    Jetzt wollte ich ein Kontosystem auf meiner Website einführen und damit fingen die Probleme an. Für das Kontosystem wollte ich das Nginxmodul ngx_http_auth_basic_module benutzen. Da ich aber nicht wusste/weiß, wie ich das auf den Raspi bringe, habe ich dann diese Anleitung benutzt https://der-linux-admin.de/2015/05/nginx-basic-authentication/. Password-datei erstellt. Dann wollte ich das Konfigurieren machen, wobei ich aber eine Datei für den Nginx-server gelöscht haben muss (Hatte einen Pfadfehler drin und habe dann mit Filezilla nachgeguckt, dabei muss es passiert sein:) ). Denn jetzt läuft der Server nicht mehr. Was soll ich jetzt machen? De- und wieder installieren funktioniert nicht, da er diese Datei nicht erneut installiert.
    Danke schonmal im Vorraus.

    Antworten
  32. Rapha says:

    Hey Jan,
    kannst du wohl mal einen Nginx Artikel bezüglich der IPv6 Unterstützung schreiben? Ich weiß nicht, wie groß die Nachfrage diesbezüglich ist, aber meinen Googlesuchen nach zu urteilen, wird es einige interessieren. Nachdem ich dank eines neuen Inet-Vertrages nun leider Gottes vor die Wand aka IPv6 gefahren bin, muss ich nun einen Weg finden, meinen Pi wieder ins Netz zu bekommen. Bzw. viel mehr von außen erreichbar zu machen.
    Da IPv6 noch komplettes Neuland für meine Wenigkeit darstellt, bin ich aktuell noch damit beschäftigt, überhaupt nen DynDNS vernünftig einzurichten. Beim Webserver bin ich noch gar nichtmal angelangt… 😀

    Naja wäre ne klasse Sache, so ein Artikel.

    Antworten
    • Joel says:

      Hallo Rapha,
      hast du schonmal an einem anderen Computer IPv6 abgeschaltet? Wenn ja, kamst du danach nicht mehr ins Internet? Wenn ja, dann gebe ich dir mal folgenden Link für deinen RaspPi 🙂

      http://superuser.com/questions/546788/how-to-disable-ipv6-on-debian-wheezy

      Antworten
      • Rapha says:

        Hey Joel,

        eher das Gegenteil. Ich habe inzwischen IPv6 (angeblich) in nginx aktiviert, so dass es darauf lauscht. Soweit ich das sehe, muss man dafür aber auch nur eine Zeile in der servers-available/default hinzufügen (listen ::80). Allerdings habe ich es bisher noch nicht geschafft von außen auf den Webserver zuzugreifen. Hing das letzte mal bei nem DynDNS Betreiber fest. Meiner Vorstellung nach müsste IPv6 das über den Browser ja genauso problemlos laufen, wie IPv4. Dementsprechen hoffe ich, dass erstmal der Webserver normal ansprechbar wird und ich meine Pfütze wieder zu einer Cloud upgraden kann- Habe bisher allerdings aus Zeitmangel noch nicht weiter testen/werkeln können. Inzwischen kam von Jan auch ein Artikel bezüglich IPv6 raus, worin er eine Möglichkeit aufzeigt, seinen Pi hinter DS Lite erreichbar zu machen. Mal sehen, wie ich mich dabei anstelle 😀

        Allerdings las ich bereits, dass nur TCP unterstützt wird. Ich habe jetzt schon schiss, dass es einige Dienste ausm Konzept haut. Naja mal sehen.

        Antworten
    • Jan Karres says:

      Der Artikel DynDNS trotz DS-Lite durch IPv6 Portmapper, der zufällig die Tage erschien, sollte dir eine Lösung bieten – nicht nur für nginx.

      Antworten
  33. Ernst Neger says:

    Vielleicht sollte man in Step 7 erwähnen, um welche Zeile mit „index“ es sich handelt, die kommt in der Datei öfter vor. Außerdem ist der letzte Absatz sehr undeutlich formuliert:

    „Soll der soeben installierte Dienst auch außerhalb des eigenen Netzwerkes verfügbar sein, so müssen folgende Ports im Router freigegeben werden. Wie man freigibt, beschrieb ich in dem Artikel Portforwarding bei Fritz!Box und Speedport.“

    Auf was soll sich „der soeben installierte Dienst“ beziehen? Auf Ruby on Rails oder auf nginx?

    Antworten
    • Jan Karres says:

      Zu Step 7: Ich denke das sollte für die meisten Leser schon klar sein. Man kann es an allen Stellen ersetzen, und es würde auch funktionieren.
      Zur Portfreigabe: Ruby on Rails ist lediglich ein Framework, dass auf der Sprache Ruby aufsetzt. Davor steht der Webserver nginx. Dieses Konstrukt sollte jedem, der mit Ruby on Rails programmiert, klar sein. Ansonsten denke ich wird das mit dem programmieren auch schwer 😉

      Antworten
  34. Nicolas says:

    Hallo Jan,
    deine Anleitungen sind klasse…

    Bin heute auf ein Problem gestoßen, dass PHP nach der Einrichtung mit deiner Anleitung nicht funktioniert und bloß weiße Seiten ausgestoßen hat. Habe das Problem mit Hilfe des Beitrags auf http://it-repo.net/2014/01/08/webmaster-server/nginx-webserver/weisse-seiten-unter-nginx-mit-php-fpm-die-variable-script_filename gelöst, vielleicht kannst du es für eine Ergänzung deines Tutorials brauchen. Mein System war ein Banana Pi mit dem 1508er Bananian 8 (Debian Jessie) Image.

    Gruß

    Antworten
  35. W3bm45t3r says:

    Hi Jan,
    ich habe nach dieser Anleitung schon mal einen Banana Pi unter ‚Raspbian for Banana Pi‘ komplett mit Baikal aufgesetzt.

    Kann es sein, dass sich bei Nginx was geändert hat?
    Bei Schritt 8 (nginx restart) bekomme ich eine Fehlermeldung:

    Restarting nginx: nginx: [emerg] „location“ directive is not allowed here in /etc/nginx/sites-enabled/default:82
    nginx: configuration file /etc/nginx/nginx.conf test failed

    Der Pi ist auf dem neuesten Stand und ich habe das Ganze schon zum zweiten Mal durchgespielt.

    Es scheint an diesem Syntax-Block zu liegen:
    location ~ \.php$ {
    try_files $uri =404;
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    fastcgi_pass unix:/var/run/php5-fpm.sock;
    fastcgi_index index.php;
    include fastcgi_params;
    }

    Dieser findet sich allerding auch 1:1 bei Ubuntuusers.de.

    Vielen Dank für Deine tolle Arbeit

    Gruß

    p3t3r

    Antworten
  36. Mx2 says:

    Hallo,

    habe folgendes Problem, bei der Installation des „php-Blocks“:

    Fehler traten auf beim Bearbeiten von:
    php5-fpm
    E: Sub-process /usr/bin/dpkg returned an error code (1)

    Gruß
    Mx2

    Antworten
  37. Andu says:

    Danke für deine Anleitung!

    Leider ist uns bleibt Linux ein ständig wachsendes uferloses Meer an Möglichkeiten.
    Solche Tutorials haben deswegen leider eine recht geringe Halbwertszeit und müssten eigentlich ständig überarbeitet werden – das kann fast keiner leisten, wenn man bedenkt wie viele Komponenten eben andauernd erweitert und aktualisiert werden.

    Wenn man deiner Anleitung exakt folgt landet man beim Aufruf einer php-Datei auf einer leeren weißen Seite. Liegt daran dass PHP nicht mitmacht. Nirgends wird ein Fehler ausgegeben oder geloggt. Ich habe nun locker 4h mit der Fehlersuche und Behebung verbracht und möchte sie hier mitteilen da ja sicher noch andere Benutzer an diesen Punkt kommen.

    Die Ursache ist ein UPDATE von Nginx in welchem die Konfiguration verändert wird
    (wer nachlesen möchte, hier: http://stackoverflow.com/questions/15423500/nginx-showing-blank-php-pages und hier: http://blog.martinfjordvald.com/2013/04/nginx-config-history-fastcgi_params-versus-fastcgi-conf )

    Die Lösung für mich war eine zusätzliche Zeile in der default-Site-Konfiguration:

    # pass the PHP scripts to PHP-FPM server listening on unix socket
    location ~ \.php$ {
    include fastcgi_params;
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    fastcgi_pass unix:/var/run/php5-fpm.sock;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
    }

    Die letzte Zeile „fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;“ bringt PHP dann wieder zum laufen. Es gibt wohl auch noch andere Lösungen in der nginx.conf aber ich habe diese hier verwendet weil ich froh war dass es endlich lief.

    Antworten
  38. Chris says:

    Erstmal Danke für deine mühevollen Tutorials 🙂 aber ich denke Du solltest mal die komplette nginx default Datei posten damit nicht so oft Fehler damit entstehen! Ich für meinen Teil habe mit meiner default Datei rumgepfuscht und jetzt startet nginx trotz neuinstallation nicht mehr 🙁 bei systemctl status nginx.service kommt immer nginx: [emerg] „worker_processes“ directive is not allowed here in /etc/nginx/sites-enabled/default:2
    Kannst Du mir helfen? Habe schon viel nachgelesen aber bringe es einfach nicht zum laufen

    Antworten
  39. Bernd says:

    Hallo Jan,
    könntest du auch einen kleinen Guide schreiben wie man nginx auf die neuste Version upgraded?

    Die repos gehen offenbar nur bis 1.6.2 aber die neuste Version ist schon 1.10.0

    Antworten

Trackbacks & Pingbacks

  1. […] im Web (Ich würde nginx gegenüber Apache vorziehen, da die Umgebung ressourchenschonender ist. Passende Anleitung gibt es zum Beispiel hier). PHP wird ebenfalls vorausgesetzt (mindestens Version […]

  2. […] den Webserver nginx mit php5-fpm. Wie man diese Software installiert erklärte ich in dem Artikel Webserver Nginx installieren. Step […]

  3. […] mit PHP (genauer php5-fpm) auf dem Raspberry Pi. Wie dies funktioniert, habe ich in meinem Beitrag Webserver Nginx installieren erklärt. Wir setzten bewusst auf Nginx anstatt auf Apache2, da dieser Webserver wesentlich weniger […]

  4. […] zunächst den Webserver nginx. Wie man dies bewerkstelligt erklärte ich bereits in der Anleitung Webserver Nginx installieren (bis einschließlich Step 3 zu bearbeiten). Step […]

  5. […] Jetzt installieren wir noch einen Webserver. Ich empfehle hier ngnix auf Grund dessen, dass dieser Webserver ressourcensparend ist. Wie man diesen installiert, beschrieb ich in meinem Tutorial Raspberry Pi: Webserver Nginx installieren […]

Antworten

Kommentar verfassen

JanKarres.de © 2007-2016