Wenn Webserver streiken

Aus

Wenn Webserver streiken

Da man die DS nur über das Web steuert, ist deren Webserver entsprechend wichtig. Denn macht er nicht mehr mit, ist die Kommunikation sehr schwierig.

Bevor ich hier mehr erzähle, möchte ich zunächst die wohl einfachste Lösung vorstellen: Der Neustart. Hat sich der Webserver beispielsweise nach langer Uptime einfach nur verschluckt, so ist ein Neustart des Systems die unkomplizierteste Lösung. Für alle, bei denen dies nichts hilft, hier weitere Informationen und Hilfestellungen.

Die zwei Webserver

Zunächst möchte ich ihnen klar machen, dass in der DS zwei Webserver agieren mit zwei unterschiedlichen Ausrichtungen. Es ist unerlässlich zu wissen, welcher betroffen ist. Dies hat einen einfachen, sicherheitsrelevanten Hintergrund. Während ein Webserver Änderungen an der Systemkonfiguration vornehmen muss, ist solch ein tiefgreifender Zugriff für den anderen Webserver sehr gefährlich. Ein Webserver läuft daher unter dem Nutzer „root“, welcher die höchste Instanz in einem Linux-Betriebssystem darstellt und der andere unter „nobody“, einem extra angelegten Nutzer mit äußerst beschnittenen Rechten. Die Webserver auf der DS werden auch als Apache bezeichnet.


Auf dem Sys-Apache laufen folgende Anwendungen („root“):

  • DiskStation Manager
  • Audio Station
  • Surveillance Station
  • File Station
  • Download Station
  • viele 3rd-Party-Anwendungen, falls installiert

Auf dem user-Apache laufen folgende Anwendungen („nobody“):

  • Web Station
  • Photo Station
  • falls installiert: Webalizer, phpMyAdmin

Woran ist ein Problem erkennbar?

Das beste Anzeichen ist ein Timeout oder eine ähnliche Fehlermeldung des Browsers beim Aufruf einer der oben genannten Anwendungen, obwohl andere Funktionen wie das Einbinden von Netzlaufwerken noch ohne Probleme funktionieren. Ist die DiskStation hingegen gar nicht mehr erreichbar, so liegen die Probleme meist tiefer.

Laufen andere Anwendungen auf dem selben Webserver ohne Probleme, so liegt der Fehler hingegen bei der Anwendung.

Ursacheneingrenzung

Ein erster Ansatz ist auch hier recht simpel: Deaktivieren Sie die betroffene Anwendung falls noch möglich im DiskStation Manager und Aktivieren Sie diese wieder nach einem Neustart des Systems.

Der letzte Weg führt dann doch über die Kommandozeile.

Manueller Neustart des Apache und Öffnen der Logdateien

Wenn alle „sanften“ Methoden nicht helfen, muss man eben tiefer graben. Auf einer DiskStation ist das Mittel der Wahl hierfür die Kommandozeile. Mehr Informationen dazu finden Sie in weiteren Wiki-Artikeln. Hier noch einmal ein kleiner Crashkurs:

  • Aktivieren von SSH/Telnet im DiskStation Manager unter „Terminal“
  • Download eines geeigneten Clients für Windows, unter Linux genügt der Befehl „ssh“ gefolgt von den Zugangsdaten
  • Verbindung herstellen, Anmeldung dabei als „root“ mit dem Passwort des admin

Hier möchte ich Sie wieder an die Theorie erinnern. Da es zwei Webserver gibt, existieren demnach auch die meisten Skripte und ini-Dateien doppelt.

Zunächst ein Blick auf die laufenden Prozesse. Ist der Webserver hier aufgeführt, läuft er, hat sich aber möglicherweise aufgehängt. Die Kommandos:

  • für den User-Apachen („nobody“): ps -Af | grep httpd | grep nobody
  • für den Sys-Apachen („root“): ps -Af | grep httpd | grep nobody

Bleibt die Ausgabe leer, so läuft der betroffene Webserver nicht.

Für den Neustart interessant sind die Skripte welche auch beim Start der DiskStation ausgeführt werden. Diese befinden sich unter „/usr/syno/etc/rc.d/“. Um das Skript auszuführen und den Webserver neu zu starten sind daher folgende Kommados notwendig:

  • für den User-Apachen („nobody“): /usr/syno/etc/rc.d/S97apache-user.sh restart
  • für den Sys-Apachen („root“): /usr/syno/etc/rc.d/S97apache-sys.sh restart

Funktioniert dieses Kommando nicht vollständig, spuckt es meist weitere Fehlermeldungen aus, welche für die genaue Diagnose sehr hilfreich sind. Doch das sind meistens Einzelfälle welche ich hier nicht alle beschreiben kann.

Außerdem hilfreich sind die Logs:

„cat /var/log/messages“ bzw. „more /var/log/messages“ (je nachdem welches Programm zur Anzeige genutzt wird)

Wer die Ausgabe automatisch filtern möchte, kann dieses Kommando verwenden: „cat /var/log/messages | grep http“. Dabei werden nur Einträge mit „http“ angezeigt. Bleibt die Ausgabe leer, so war die Suche erfolglos.

Diese Anleitung hilft meist um weiteren Problemen auf die Spur zu kommen. Und wer nicht weiter kommt, kann gern im Forum nachfragen und gleich die Resultate der hier beschriebenen Kommandos mit angeben. Das hilft bei der schnellen Diagnose.

Mehr zum Thema Kommandozeile

Grundlegende Befehle auf der Kommandozeile