在windows下搭建WNMP

前言:Nginx其实在Windows上面运行不如Linux好,其中一个原因是windows下面没有fast-cgi的管理工具fpm。

准备:


nginx下载:下载地址,选择一个版本

Mainline是开发版(不保证稳定性),Stable version是最新稳定版,Legacy versions旧版本稳定版


mysql下载:

下载地址 这是一个5.7.17版本64位的

强调一下,最好在官网下载,避免别人动了手脚



php下载:下载地址,选择适合自己的

PHP5.2.10版本开始,有Non Thread Safe与Thread Safe两种版本的可供选择

区别:

Thread Safe会在执行时进行线程安全检查,防止有新要求就重新启动新线程的cgi耗尽系统资源

Non Thread Safe在执行时不进行线程安全检查

由于我们是要php以fast-cgi方式执行,FastCGI执行方式是以单一线程来执行操作,所以使用Non Thread Safe版本效率较高


开始搭建:

我喜欢把放在E盘,所以我在E根目录新建 wnmp文件夹,在wnmp里面新建php、mysql、nginx,把刚刚下载的php 跟 nginx 解压到相应文件夹里面就行了。mysql还要自己安装一下(不一定要放到这个目录)。


大概就是这样

①首先是nginx(其实一个nginx就能说好多东西,我粗略带过一下,有兴趣的同学应该要自己找答案)

这个就是我们的nginx,自己双击就能运行,也能从cmd进去运行

先试试有没有安装成功把,默认是80端口。我们可以直接双击nginx.exe运行,

也可以命令行运行

start nginx ----启动   

nginx -s reload ----重新加载配置

nginx -s stop----停止服务

打开浏览器访问localhost或者127.0.0.1,看到下面的页面就说明成功了

默认页

接下来我们还要改点配置

nginx我们主要管html目录跟conf目录,html目录是默认存放web项目的目录,conf里面有很多配置文件

我们主要看nginx.conf

nginx.conf


新增upstream参数,

127.0.0.1指向本机,9001跟9002其实是我们之后开启php自带的fast-cgi时需要监听的端口,(upstream还有很多配置的,这里没办法细讲,可以自己看看),

建议一个以上(端口不同),也不要太多,因为需要开启相应数量的fast-cgi(fast-cgi也是有很多知识需要知道的,最好自己看看)。

把server改一下(其实root那里配置我建议是全路径)

server模块的配置

localcation那里是路由规则,具体要怎么个规则可以自己定义,上面的是匹配到以.php结尾的url。就走这个规则。

修改完,nginx需要reload一下。

当然现在还是不可以执行php,因为php-cgi都还没开

②.轮到了php了


其中php.ini是我复制php.ini-development的。(里面开启了我自己需要的一些modules)


指定module目录,路径最好写全

php/ext/里面装了各种dll驱动

然后找到

把自己需要的都开启(把;号去掉)

我们进入cmd命令行操作,开启php自带的fast-cgi

因为我们之前是指定了两个端口,所以同理,我们重新打开一个cmd

(在上面,可能你会报错,因为某些模块的引进需要安装别的软件,最好排除方法是双击php目录里面的phpdbg.exe,哪个没安装就去安装好,不安装的话,php.ini那里就不要引进

然后写一个简单的helloworld把,放在nginx/html目录下面

如果以上成功了,环境也差不多了。

③.mysql

基本上next就行了。


PS:fast-cgi在window上面达到一定的请求数量会自动退出,因为window上面并没有像php-fpm这样的fastcgi管理器,也是我们需要开启多个工作线程(127.0.0.1:9001跟9002)去工作的主要原因(不开启两个以上,如果curl去请求自己服务器的话,就会超时并且curl失败,原因是当前线程的curl正在执行发送请求的操作,无法同时执行接收curl请求的操作,这样就堵塞了自己,curl就直到超时失败),虽然开启了多个线程,但是每个cgi的有执行的最大请求数,达到一定的请求数,cgi还是会退出的,(可能php-fpm帮我们重新开启了把),所以我们需要写一个bat去监听cgi是否退出了,退出了就给他重新开启,我放到云盘,需要的可以自己下载,以管理员方式运行(虽然会造成一定的内存泄漏,cgi虽然自动退出了,但是其实还保留在内存中,过了一定时间才会自己消失)。

你可能感兴趣的:(在windows下搭建WNMP)