关于nginx以服务方式运行原理和实现方法参见 http://bbs3.chinaunix.net/thread-1264548-1-1.html
另在那个帖子中还有一个完整的所用工具和脚步的zip包,照readme.txt 安装好服务是没有问题的
本文主要是说说 nginx-0.7.58 以服务方式运行后“nginx -s reload”常见错误解决方法
注意,这个 nginx-0.7.58 下载自官方http://nginx.net
1、[alert]: CreateFileMapping(1024, nginx_shared_zone) failed (5: Access is denied)
根据这个提示我分析了一下,应该是权限问题,这时我分别用服务启动和命令启动nginx后发现
服务启动后 nginx 是以 system 身份运行的,而 命令启动后 nginx 是以 administrator 身份运行的
这样看问题应该是出在了服务的运行身份上,所以我们应该修改服务的运行身份,具体修改方法:
服务--》NGNIX--》属性--》登陆--》登陆身份--》选择此账户后账户填入administration,再填入密码
修改完后重启服务再试 nginx -s reload ,一切正常
2、[error]: OpenEvent("ngx_reload_31796") failed (2: The system cannot find the file specified)
这个应该是最常见的错误了,一般引起这个错误的主要原因是 nginx 不能处理特定pid的 nginx 进程而造成的
这个错误信息中 reload 还有可能是 stop reopen quit,而后面的31796则是当前 logs\nginx.pid 中的值
我碰到这个问题的时候是在我mstsc登陆vps上的win03时,下面是当时复制出的一些信息
D:\httpd\nginx>sc stop nginx
D:\httpd\nginx>sc start nginx
D:\httpd\nginx>tasklist | findstr nginx
nginx.exe 16360 Console 0 3,184 K
nginx.exe 31112 Console 0 3,512 K
D:\httpd\nginx>start nginx.exe
D:\httpd\nginx>tasklist | findstr nginx
nginx.exe 16360 Console 0 3,184 K
nginx.exe 31112 Console 0 3,512 K
nginx.exe 32696 RDP-Tcp#3 7 3,212 K
nginx.exe 14988 RDP-Tcp#3 7 3,524 K
D:\httpd\nginx>
当时我没有发现有啥问题,以为是程序的问题,后来我在本地虚拟机上win03上使用没有碰到此错误,一样的操作为啥结果会不同?
我就又重新在vps上的win03上做试验,发现了猫腻,服务启动和远程登陆后手动启动的会话id不同
就拿上面抓的信息为例子
nginx以服务方式启动的会话id是0,而我远程登陆后的会话id是7,所以不能操作会话id 0启动的nginx
而我远程登陆后自己手动 start nginx 启动,这时nginx.exe的会话id就是我现在用的,所以我此时是能正常使用 nginx -s reload 的
综上所述,这个错误是由于不能正常结束特定进程所引起的,也大多数情况是在远程登陆后操作才会出现,具体的解决方法未知,最关键的问题远程登陆后如何切换到会话id 0上去
另在那个帖子中还有一个完整的所用工具和脚步的zip包,照readme.txt 安装好服务是没有问题的
本文主要是说说 nginx-0.7.58 以服务方式运行后“nginx -s reload”常见错误解决方法
注意,这个 nginx-0.7.58 下载自官方http://nginx.net
1、[alert]: CreateFileMapping(1024, nginx_shared_zone) failed (5: Access is denied)
根据这个提示我分析了一下,应该是权限问题,这时我分别用服务启动和命令启动nginx后发现
服务启动后 nginx 是以 system 身份运行的,而 命令启动后 nginx 是以 administrator 身份运行的
这样看问题应该是出在了服务的运行身份上,所以我们应该修改服务的运行身份,具体修改方法:
服务--》NGNIX--》属性--》登陆--》登陆身份--》选择此账户后账户填入administration,再填入密码
修改完后重启服务再试 nginx -s reload ,一切正常
2、[error]: OpenEvent("ngx_reload_31796") failed (2: The system cannot find the file specified)
这个应该是最常见的错误了,一般引起这个错误的主要原因是 nginx 不能处理特定pid的 nginx 进程而造成的
这个错误信息中 reload 还有可能是 stop reopen quit,而后面的31796则是当前 logs\nginx.pid 中的值
我碰到这个问题的时候是在我mstsc登陆vps上的win03时,下面是当时复制出的一些信息
D:\httpd\nginx>sc stop nginx
D:\httpd\nginx>sc start nginx
D:\httpd\nginx>tasklist | findstr nginx
nginx.exe 16360 Console 0 3,184 K
nginx.exe 31112 Console 0 3,512 K
D:\httpd\nginx>start nginx.exe
D:\httpd\nginx>tasklist | findstr nginx
nginx.exe 16360 Console 0 3,184 K
nginx.exe 31112 Console 0 3,512 K
nginx.exe 32696 RDP-Tcp#3 7 3,212 K
nginx.exe 14988 RDP-Tcp#3 7 3,524 K
D:\httpd\nginx>
当时我没有发现有啥问题,以为是程序的问题,后来我在本地虚拟机上win03上使用没有碰到此错误,一样的操作为啥结果会不同?
我就又重新在vps上的win03上做试验,发现了猫腻,服务启动和远程登陆后手动启动的会话id不同
就拿上面抓的信息为例子
nginx以服务方式启动的会话id是0,而我远程登陆后的会话id是7,所以不能操作会话id 0启动的nginx
而我远程登陆后自己手动 start nginx 启动,这时nginx.exe的会话id就是我现在用的,所以我此时是能正常使用 nginx -s reload 的
综上所述,这个错误是由于不能正常结束特定进程所引起的,也大多数情况是在远程登陆后操作才会出现,具体的解决方法未知,最关键的问题远程登陆后如何切换到会话id 0上去



能帮忙提供假设小红伞升级服务器的资料吗?
我想在学校局域网内架设升级服务器,信箱lulu@msn.cn,谢谢大大了
貌似大大 的blog 是修改自sablog1.6吧
很早 sablog就出2.0了 大大去sablogplus.org看看吧
0.7.59 刚出来
原话如下:
Win32 Binaries
As of 0.7.52, Nginx is now available as an official Windows binary.
The Windows version is provided as a binary-only due to the current build process (which currently uses some Wine tools). When the build process has been cleaned up, source will be made available. Igor does not want to support build issues with the current system.
详见
http://wiki.nginx.org/NginxInstall
学校的小红伞 都是 v8的