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 de l'exécuter est d'utiliser Sudo
et d'exécuter le processus sous la forme root
, ce que je ne veux pas.
J'ai chown
'd tout le répertoire (chown -R nginx:nginx /opt/nginx
) et j'ai aussi chmod -R 755
le répertoire également.
L'ajout de la directive user
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?
Tout d'abord, les scripts d'initialisation sont censés être exécutés
Sudo /etc/init.d/name
lorsque vous n'êtes pas connecté en tant que root (lorsque l'utilisateur connecté est activé 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 tout votre processus sous nginx est exécuté par root lors de l'émission de Sudo /etc/init.d/nginx?
avec
ps aux | grep [n]ginx
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?
Consulter ici
Le paquet binaire est déjà livré avec des modules indispensables
nginx version: nginx/1.0.12
TLS SNI support enabled
configure arguments: --prefix=/etc/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-log-path=/var/log/nginx/access.log --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --lock-path=/var/lock/nginx.lock --pid-path=/var/run/nginx.pid --with-debug --with-http_addition_module --with-http_dav_module --with-http_geoip_module --with-http_gzip_static_module --with-http_image_filter_module --with-http_realip_module --with-http_stub_status_module --with-http_ssl_module --with-http_sub_module --with-http_xslt_module --with-ipv6 --with-sha1=/usr/include/openssl --with-md5=/usr/include/openssl --with-mail --with-mail_ssl_module --add-module=/build/buildd/nginx-1.0.12/debian/modules/nginx-echo --add-module=/build/buildd/nginx-1.0.12/debian/modules/nginx-upstream-fair
Ajoutez la directive utilisateur dans nginx.conf
Référence: http://wiki.nginx.org/CoreModule#user
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".
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.