WNMP,是PHP开发环境的简称,即在Windows系统下安装Nginx、MySQL、PHP三个软件。
目前有很多一键安装的PHP开发环境,如phpStudy、WAMPServer、UPUPW、XAMPP、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++应用的必要组件,安装一次即可解决,下载地址:
- 64位下载:vc_redist.x64.exe
- 32位下载:vc_redist.x86.exe
1.3 MySQL
MySQL最新版下载:http://dev.mysql.com/downloads/mysql/。
MySQL下载需要账号登陆,5.7.17版本可直接用如下地址下载:
- http://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.17-win32.zip
- http://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.17-winx64.zip
2 安装准备
2.1 解压
在D盘下新建一个名为wnmp
的目录,再在wnmp
目录下创建zips
子目录。
把下载的安装包全部放到zips
目录下。
本文使用的版本如下:
- nginx-1.10.2.zip
- php-7.1.0-nts-Win32-VC14-x64.zip
- mysql-5.7.17-winx64.zip
将各安装包解压到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
,取消basedir
和datadir
前的注释,并指定具体路径:
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
,打开并作如下修改:
- 找到
; extension_dir = "ext"
,去掉前面的分号,再改为extension_dir = "D:\wnmp\php\ext"
- 找到
;date.timezone =
,去掉前面的分号,再改为date.timezone = Asia/Shanghai
- 找到
;cgi.force_redirect = 1
,去掉前面的分号,再改为cgi.force_redirect = 0
- 找到
;cgi.rfc2616_headers = 0
,去掉前面的分号,再改为cgi.rfc2616_headers = 1
- 找到
enable_dl = Off
,改为enable_dl = On
- 找到
;fastcgi.impersonate = 1
,去掉前面的分号 - 找到
;extension=php_curl.dll
,去掉前面的分号 - 找到
;extension=php_gd2.dll
,去掉前面的分号 - 找到
;extension=php_mbstring.dll
,去掉前面的分号 - 找到
;extension=php_mysqli.dll
,去掉前面的分号 - 找到
;extension=php_pdo_mysql.dll
,去掉前面的分号
其他配置按照自己的需求更改。
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成功。
参考资料: