upgrading binary

Igor Sysoev is at rambler-co.ru
Wed Sep 5 17:29:15 MSD 2007


On Wed, Sep 05, 2007 at 02:06:58PM +0300, Riku R?is?nen wrote:

> I'm asking this again since I haven't found the solution yet. (It's  
> fine as long as my servers stay up and the old binary runs..)
> 
> 
> I've been trying to upgrade my nginx by sending the USR2 (as root and  
> nginx) signal to it without any success.
> 
> error log:
> 
> 2007/08/30 17:36:04 [notice] 15169#0: signal 12 (SIGUSR2) received,  
> changing binary
> 2007/08/30 17:36:04 [notice] 15169#0: changing binary
> 2007/08/30 17:36:04 [alert] 27578#0: execve() failed while executing  
> new binary process "nginx" (13: Permission denied)
> 2007/08/30 17:36:04 [notice] 15169#0: start new binary process 27578
> 2007/08/30 17:36:04 [notice] 15169#0: signal 17 (SIGCHLD) received
> 2007/08/30 17:36:04 [notice] 15169#0: new binary process 27578 exited  
> with code 1
> 
> nginx binary is executable and owned by root.
> 
> I've tried chowning the binary to nginx:nginx (the user/group defined  
> in nginx.conf) and it doesn't help.
> 
> What does the error permission denied mean? What am I doing wrong?

It seems that you use Linux (SIGCHLD is signal 17).
Linux man says:

  EACCES Search permission is denied on a component of the path prefix of
         filename  or  the  name  of  a  script  interpreter.   (See also
         path_resolution(2).)

  EACCES The file or a script interpreter is not a regular file.

  EACCES Execute permission is denied for the file or  a  script  or  ELF
         interpreter.

  EACCES The file system is mounted noexec.

However, it seems they are not your case.
Try to run nginx via full path, e.g. /usr/local/sbin/nginx
By default nginx deletes all enviroment variables except TZ, so
there is not PATH variable and execve can not find "nginx". However,
ENOTENT error should be in this case.


-- 
Igor Sysoev
http://sysoev.ru/en/





More information about the nginx mailing list