2322753

Apache und Nginx: So lösen Sie typische Probleme

08.07.2018 | 10:31 Uhr |

Nicht immer laufen Apache und Nginx oder das installierte Content-Management-System wie gewünscht. Tools und Logdateien helfen jedoch bei der Fehlersuche.

Auch wenn die Installation von Webservern wie Apache und Nginx erst einmal unkompliziert erscheint, birgt die Konfiguration doch einige Tücken. Da ist nicht immer auf den ersten Blick zu erkennen, ob das Problem bei der Serverkonfiguration, beim jeweiligen Webdienst, bei einem Zusatzmodul oder schlicht bei falsch gesetzten Rechten im Linux-Dateisystem zu suchen ist.

Status des Servers prüfen

Wenn Apache oder Nginx installiert sind, sollte der Aufruf von „http://localhost“ im Webbrowser zur Startseite des Servers führen.  Erscheint stattdessen „Fehler: Verbindung fehlgeschlagen“, läuft der Server wahrscheinlich nicht. Nutzen Sie dann in einem Terminalfenster folgende Befehlszeile:

sudo service apache2 status  

Beim Einsatz von Nginx verwenden Sie „nginx“ statt „apache2“. Mit der Taste Q beenden Sie den Editor, der die Statusmeldungen anzeigt. In der Ausgabe sollte „Active: active (running)“ auftauchen. Erscheint stattdessen „Active: inactive (dead)“, läuft der Serverdienst nicht.

Tipp: SSH-Fernwartung für Ihren Linux-Server

Häufig ist ein blockierter Port die Ursache dafür, dass der Server nicht startet. Für die Standardports 80 beziehungsweise 443 (HTTPS) darf kein anderer Dienst konfiguriert sein. Ob Port 80 bereits belegt ist, finden Sie mit dieser Befehlszeile heraus:

sudo netstat -anp | grep :80  

Wenn Apache diesen Port benutzt, erhalten Sie etwa eine Ergebniszeile wie folgende:

tcp6 0 0 :::80 :::* LISTEN 28308/apache2 

Für „tcp“ (Ipv4) gibt es kein Ergebnis, weil Apache die Umsetzung von IPv4-Adressen intern behandelt. Bei Nutzern von Nginx sieht die Ausgabe etwa so aus:

tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 28397/nginx: master tcp6 0 0 :::80 :::* LISTEN 28397/nginx: master  

Sollte etwas anderes als „apache2“ oder „nginx“ in der netstat-Ausgabe auftauchen, verwendet ein anderer Dienst den Port 80. Deinstallieren Sie die Software oder beenden Sie den Dienst (service [Dienstname] stop). Danach sollten Apache oder Nginx starten. Wenn Sie mehrere Webserver betreiben wollen, müssen Sie diese auf jeweils anderen Ports konfigurieren.

Server ist für andere PCs nicht erreichbar

Auf anderen PCs im lokalen Netzwerk rufen Sie die Website über „http://[IP-Adresse]“ oder „http://[Hostname]“ auf. Sollte das nicht funktionieren, ist der Server-PC entweder nicht erreichbar oder Port 80 des Servers ist durch eine Firewall geschützt.  Einen einfachen Test führen Sie im Terminalfenster eines PCs im Netzwerk mit

ping [IP-Adresse]  

durch. Lautet die Meldung „Destination Host Unreachable“, prüfen und reparieren Sie die Netzverbindung der PCs. Wenn ping ein positives Ergebnis liefert, der Server aber trotzdem nicht erreichbar ist, installieren und nutzen Sie das Tool nmap:

sudo apt install nmap nmap -p1-9000 [IP-Adresse]  

In diesem Beispiel prüft nmap die Ports 1 bis 9000. In der Ausgabe sollte dann „80/tcp open http“ zu sehen sein. Wenn nicht, dann ist der Port 80 wahrscheinlich durch eine Firewallregel blockiert. Ob die Firewall ufw auf Ihrem Server-PC aktiv ist, prüfen Sie mit diesem Befehl:

sudo ufw status

Sollte in der Ausgabe „Status: Aktiv“ auftauchen, fügen Sie eine Regel für den Webserver hinzu:

sudo ufw allow 80/tcp

