本来在win7下用的是IIS做web服务器,但近来因项目需求的原因,需要在服务器遇到404错误的时候自动做转向(不是在客户端的跳转,而是在服务器收到客户端请求去某目录下读取文件返回时,如果发现目录或目录下文件不存在,自动转到另一个服务器去取),用IIS发现很难做到这点,于是决定搭建nginx的开发环境,通过配置实现这一点。

首先,google nginx和php,分别到他们的官网把最新版本的下载回来,我当时下的PHP是5.4.3的版本,nginx是1.5.2,我把他们都放在D盘下一个叫webserver的文件夹里,然后开始做配置了。

nginx的启动很简单,进入它的目录,然后双击nginx.exe,如果没有端口冲突等问题的话,直接在浏览器输入localhost就可以访问welcome to nginx字样的网页了,这是默认的欢迎页面,放在自带的默认网页文件目录html下的。难道就这么简单吗?当然不是的。

这时如果你在html目录下建一个php文件,写上一句测试php环境的最经典的<?php phpinfo(); ?>,然后在浏览器输入这个php文件的路径进行访问,你会发现nginx根本不懂怎样去解析php代码,这是因为nginx与PHP还没有配合起来。按道理来说,当遇到php文件的时候,nginx应该把它交给php的fast-cgi来处理,然后把处理完的结果返回给客户端(浏览器)的。

怎样告诉nginx当遇到php文件时交给谁处理呢?打开nginx1.5.2的文件夹,找到conf目录,编辑目录下的nginx.conf文件,我的编辑结果如下所示,具体配置过程中需要注意什么请看注释:

server {
listen 80;
server_name localhost; charset utf-8; location / {
root E:/work/jentian/client;//html文件目录,由于我们项目的客户端代码与服务端服务是严格分开的,所以这里的root跟php的root不同
index index.html index.htm;
} location ~ \.php {
root E:/work/jentian/server; //php文件目录
fastcgi_param SCRIPT_FILENAME E:/work/jentian/server$fastcgi_script_name;//注意,$fastcgi_script_name前面的路径必须与root是一致的
fastcgi_index index.php;
fastcgi_pass 127.0.0.1:9000;
include fastcgi_params;
}
}

nginx的配置也就这么多了,很简单吧,但这时候当你刷新php页面的时候,会发现nginx现在还是没有办法解析php文件,原因在于php的fast-cgi还没有启动,如果打开一个普通的命令提示符窗口,然后输入命令启动fast-cgi时,启动后这个窗口是不能关闭的,否则fast-cgi的进程也会终止,不能继续解析php文件了,后来查了一下,原来windows是有一个运行隐形控制台的方法的,用这个方法启动fast-cgi,就不怕关闭控制台后fast-cgi也跟着结束的问题的。这个文件叫RunHiddenConsole.exe,系统是没有自带的,所以要执行下面的批处理文件之前,需要百度一下,把它下载下来放到系统的system32文件夹中就可以了。

最后,写了一个批处理文件来启动fast-cgi和nginx,这能就能一键启动nginx+php的环境了。下面是这个批处理文件的内容:

@echo off

set PHP_FCGI_MAX_REQUESTS = 1000

echo Starting PHP FastCGI...
rem 下面这里的分别替换成你的php-cgi.exe和php.ini的路径 ,后面的-b,-c等参数必须保留且注意前后空格
RunHiddenConsole D:/webServer/php-5.4.3/php-cgi.exe -b 127.0.0.1:9000 -c D:/webServer/php-5.4.3/php.ini //这里 echo Starting nginx...
rem 注意替换成你的nginx目录
D:/webServer/nginx-1.5.2/nginx.exe -p D:/webServer/nginx-1.5.2/ cd D:/webServer/nginx-1.5.2/ pause

把这个批处理文件保存到好,双击,就能启动你的nginx+php环境了,这时再刷新一下你的phpinfo页面,一切正常了。

淘宝充值小店: http://cn008.taobao.com

友情链接:井田商学院

