admin 管理员组文章数量: 887021
2024年2月18日发(作者:notification helper)
nginx 在win7的安装与运行
本来想在windows7上安装Nginx,然后部署thinkphp的,过程中遇到了一些小问题,所以都记录下来!供以后查阅!几个细节的东西,有必要写清楚!
官网上下载地址:/en/
就那最新的版本做实验吧。我下了 windows原生版本 1.3.5,整个文件就是一个zip压缩文件。下载到F盘的根目录下,解压缩。出来的文件夹是nginx-1.3.5,顺便改成了nginx,方便使用(其实改不改都没有关系,改了,是因为重启nginx的时候,少打点字母罢了)。然后冲动的进入文件夹,双击启动文件,弹出了一个doc窗口,就在眨眼的功夫里,消失了,没有看清提示什么内容;不管三七二十一,我在浏览器了,打开127.0.0.1,提示 无法显示页面。我们没有安装IIS7,如果是无法显示页面,说明nginx启动失败了。但是到底是什么原因让nginx无法启动呢?
我想个办法,放doc的提示显示出来,结果提示是:
[emerg]:bind() to 0.0.0.0:80 failed <10013: An attempt was made to access a socket in a way forbidden
by its access permissions>
看提示信息,是因为windows 的80 端口被占用了,所以又想办法把80端口释放了。开始–运行–cmd 进入命令提示符 输入netstat -ano 即可看到所有连接的PID 之后在任务管理器中找到这个PID所对应的程序如果任务管理器中没有PID这一项,可以在任务管理器中选”查看”-”选择列”
经常,我们在启动应用的时候发现系统需要的端口被别的程序占用,如何知道谁占有了我们需要的端口,很多人都比较头疼,下面就介绍一种非常简单的方法,希望对大家有用。
我们需要确定谁占用了我们的80端口
在windows命令行窗口下执行:
C:>netstat -aon|findstr “80″
TCP 0.0.0.0:19780 0.0.0.0:0 LISTENING 2044
TCP 10.72.224.5:2558 96.17.109.8:80 ESTABLISHED 2044
TCP 10.72.224.5:2757 60.210.176.209:80 TIME_WAIT 0
TCP 10.72.224.5:3956 125.46.1.234:80 ESTABLISHED 2044
TCP 10.72.224.5:3959 125.46.1.234:80 ESTABLISHED 2044
UDP 0.0.0.0:2280 *:* 3700
看到了吗,端口被进程号为2044的进程占用,继续执行下面命令:
C:>tasklist|findstr “2044″
2044 Console 0 37,680 K
很清楚吧,360浏览器占用80端口,赶紧关闭。当然,如果你的80端口被其他程序占用,kill掉或者调整端口。
然后双击来启动nginx,这回没有提示信息了,打开浏览器 127.0.0.1:80;呵呵,nginx终于正常运行。
为什么要nginx运行在80端口上呢?因为本人想让nginx作为代理服务和前端服务。域名指向到服务器的ip的时候,直接就找到nginx。所以周折了一番。
在配置php环境的时候,有遇到了问题。我明明修改了的参数了,在重新启动的时候,都是无效的,很是郁闷,所以php环境配置无法配置成功了。仔细检查了配置文件的语法错误,发现了一些错误,修改过来了,仍然无效,干脆恢复原来的配置文件,还是老样子,这么一来就奇怪了。压根重启是无效的。
官方的文档很清楚:
nginx -s stop
nginx -s quit
quick exit
graceful quit
nginx -s reload changing configuration, starting a new worker, quitting an old worker gracefully
nginx -s reopen reopening log files
就这么几行命令,执行后,一切都正常,就是没有效果。
最后想到办法,打开windows的任务管理器,把nginx的几个进程都关闭了,启动nginx,终于看到想要的效果了。
但是最终配的是thinkphp,需支持Rewrite和Path_info,在网上找了一下,有两种办法
第一种,最简单的方法:
加上一句
location ~ .php {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index ;
fastcgi_param SCRIPT_FILENAME /var/www/company$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_script_name;
include /etc/nginx/fastcgi_params;
}
第二种方法:(注意:nginx 0.5 版此方法无效)
location ~ .php
{
fastcgi_pass 127.0.0.1:9000;
fastcgi_index ;
set $path_info "";
set $real_script_name $fastcgi_script_name;
if ($fastcgi_script_name ~ "^(.+?.php)(/.+)$") {
set $real_script_name $1;
set $path_info $2;
}
fastcgi_param SCRIPT_FILENAME /var/html/$real_script_name;
fastcgi_param SCRIPT_NAME $real_script_name;
fastcgi_param PATH_INFO $path_info;
include /etc/nginx/fastcgi_params;
}
我用的是第一种。
最后配置的代码为:
worker_processes 1;
events {
worker_connections 10240;
}
http {
include ;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 8000;
server_name 10.10.100.104;
charset utf-8;
location / {
root D:php;
index ;
if (!-e $request_filename) {
rewrite ^(.*)$ /?s=$1 last;
break;
}
}
error_page 500 502 503 504 /;
location = / {
root html;
}
location ~ .php{
root D:php;
fastcgi_pass 10.10.100.104:9000;
fastcgi_index ;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO$fastcgi_script_name;
include fastcgi_params;
}
}
调出thinkphp项目,定向能通过了,想要的效果出来了。看来nginx对windows的支持还不算很好,有些东西还是很折腾。
}
参考网址:/blog/panjj/other/2010/11/07/136
版权声明:本文标题:nginx 在win7的安装运行注意事项 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/free/1708266716h518097.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论