蒙国造博客

WNMP完整教程

WNMP,是PHP开发环境的简称,即在Windows系统下安装NginxMySQLPHP三个软件。

目前有很多一键安装的PHP开发环境,如phpStudyWAMPServerUPUPWXAMPP、APPServ等。

phpStudy界面友好,但是MySQL版本太老。

WAMPServer的MySQL版本新,但是界面垃圾,用了很久不知道怎么开启服务器。

UPUPW版本新,DOS界面操作,介于phpstudy和WAMPServer之间。

其实,DIY一个WNMP环境也并不麻烦,按照下面步骤,很容易就能自己搭一个~~

友情推荐:其实,我们有更好的方法,就是用Docker一键搭建LNMP环境

1 下载

1.1 NGINX

Nginx最新版下载:http://nginx.org/en/download.html

1.2 PHP

PHP最新版下载:http://windows.php.net/download/

因为我们要通过FastCGI方式连接PHP,请下载Non Thread Safe版本

更多请看:PHP的Non Thread Safe和Thread Safe区别选择

PHP5.6+以上还需Visual C++Redistributable 2015,这是建立的C++应用的必要组件,安装一次即可解决,下载地址:

1.3 MySQL

MySQL最新版下载:http://dev.mysql.com/downloads/mysql/

MySQL下载需要账号登陆,5.7.17版本可直接用如下地址下载:

2 安装准备

2.1 解压

在D盘下新建一个名为wnmp的目录,再在wnmp目录下创建zips子目录。

把下载的安装包全部放到zips目录下。

本文使用的版本如下:

将各安装包解压到wnmp目录下,完成后目录结构如下:

D:\wnmp                                WNMP总目录
├─mysql-5.7.17-winx64                  MySQL安装目录
├─nginx-1.10.2                         Nginx安装目录
├─php-7.1.0-nts-Win32-VC14-x64         PHP安装目录
├─zips                                 安装包目录
│  ├─mysql-5.7.17-winx64.zip           MySQL安装包
│  ├─nginx-1.10.2.zip                  Nginx安装包
│  ├─php-7.1.0-nts-Win32-VC14-x64.zip  PHP7安装包

2.2 配置环境变量

右击桌面的我的电脑,选择属性,再依次点击高级环境变量

在环境变量Path里面增加MySQL、Nginx、PHP执行文件的路径:

;D:\wnmp\mysql-5.7.17-winx64\bin;D:\wnmp\nginx-1.10.2;D:\wnmp\php-7.1.0-nts-Win32-VC14-x64;

重新打开一个DOS窗口,输入下面命令就可以看到环境变量已经生效:

echo %PATH%

然后用下面的命令查看版本号:

> mysqld --version
mysqld  Ver 5.7.17 for Win64 on x86_64 (MySQL Community Server (GPL)) 

> nginx -v
nginx version: nginx/1.10.2 

> php -v
PHP 7.1.0 (cli) (built: Dec  2 2016 05:24:39) ( NTS MSVC14 (Visual C++ 2015) x64 )                     
Copyright (c) 1997-2016 The PHP Group
Zend Engine v3.1.0-dev, Copyright (c) 1998-2016 Zend Technologies

当然,到这里各个功能还暂时不能用,需要继续配置。

3 配置MySQL

切换到mysql-5.7.17-winx64目录,复制my-default.ini文件,并重命名为my.ini

再打开my.ini,取消basedirdatadir前的注释,并指定具体路径:

basedir = "D:/wamp/mysql-5.7.17-winx64/"
datadir = "D:/wamp/mysql-5.7.17-winx64/data/"

管理员身份打开一个DOS窗口,切换到bin目录(必须),

> d:                                         # 切换到D盘
> cd d:\wnmp\mysql-5.7.17-winx64\bin         # 切换到bin目录
> mysqld -install                            # 安装MySQL服务
> mysqld --initialize --user=root --console  # 初始化MySQL,生成data目录和root密码,5.7版本之后必须要有这个命令

最后那条命令会生成一个临时密码,如下:

2016-12-20T10:07:35.961579Z 1 [Note] A temporary password is generated for root@localhost: 4fwLHzjSql_?

再启动MySQL:

> net start mysql

临时密码只能登陆后修改密码,不能进行其他操作。使用下面的命令修改root密码:

mysql_secure_installation

MySQL5.7.6+版本修改root密码,请看这里:MySQL5.7修改默认root密码

4 配置nginx

Nginx解压其实就完成了安装,进入Nginx目录,启动nginx,

> d:
> cd d:\wnmp\nginx-1.10.2
> start nginx

检查Nginx是否启动成功,可以用这个命令:

> tasklist /fi "imagename eq nginx.exe"

启动后,浏览器访问localhost,能看到Welcome to nginx!欢迎信息就说明成功了。

没有启动的话,看看80端口有没有被占用。

默认情况下,Nginx站点根目录在Nginx的html目录下。

然后,打开Nginx安装目录下的conf子目录,修改nginx.conf配置文件。

首先,在location / 区域,index变量加上index.php作为首选默认首页,如下:

location / {
    root   html;
    index  index.php index.html index.htm;
}

再删除下面的注释,并更改/scripts$document_root

location ~ \.php$ {
    root html;
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
}

5 配置PHP

复制一份php目录下的php.ini-development文件,将复制的文件名改为php.ini,打开并作如下修改:

其他配置按照自己的需求更改。

6 运行

在Nginx安装目录下的html目录新建一个index.php文件,内容:

<?php
phpinfo();

切换到php目录,启动PHP CGI,如下:

> d:
> cd d:\wnmp\php-7.1.0-nts-Win32-VC14-x64
> php-cgi.exe -b 127.0.0.1:9000 -c php.ini

切换到nginx目录,重载Nginx。(查看Nginx常用命令

> d:
> cd d:\wnmp\nginx-1.10.2
> nginx -s reload

浏览器访问:http://localhost,出现PHP信息说明配置成功。

查看 后台启动fastcgi,并一键启动、停止、重启WNMP脚本

7 测试MySQL

在nginx的html目录下新建sqltest.php文件,内容如下:

<?php
$link = new mysqli('localhost', 'root', 'root');
if(!$link) {
    echo "FAILD!";
} else {
    else echo "OK!";
}

浏览器访问:http://localhost/sqltest.php,如果页面显示OK,说明PHP连接MySQL成功。

 

参考资料:

  1. windows下WNMP(windows+nginx+mysql+php)配置
  2. MySQL环境部署
  3. MySQL 5.6 for Windows 解压缩版配置安装
  4. MySQL Forums :: Install & Repo :: on Windows 10 Mysql 5.7: Mysqld command fails. Can’t find \data directory
  5. windows10配置mysql失败
  6. nginx在windows命令行下重启报错的问题
  7. Windows下尝试PHP7提示丢失VCRUNTIME140.DLL的问题解决
退出移动版