Fehlerbeschreibung
Auf einem Server wird Ubuntu 14.04.03 LTS eingerichtet, danach die Server Administrationsoberfläche Plesk.
Danach eingerichtete Domains sind mit einem Browser auch sofort aufrufbar.
Aber: Sobald der Server einmal herunter- und hochgefahren wird, lassen sich die Websites nicht mehr aufrufen.
Systemumgebung
Bei der Software handelt es sich um die offizielle Ubuntu-Linux-64bit Version und das offizielle Plesk-Installer Skript, welches die Dateien vom Plesk-Server herunterlädt.
Server
Ursprünglich erschien der Fehler mit dem Browser-Seitentitel „Problem loading page“ in einem virtuellen Ubuntu 14.04 Gastsystem (VirtualBox).
Da ich zunächst davon ausging, dass möglicherweise die Anwendung Plesk sich nicht in einer virtuellen Maschine installieren lässt, habe ich die Installation nochmals auf einem vServer im Netz und einen lokalen, dedizierten Rechner vorgenommen. In allen drei Fällen, zeigte sich der Fehler, dass nach einem Reset des frisch aufgesetzten Servers, die eingerichteten Domains nicht mehr zugreifbar waren.
Fehlermeldung: Problem loading page
Unable to connect
Firefox can’t establish a connection to the server at example.com.
The site could be temporarily unavailable or too busy. Try again in a few moments. If you are unable to load any pages, check your computer’s network connection. If your computer or network is protected by a firewall or proxy, make sure that Firefox is permitted to access the Web.
Fehlerbehebungsversuche, die zu nichts führten
Um den „Unable to connect“ Fehler zu beheben, habe ich natürlich im Internet gegoogled und bin dabei auf so manche Seite gestoßen. Leider war deren Fehlerursache nicht die meine.
Hier eine Auflistung von Ansatzpunkten, die zwar nicht bei mir geholfen haben, vielleicht jedoch bei anderen zielführend sein können:
Zwischenproblem: Eine Website wurde als HTTPS-Seite aufgerufen, obwohl die Seite bei den Hostingeinstellungen ohne SSL definiert wurde. Es scheint so zu sein, dass Websites einem Plesk Service Plan zugewiesen werden und wenn in diesem Serviceplan SSL steht, dann überschreibt dies die individuelle Einstellung. Also Serviceplan geändert und syncronisiert.
Fehlerursache:
Nach ein paar Tagen Fehlersuche bin ich letztendlich darauf gestoßen, dass in den neuaufgesetzten Servern, neben Apache auch nginx als Proxy-Webserver läuft oder zumindest hätte aktiv laufen müssen.
Zu irgendeinem Zeitpunkt scheint Odin als Hersteller von Plesk entschieden zu haben, im Intallationsskript dem Apache Webserver einen nginx Webserver als Proxyserver vorzuschalten. Dass es dabei zu Problemen kommt, scheint schon mehr als ein Jahr bekannt zu sein [3]. Dass der Bug zwar bekannt, aber nicht mit hochdruck gefixt wird und man weiterhin ein fehlerhaftes Installationsskript auf die Endnutzer loslässt, ist für mich … . Da kann ich nur den Kopf schütteln.
Der Fehler „Unable to connect“ ist beliebig nachstellbar/reproduzierbar. Unmittelbar nach der Grundinstallation von Plesk 12.5 läuft alles und die Websites der Domains sind aufrufbar, nach dem ersten Serverreset wird einem die nichtssagende „Unable to connect“ Fehlermeldung präsentiert.
Bei einem Neustart des Servers werden von Plesk die Konfigurationsdateien ausgelesen. Dort ist der Server so konfiguriert, dass Apache mit nginx als Proxyserver (Annahme der eingehenden Anfragen) läuft. Nur leider, wird bei einem Serverneustart aus irgendeinem Grund nginx nicht gestartet.
Dass dies wirklich die Fehlerursache ist, lässt sich unmittelbar auf dem Server prüfen. Einfach
# /etc/init.d/nginx start
eingeben und der Seitenaufruffehler ist verschwunden, bis zum nächsten Neustart behoben.
Dass dies (nginx als Serveradmin starten) zwar ein Workaround, aber letztendlich keine befriedigende Lösung ist, mag jedem einleuchten. Wer garantiert mir, dass der Server nicht zur Unzeit einmal Rebootet wird? Der Reboot zunächst dann unbemerkt bleibt und danach keiner zur Stelle ist, der den Bug zuordnen kann und weiss, wie man ihn schnell fixed.
Welcher Kunde wird akzeptieren, dass sein Webauftritt für Stunden oder vielleicht Tage, gar nicht aufrufbar war? Das ist nicht akzeptabel.
Ich habe mir daher grundlegende Gedanken über nginx gerade auch beim Einsatz bei Websites, die auf WordPress als Contentsystem beruhen, gemacht und bin zu der Entscheidung gekommen, nginx zum augenblicklichen Zeitpunkt bei Plesk generell zu deaktivieren (s.a. meinen Blogbeitrag „Warum ich nginx nicht einsetze“ [5]).
Nginx Befehle
aktuelle nginx Einstellung aus der Plesk-Konfigurationsdatei auslesen
# /usr/local/psa/admin/bin/nginxmng -s
# enabled
Nach dieser obigen Antwort sollte der nginx Server aktiviert sein. Dies kann aber dem realen Status des nginx-Webservers wiedersprechen
# /etc/init.d/nginx status
# nginx is not running
Dabei wäre es so einfach.
Nginx starten
# /etc/init.d/nginx start
nginx in Plesk deaktivieren
Um den Server auf eine Konfiguration mit nur einem Apache Webserver (also ohne nginx als vorgeschalteten Proxy-Server) zurückzusetzen, sollte man allerdings nicht über das Terminalfenster gehen und dort „nginx stop“ eingeben, sondern man sollte den Service Reverse Proxy Server (nginx) unter Tools & Einstellungen > Service Verwaltung stoppen.
Wichtig zu wissen: Der Start- und Stop-Button der Admin Oberfläche startet und stoppt nicht nur den nginx Service, sondern verändert auch die Serverkonfigurationsdateien (ganz wichtig!).
(s.a. Plesk Administrators Guide [6]).
Links
[1] nixCraft:
Ubuntu-Server-Firewall
[2] MozillaSupport: Firefox can’t load websites but other browsers can
[3] Plesk: Problem loading page
[4] Plesk: Wie Sie nginx auf dem Plesk Server aktivieren
[5] Perfect-Knowhow.de: Warum ich nginx nicht einsetze
[6] Plesk: Administrator’s Guide 12.5