Das Nginx-Fehlerprotokoll war riesig, daher habe ich ein neues gelöscht und erstellt. Jetzt wird Nginx nicht mehr gestartet

11

Ich habe die Datei /var/log/nginx/error.log gelöscht und dann eine neue erstellt mit:

sudo nano error.log

Dies ls -lazeigt, dass error.log und access.log dieselben Berechtigungen haben.

Wenn ich versuche, nginx zu starten, wird folgende Fehlermeldung angezeigt:

alert: Fehlerprotokolldatei konnte nicht geöffnet werden: open () "/var/log/nginx/error.log" fehlgeschlagene Berechtigung verweigert.

Aktualisieren

Beim Versuch, Nginx zu starten, sehe ich auch:

emerg: /var/run/nginx.pid fehlgeschlagen 13: Berechtigung verweigert.

Blankman
quelle

Antworten:

25

Dies löst Ihr Problem nicht, aber in Zukunft, wenn Sie dies tun

cat / dev / null> / file / you / want / to / wipe-out

Sie kopieren den Inhalt der Datei mit nichts und behalten alle Berechtigungen im Auge.

Nicht nginx-spezifisch, aber stellen Sie außerdem sicher, dass Sie die Anwendung als den Benutzer ausführen, unter dem sie ausgeführt werden soll. Wenn Sie es jemals als root ausgeführt haben, sind alle Berechtigungen Eigentum von root, sodass andere Benutzer es nicht ausführen können.

Alex
quelle
Wie unterscheidet es sich von der Verwendung echo "" > /file/to/empty? Sind sie beide gleich?
Gowtham Gopalakrishnan
Das sollte genauso sein. Außerdem können Sie alles am Anfang > /file/to/empty
Alex
5

Die übliche Methode zum Drehen der Protokolle mit NginX besteht darin, die Datei umzubenennen und dann /etc/init.d/nginx reload. Der Server startet eine neue Datei und Sie können mit der alten Datei tun, was Sie möchten.

Möglicherweise ist es auch hilfreich, die Konfiguration so zu bearbeiten, dass nicht so viele Protokolle erstellt werden.

Alister Bulman
quelle
2

Schauen Sie sich die Nginx-Konfiguration an und überprüfen Sie, als wen der Server ausgeführt wird. Vermutlich ist der Benutzer Nginx

so :

chown nginx: /var/run/nginx.pid chown -R nginx: /var/log/nginx

Sollte den Trick machen.

Geraint Jones
quelle
aber warum hat es vorher funktioniert?
Blankman
1
Ich vermute, weil Sie versucht haben, es als root auszuführen, und dann versucht haben, es mit seinem Init-Skript zu starten.
Geraint Jones
Blankman
nginx.conf sagt: "Benutzer www-Daten"
Blankman
1

Löschen Sie die Datei error.log und nginx erstellt sie selbst.

Martin Fjordvald
quelle
Ich habe es gelöscht, dann, wenn ich versuche, nginx zu starten, gibt mir die gleiche Berechtigung verweigert Fehler in der Datei /var/log/nginx/error.log
Blankman
Löschen Sie das Protokoll und starten Sie Nginx neu. Das Protokoll wird automatisch erstellt.
WhiteHorse