Ich habe diesen Prozess befolgt, um nginx auf meinem Ubuntu 10.04 Lucid Server zu installieren: http://library.linode.com/web-servers/nginx/installation/ubuntu-10.04-lucid
Nach dem Erstellen eines Init-Skripts zum Starten von Nginx und dem anschließenden Aufrufen von /etc/init.d/nginx start habe ich mich verlaufen. Als ich das tat, bekam ich den folgenden Fehler:
Starting nginx_main: Starting /opt/nginx/sbin/nginx...
nginx: [alert] could not open error log file: open() "/opt/nginx/logs/error.log" failed (13: Permission denied)
2012/03/16 18:17:27 [emerg] 859#0: open() "/opt/nginx/logs/access.log" failed (13: Permission denied)
Ich kann es nur ausführen, wenn ich es verwende sudo
und der Prozess so abläuft root
, wie ich es nicht möchte.
Ich habe chown
das gesamte Verzeichnis ( chown -R nginx:nginx /opt/nginx
) und auch chmod -R 755
das Verzeichnis.
Das Hinzufügen der user
Direktive, wie von CS3 vorgeschlagen, gibt mir ebenfalls diesen Fehler, jedoch mit einer zusätzlichen Zeile.
Starting nginx_main: Starting /opt/nginx/sbin/nginx...
nginx: [alert] could not open error log file: open() "/opt/nginx/logs/error.log" failed (13: Permission denied)
2012/03/16 18:48:34 [warn] 1606#0: the "user" directive makes sense only if the master process runs with super-user privileges, ignored in /opt/nginx/conf/nginx.conf:2
2012/03/16 18:48:34 [emerg] 1606#0: open() "/opt/nginx/logs/access.log" failed (13: Permission denied)
Irgendwelche Ideen?
and I've also chmod -R 755 the directory as well
Mach so weiter und du wirst irgendwann einen Preis dafür zahlen. Es ist beängstigend mitzuerleben, wie viele Leute im Internet dies als erste Anlaufstelle für die "Behebung" eines Problems empfehlen. Unix gibt kein freundliches Feedback, wenn Sie etwas Schwachsinniges tun.Antworten:
Zunächst sollen Init-Skripte ausgeführt werden
wenn Sie nicht als root angemeldet sind (wenn der angemeldete Benutzer sudo aktiviert ist)
Zweitens: Wenn Sie sudo /etc/init.d/nginx start ==> ausführen, wird der Master-Nginx-Prozess als Root- und Worker-Prozess als der Benutzer ausgelöst, den Sie in Ihrer Benutzeranweisung nginx.conf angegeben haben (z. B. www-data).
Können Sie überprüfen, ob Ihr gesamter Prozess unter nginx von root ausgeführt wird, wenn Sie sudo /etc/init.d/nginx starten?
mit
z.B.
Vorschlag: Ubuntu 10.04 LTS hat ausgezeichnete Ubuntu-Paket-Unterstützung vom Nginx-Team. Warum sollten Sie sich also die Mühe machen, von der Quelle aus zu installieren, wenn Sie kein benutzerdefiniertes Modul in nginx benötigen?
Konsultieren Sie hier
Das Binärpaket enthält bereits so ziemlich alle benötigten Module
quelle
Fügen Sie die Benutzeranweisung in die Datei nginx.conf ein
quelle
Meine 5 Kopeken dazu
nginx -V 2>&1 | sed 's/ --/\n--/g' | grep path
.. gibt dir alle anderen Pfade, die du in der benutzerdefinierten Konfiguration oder mit der Option "-g" überschreiben solltest.
quelle
nginx -V 2>&1 | sed 's/ --/\n--/g' | egrep --color '.*path.*|$'
In meinem Fall fehlte in meiner nginx.conf ein Dateiverweis:
error_log /var/log/nginx/error.log warn;
Wurde: error_log warn;
Also habe ich versehentlich den Verweis /var/log/nginx/error.log gelöscht, wodurch die Fehlermeldung "Berechtigung verweigert" ausgelöst wurde.
quelle