J'ai installé Nginx avec Ansible. Pour installer sur Centos7, j’utilisais le paquet yum, il était donc exécuté par défaut sous le nom root user. Je veux qu'il démarre et s’exécute en tant qu’utilisateur différent (ex - nginx user) dans la zone Centos. Lorsque j'essaie de l'exécuter avec un autre utilisateur, l'erreur suivante apparaît:
La tâche pour nginx.service a échoué car le processus de contrôle s'est terminé avec code d'erreur. Voir "systemctl status nginx.service" et "journalctl -xe" pour plus de détails.
Je sais que ce n'est pas conseillé de fonctionner en tant que root. Alors, comment puis-je contourner cela et exécuter nginx en tant qu'utilisateur non root. Merci
Ajoutez/modifiez les éléments suivants dans votre /etc/nginx/nginx.conf
:
user nginx;
Vous devez créer l'utilisateur et accorder des autorisations sur les répertoires webroot de manière récursive.
De cette façon, seul le processus maître s'exécute en tant que root
. Parce que: Seuls les processus racine peuvent écouter les ports inférieurs à 1024. Un serveur Web s'exécute généralement sur les ports 80 et/ou 443. Cela signifie qu'il doit être démarré en tant que root.
Pour exécuter le processus maître en tant qu'utilisateur non root:
Changer la propriété des éléments suivants:
Modifiez les directives d'écoute pour les ports supérieurs à 1024, connectez-vous en tant qu'utilisateur souhaité et exécutez nginx par nginx -c /path/to/nginx.conf
Juste au cas où cela aiderait, à des fins de test/débogage, j’exécuterai parfois une instance nginx en tant qu’utilisateur non privilégié sur mon ordinateur portable Debian (extensible).
J'utilise un fichier de configuration minimal comme ceci:
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;
}
}
}
et je commence le processus avec:
/usr/sbin/nginx -c nginx.conf -p $PWD