win7下搭建nginx+php的开发环境的更多相关文章

  1. win7下搭建nginx+php的开发环境(转)

    在win7下用的是IIS做web服务器,但近来因项目需求的原因,需要在服务器遇到404错误的时候自动做转向(不是在客户端的跳转,而是在服务器收到客户端请求去某目录下读取文件返回时,如果发现目录或目录下 ...

  2. windows下搭建nginx+php+laravel开发环境(转)

    1.前言 windows下大多我们都是下载使用集成环境,但是本地已经存在一个集成环境,但不适合项目的需求.因此准备再自己搭建一个环境. 2.准备 工具: 1) 下载 nginx1.14.0(版本根据自 ...

  3. Win7搭建nginx+php+mysql开发环境以及websocket聊天实例测试

    Win7搭建nginx+php+mysql开发环境以及websocket聊天实例测试一.下载相关安装包 1.下载nginx最新版本(nginx1.3.13版之后才支持websocket协议) 下载地址 ...

  4. 在Ubuntu下搭建ASP.NET 5开发环境

    在Ubuntu下搭建ASP.NET 5开发环境 0x00 写在前面的废话 年底这段时间实在太忙了,各种事情都凑在这个时候,没时间去学习自己感兴趣的东西,所以博客也好就没写了.最近工作上有个小功能要做成 ...

  5. react-native —— 在Windows下搭建React Native Android开发环境

    在Windows下搭建React Native Android开发环境 前段时间在开发者头条收藏了 @天地之灵_邓鋆 分享的<在Windows下搭建React Native Android开发环 ...

  6. windows下搭建Apache+Mysql+PHP开发环境

    原文:windows下搭建Apache+Mysql+PHP开发环境 要求 必备知识 熟悉基本编程环境搭建. 运行环境 windows 7(64位); Apache2.2;MySQL Server 5. ...

  7. Linux下搭建gtk+2.0开发环境

    安装gtk2.0 sudo apt-get install libgtk2.0-dev 查看 2.x 版本 pkg-config --modversion gtk+-2.0 #有可能需要sudo ap ...

  8. Ruby on Rails入门——macOS 下搭建Ruby Rails Web开发环境

    这里只介绍具体的过程及遇到的问题和解决方案,有关概念性的知识请参考另一篇:Ruby Rails入门--windows下搭建Ruby Rails Web开发环境 macOS (我的版本是:10.12.3 ...

  9. Mac下搭建Cocos2d-x-3.2的开发环境

    配置:OS X 10.9.4 + Xcode 6.0 + Cocos2d-x-3.2 摘要:本文目标为在Xcode成功运行HelloWorld程序. 一.下载必要项 1.从官网下载Cocos2d-x- ...

随机推荐

  1. oracle_执行计划_谓词信息和数据获取(access and filter区别) (转)

    These two terms in the Predicate Information section indicate when the data source is reduced. Simpl ...

  2. 开源src镜像

    开源src镜像: http://download.savannah.gnu.org/releases/

  3. 【动态规划】XMU 1560 新ACM规则

    题目链接: http://acm.xmu.edu.cn/JudgeOnline/problem.php?id=1560 题目大意: 给定n(n<=200)个任务及每个任务的耗时,问m(m< ...

  4. Maven搭建环境(Linux& Windows)

    Linux下安装Maven 1.前提条件: 1)下载并安装好JDK .在终端输入命令“java -version”,如果出现类似如下信息说明JDK安装成功. $ java -version java ...

  5. Unity3D NGUI UIPlayTween控件(一)动态打开关闭窗口

    利用NGUI自带的脚本控件实现按钮点击窗口滑动出现与隐藏. 创建界面 首先建立如下图的三个BUtton与三个Panel 绑定脚本 然后在每个Button上添加UIPlayTween脚本,在Intera ...

  6. Runtime.getRuntime().addShutdownHook(shutdownHook);

    今天在阅读Tomcat源码的时候,catalina这个类中使用了下边的代码,不是很了解,所以google了一下,然后测试下方法,Tomcat中的相关代码如下: Runtime.getRuntime() ...

  7. ubuntu下mysql的常用命令

    首先安装mysql:sudo?apt-get?install?mysql-server?mysql-client? 1.终端启动MySQL:/etc/init.d/mysql start:(stop ...

  8. Linux系统下查看某文件修改的时间戳

    Linux系统下查看某文件修改的时间戳查看文件时间戳命令:stat awk.txt File: `awk.txt' Size: 20              Blocks: 8          I ...

  9. 【错误总结之(一)】error LNK2038: 检測到“_ITERATOR_DEBUG_LEVEL”的不匹配项: 值“0”不匹配值“2”

    1>cvblob.lib(cvblob.obj) : error LNK2038: 检測到"_ITERATOR_DEBUG_LEVEL"的不匹配项: 值"0&quo ...

  10. C++中的构造函数和析构函数

    构造函数: 在类实例化对象时自动执行,对类中的数据进行初始化.构造函数可以从载,可以有多个,但是只能有一个缺省构造函数. 析构函数: 在撤销对象占用的内存之前,进行一些操作的函数.析构函数不能被重载, ...