Wiederholen Sie den Befehl für die anderen genutzten Ports, beispielsweise 443 (HTTPS). Wenn Sie die Firewall nicht zwingend benötigen, können Sie ufw mit

sudo ufw disable

auch ganz deaktivieren.

Siehe auch: Medienserver per NAS realisieren - so klappt's

Log- und Konfigurationsdateien untersuchen

Logdateien: Die Apache-Logdatei „error.log“ protokolliert auch Fehler im PHP-Code.
Vergrößern Logdateien: Die Apache-Logdatei „error.log“ protokolliert auch Fehler im PHP-Code.

Die Logdatei von Apache heißt „/var/log/apache2/error.log“, jene von Nginx „/var/ log/nginx/error.log“. Sie finden darin Meldungen, die bei der Fehlersuche hilfreich sind. In den Logdateien vermerken die Server auch Fehler in der Konfiguration. Diese lässt sich bei Apache schnell mit

sudo apache2ctl -t

prüfen. Nginx-Benutzer verwenden diesen Befehl:

sudo nginx -t

Das Testtommando zeigt Ihnen die Datei an, in der sich der Fehler befindet, sowie die Zeilennummer – und meist auch einen Hinweis zur Problembehebung. Fehler in PHP-Scripts finden Sie ebenfalls in den Logdateien. Auch hier ist die Datei vermerkt, in der der Fehler auftritt, und es gibt Informationen zum Fehlertyp.

Die Rechte im „Documentroot“

Apache und Nginx laufen unter Ubuntu mit den Rechten des Benutzers „www-data“, der zur gleichnamigen Gruppe gehört. Ein Webserver benötigt wenigstens Lesezugriff für alle Dateien und Ordner unter „/var/ www/html“. Eine Schreibberechtigung ist bei einzelnen Dateien und Ordnern jedoch ebenfalls erforderlich, wenn Sie beispielsweise ein CMS installieren, über das CMS Dateien hochladen oder das CMS über das Back-End aktualisieren wollen. Wenn Sie beispielsweise für eine Wordpress-Neuinstallation die heruntergeladene ZIP-Datei nach „/var/www/html“ entpackt haben, führen Sie diese Befehlszeile aus:

sudo chown -R www-data:www-data /var/www/html

Besitzer und Gruppe „www-data“ erhalten damit Schreibzugriff auf alle Elemente in „/var/www/html“. Für Wordpress muss das Apache-PHP-Modul aktiviert sein. Außerdem ist das Paket „mysqlserver“ erforderlich. Für den bequemen Zugriff auf die Datenbank über „http://localhost/phpmyadmin“ installieren Sie das Paket „phpmyadmin“ und erstellen eine Datenbank für Wordpress. Gehen Sie auf „http://[Hostname]“ und folgen Sie den Anweisungen des Assistenten.

Nach Abschluss der Installation entziehen Sie zur Verbesserung der Sicherheit den Schreibzugriff für den Webserver:

sudo chown -R root:root /var/www/html

Damit Wordpress Dateien im Ordner „wpcontent“ ablegen kann, ändern Sie Benutzer und Gruppe:

chown -R www-data:www-data /var/www/html/wp-content

Weitere Informationen zur Absicherung einer Wordpress-Installation finden Sie hier .

PHP-Konfiguration anpasen

Einige Probleme, die bei der Arbeit mit einem Content-Management-System auftreten können, sind auf die Script-Sprache PHP und nicht auf den Webserver zurückzuführen.

Ein Beispiel dafür ist die Begrenzung der Uploadgröße, die bei Ubuntu auf knappe zwei MB eingestellt ist. Wenn Sie größere Dateien für Ihre Website in Wordpress hochladen, erhalten Sie nur eine Fehlermeldung. Um das zu ändern, öffnen Sie die PHP-Konfiguration im Editor:

sudo nano /etc/php/7.0/php.ini

Passen Sie den Pfad für Ihre PHP-Installation an. Ändern Sie die Variablen in der Datei wie folgt:

upload_max_filesize = 64M post_max_size = 64M  max_execution_time = 300

Sie erhöhen damit das Dateilimit auf 64 MB und geben Scripts außerdem etwas mehr Zeit für die Ausführung.

PC-WELT Marktplatz

0 Kommentare zu diesem Artikel
2322753