Server Fault is a question and answer site for system and network administrators. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I followed this process to installing nginx on my Ubuntu 10.04 Lucid Server

I got lost after the point of creating an init script to start nginx, and then calling /etc/init.d/nginx start. When I did that, I got the following error:

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)

The only way I can run it is if I use sudo and it runs the process as root, which is what I don't want.

I've chown'd the entire directory (chown -R nginx:nginx /opt/nginx) and I've also chmod -R 755 the directory as well.

Adding the user directive as suggested by CS3 also gives me this error, but with an additional line.

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)

Any ideas?

share|improve this question
and I've also chmod -R 755 the directory as well Keep doing this and you'll pay a price for it eventually. It's scary to witness how many people there are on the internet suggesting this as a first port of call to "fix" any problem. Unix won't give friendly feedback if you do something moronic. – user181093 Jul 10 '13 at 20:44
up vote 10 down vote accepted

First of all, init scripts are supposed to be run

sudo /etc/init.d/name

when you are not logged in as root( when logged-in user is sudo enabled)

Secondly, when you run sudo /etc/init.d/nginx start ==> it fires the master nginx process as root and worker processes as the user you specified in your nginx.conf user directive(eg. www-data)

Can you confirm if all your process under nginx as being run by root when issuing sudo /etc/init.d/nginx start ?


ps aux | grep [n]ginx


enter image description here

Suggestion: Ubuntu 10.04 LTS has excellent ubuntu package support from nginx team. So, why bother installing from source if you do not have requirement for custom module inside nginx ?

Consult here

The binary package already comes with pretty much needed modules

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/ --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
share|improve this answer
The worker process I have has an ID, not a name. Any chance that's the nginx user ID? I'm pretty new to Ubuntu. I didn't know the apt package had all these flags turned on. How'd you find that out? – John Mar 16 '12 at 8:34
have you checked if the user you specified in your nginx.conf exist or not ? Official repo does not have this Nginx ! Please use PPA from specified URL – kaji Mar 16 '12 at 9:04
I used a different username which is longer than the 8 character limit. That's why the User ID is being shown, right? – John Mar 16 '12 at 9:21
yeah that is one scenario – kaji Mar 16 '12 at 11:35
nginx -V is your answer – kaji Mar 17 '12 at 4:25

Add the user directive inside nginx.conf


share|improve this answer
Sorry, could you be more specific? I've done that already to no avail. – John Mar 16 '12 at 5:42
Running anything between ports 1 to 1024 requires root privileges. User directive ensures that nginx runs as non root user for secruity reasons. – Shyam Sundar C S Mar 16 '12 at 6:06
Also, for the logs to be opened and written, nginx directory should be chown'd to user from which you are trying to run. – Shyam Sundar C S Mar 16 '12 at 6:23

My 5 kopek regarding this

nginx -V 2>&1 | sed 's/ --/\n--/g' | grep path

.. will get you all other pathes, that you should override in custom provided config or with "-g" option.

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.