Im Folgenden finden Sie meine Nginx-Konfigurationsdatei in /etc/nginx/nginx.conf
.
user Foo;
worker_processes 1;
error_log /home/Foo/log/nginx/error.log;
pid /home/Foo/run/nginx.pid;
events {
worker_connections 1024;
use epoll;
}
http {
access_log /home/Foo/log/nginx/access.log;
server {
listen 80;
location = / {
proxy_pass http://192.168.0.16:9999;
}
}
}
Wie Sie sehen können, ändere ich das Protokoll, den Ort der PID-Dateien im Home-Verzeichnis.
Wenn ich Linux
neu starte, scheint es zu funktionieren, Nginx
zeichnet Fehlerprotokolle in der von mir eingestellten Datei und auch in der pid-Datei auf.
Wenn er jedoch nginx -s reload
oder den anderen versucht, versucht er, eine andere Fehlerprotokolldatei zu öffnen.
nginx: [alert] could not open error log file: open() "/var/log/nginx/error.log" failed (13: Permission denied)
2015/12/14 11:23:54 [warn] 3356#0: the "user" directive makes sense only if the master process runs with super-user privileges, ignored in /etc/nginx/nginx.conf:1
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
2015/12/14 11:23:54 [emerg] 3356#0: open() "/home/Foo/run/nginx.pid" failed (13: Permission denied)
nginx: configuration file /etc/nginx/nginx.conf test failed
Ich weiß, ich kann den Berechtigungsfehler mit Sudo
lösen, aber das Hauptproblem hier ist eine Fehlerprotokolldatei (/var/log/nginx/error.log
), die Nginx zu öffnen versucht.
Warum versucht es, auf eine andere Fehlerprotokolldatei zuzugreifen?
Überprüfen Sie die Berechtigungen für das Verzeichnis/home/Foo/log/nginx /. Es muss von Nginx beschreibbar sein. Setzen Sie Berechtigungen wie folgt:
Sudo chmod 766 /home/Foo/log/nginx
Das ist alt ... aber ich hatte die gleichen Schmerzen und hier ist meine Lösung.
Wie Sie sehen, ist das Protokoll eine Warnung und kein Blockierungsfehler:
nginx: [alert] could not open error log file: open() "/var/log/nginx/error.log" failed (13: Permission denied)
Es sollte kein Problem sein :) Nginx möchte diese Datei beim Start einfach überprüfen ...
Verwenden Sie einfach die Option -p
. Etwas wie das, um Nginx lokal zu starten, funktioniert für mich:
nginx -c /etc/nginx/nginx.conf -g 'daemon off;' -p /home/Foo/log/nginx
Ja, Nginx möchte diese Datei beim Start einfach überprüfen. Ich kopiere das installierte Verzeichnis von nginx an einen anderen Ort, ich starte es und die PID des neuen Nginx ist noch in der alten Position. Ich schlage vor, dass Sie das alte Verzeichnis löschen.
Möglicherweise müssen Sie es mit Sudo
auslösen.
Sudo nginx -t