Ich habe Nginx mit Ansible installiert. Um auf Centos7 zu installieren, habe ich das yum-Paket verwendet, so dass es standardmäßig als root user ausgeführt wurde. Ich möchte, dass es in der Centos-Box als anderer Benutzer (ex - nginx user) gestartet und ausgeführt wird. Wenn ich versuche, es mit einem anderen Benutzer auszuführen, erhalte ich die folgende Fehlermeldung:
Job für nginx.service ist fehlgeschlagen, da der Steuerungsprozess mit .__ beendet wurde. Fehlercode. Siehe "systemctl status nginx.service" und "journalctl -xe" für Details.
Ich weiß, dass es nicht ratsam ist, als root zu laufen. Wie kann ich das umgehen und nginx als Benutzer ohne Rootberechtigung ausführen? Vielen Dank
Fügen Sie Folgendes in Ihrem /etc/nginx/nginx.conf
hinzu:
user nginx;
Sie sollten den Benutzer erstellen und rekursiv Berechtigungen für die Webroot-Verzeichnisse erteilen.
Auf diese Weise wird nur der Master-Prozess als root
ausgeführt. Weil: Nur Root-Prozesse können Ports unter 1024 überwachen. Ein Webserver wird normalerweise an Port 80 und/oder 443 ausgeführt. Das bedeutet, dass er als Root gestartet werden muss.
So führen Sie den Master-Prozess als Benutzer ohne Rootberechtigung aus:
Ändern Sie den Besitz von Folgendem:
Ändern Sie die Listen-Direktiven in Ports über 1024, melden Sie sich als gewünschten Benutzer an und führen Sie nginx mit nginx -c /path/to/nginx.conf
aus.
Für den Fall, dass es zum Testen/Debuggen hilfreich ist, führe ich manchmal eine Nginx-Instanz als nicht privilegierter Benutzer auf meinem Debian (Stretch) -Laptop aus.
Ich verwende eine minimale Konfigurationsdatei wie folgt:
worker_processes 1;
error_log stderr;
daemon off;
pid nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
access_log access.log;
server {
listen 8080;
server_name localhost;
location / {
include /etc/nginx/uwsgi_params;
uwsgi_pass localhost:8081;
}
}
}
und ich starte den Prozess mit:
/usr/sbin/nginx -c nginx.conf -p $PWD