到官网下载nginx稳定版,解压到e盘根目录;
到官网下载php非安装版,解压到e盘根目录。
2、配置:
打开nginx.conf,修改相关位置如下,
location / {
root html; #网站根目录
index index.html index.htm index.php;
autoindex on; #当网站没有默认文件时,打开域名可以看到文件目录结构
}
location ~ \.php$ {
#root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME e:/html/$fastcgi_script_name; #php文件存放目录,测试过相对路径不行,需要绝对路径
include fastcgi_params;
}
配置好后打开命令提示符,切换到e:\nginx,启动nginx命令:start nginx 。(相关介绍可到http://nginx.org/en/docs/windows.html)
注意:当修改配置文件后,要nginx -s quit 然后 start nginx 才有配置后的效果,用 nginx -s reload 没效果。可能是windows版本的一个bug吧。
配置php.ini,设置extension_die = "ext/",把相关用到的ext扩展dll前面的分号去掉,不然不能正常启动php-cgi.ext。
启动php-cgi.exe;切换到e:\php,在命令提示符下输入php-cgi.exe -b 127.0.0.1:9000。
3、测试:
写一个打印phpinfo()的php脚本放到html目录下面,测试php程序是否能够运行。经过测试成功运行。
关于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、: 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上去
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:nginx配置与常见错误解决方法 - Python技术站