J'ai suivi ce processus pour installer nginx sur mon serveur Lucid Ubuntu 10.04 http://library.linode.com/web-servers/nginx/installation/ubuntu-10.04-lucid
Je me suis perdu après avoir créé un script init pour démarrer nginx, puis appelé /etc/init.d/nginx start. Quand j'ai fait ça, j'ai eu l'erreur suivante:
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)
La seule façon dont je peux l'exécuter est si j'utilise sudo
et qu'il exécute le processus en tant que root
, ce que je ne veux pas.
J'avais chown
tout le répertoire ( chown -R nginx:nginx /opt/nginx
) et j'ai aussi chmod -R 755
le répertoire.
L'ajout de la user
directive comme suggéré par CS3 me donne également cette erreur, mais avec une ligne supplémentaire.
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)
Des idées?
and I've also chmod -R 755 the directory as well
Continuez à faire cela et vous en paierez éventuellement le prix. Il est effrayant de voir combien de personnes sur Internet suggèrent cela comme premier port d'escale pour «résoudre» tout problème. Unix ne donnera pas de commentaires amicaux si vous faites quelque chose de stupide.Réponses:
Tout d'abord, les scripts d'initialisation sont censés être exécutés
lorsque vous n'êtes pas connecté en tant que root (lorsque l'utilisateur connecté est activé par sudo)
Deuxièmement, lorsque vous exécutez sudo /etc/init.d/nginx start ==> il déclenche le processus maître nginx en tant que processus racine et travailleur en tant qu'utilisateur que vous avez spécifié dans votre directive utilisateur nginx.conf (par exemple www-data)
Pouvez-vous confirmer si tous vos processus sous nginx sont exécutés par root lors de l'émission sudo /etc/init.d/nginx start?
avec
par exemple.
Suggestion: Ubuntu 10.04 LTS a un excellent support de paquet ubuntu de l'équipe nginx. Alors, pourquoi s'embêter à installer depuis la source si vous n'avez pas besoin d'un module personnalisé dans nginx?
Consultez ici
Le paquet binaire est déjà livré avec des modules à peu près nécessaires
la source
Ajoutez la directive utilisateur dans nginx.conf
la source
Mes 5 kopek à ce sujet
nginx -V 2>&1 | sed 's/ --/\n--/g' | grep path
.. vous obtiendrez tous les autres chemins, que vous devriez remplacer dans la configuration fournie personnalisée ou avec l'option "-g".
la source
nginx -V 2>&1 | sed 's/ --/\n--/g' | egrep --color '.*path.*|$'
Dans mon cas, il manquait une référence de fichier dans mon nginx.conf:
error_log /var/log/nginx/error.log warn;
Est devenu: error_log warn;
J'ai donc accidentellement supprimé la référence /var/log/nginx/error.log, ce qui a provoqué un message d'erreur d'autorisation refusée.
la source