nginx 在win7的安装与运行
本来想在windows7上安装Nginx,然后部署thinkphp的,过程中遇到了一些小问题,所以都记录下来!供以后查阅!几个细节的东西,有必要写清楚!
上下载地址:/en/download.html
就那最新的版本做实验吧。我下了 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 wa
y forbidden by its access permissions>
看提示信息,是因为windows 的80 端口被占用了,所以又想办法把80端口释放了。开始–运行–cmd 进入命令提示符 输入netstat -ano 即可看到所有连接的PID 之后在任务管理器中到这个nginx部署前端项目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
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环境的时候,有遇到了问题。我明明修改了f的参数了,在重新启动的时候,都是无效的,很是郁闷,所以php环境配置无法配置成功了。仔细检查了配置文件的语法错误,发现了一些错误,修改过来了,仍然无效,干脆恢复原来的配置文件,还是老样子,这么一来就奇怪了。压根重启是无效的。
官方的文档很清楚:
nginx -s stop quick exit
nginx -s quit 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 index.php;
fastcgi_param SCRIPT_FILENAME /var/www/company$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_script_name;
include /etc/nginx/fastcgi_params;
}
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
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 index.php;
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;
{
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
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 pes;
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 index.html index.htm index.php;
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php?s=$1 last;
break;
}
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
location ~ \.php{
root D:\php;
fastcgi_pass 10.10.100.104:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO$fastcgi_script_name;
include fastcgi_params;
}
}
}
调出thinkphp项目,定向能通过了,想要的效果出来了。看来nginx对windows的支持还不算很好,有些东西还是很折腾。
参考网址:2goo.info/blog/panjj/other/2010/11/07/136
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论