Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

I followed this process to installing nginx on my Ubuntu 10.04 Lucid Server http://library.linode.com/web-servers/nginx/installation/ubuntu-10.04-lucid

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

2 Answers 2

up vote 7 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 ?

with

ps aux | grep [n]ginx

eg.

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/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
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
1  
nginx -V is your answer –  kaji Mar 17 '12 at 4:25

Add the user directive inside nginx.conf

Reference: http://wiki.nginx.org/CoreModule#user

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

Your Answer

 
discard

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.