Nginx+php+MySql(win sercer2012)

我的博客:https://blog.thuol.com

说明

亲测原稿。以 D:\wnmp 目录为例(实际目录可自行更改)

准备

软件包下载地址

Nginx官网:http://nginx.org/
Mysql官网:https://www.mysql.com/
PHP官网:http://www.php.net/

本教程使用软件

nginx-1.11.6.zip
mysql-5.7.16-winx64.zip
php-5.6.28-nts-Win32-VC11-x64.zip
RunHiddenConsole.exe (后台以cgi启动nginx+php使用,没找到官网,自行百度下载)

php版本说明

non-thread-safe 非线程安全 与IIS 搭配环境
thread-safe 线程安全与apache 搭配的环境
php还有 VC6 VC9版本 区分VC6和VC9一个支持apache一个支持IIS
VC9 用在apache上也没问题
如果是以FastCGI方式(搭配IIS、nginx)来执行PHP ,都建议下载、执行 non-thread safe 版本的 PHP

在D盘建立wnmp目录并在wnmp目录下建立 nginx, mysql, php-5.6, www目录,将软件解压到对应目录下。(D:\wnmp\www为代码目录)

安装Nginx

  1. 进入D:\wnmp\nginx目录下,双击运行nginx.exe文件。然后用浏览器打开http://localhost/ 出现Welcome to nginx! 成功。

安装PHP

  1. 进入D:\wnmp\php-5.6目录将php.ini-development复制一份改名为php.ini


  2. 打开D:\wamp\php-5.6\php.ini文件 搜索extension_dir = "ext",修为如下
extension_dir = "d:/wnmp/php-5.6/ext/"

搜索“date.timezone”,找到:;date.timezone = 先去前面的分号再改为

date.timezone = Asia/Shanghai

搜索“enable_dl”,找到:enable_dl = Off 改为

enable_dl = On

搜索“cgi.force_redirect” ;cgi.force_redirect = 1 先去前面的分号再改为

cgi.force_redirect = 0

搜索“fastcgi.impersonate”,找到: ;fastcgi.impersonate = 1 去掉前面的分号

fastcgi.impersonate = 1

搜索“cgi.rfc2616_headers”,找到:;cgi.rfc2616_headers = 0 先去前面的分号再改为

cgi.rfc2616_headers = 1

搜索“php_mysql”,找到:”extension=php_mysql.dll和extension=php_mysqli.dll 去掉前面的“;”(支持MYSQL数据库)

extension=php_mysql.dll
extension=php_mysqli.dll 

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

  1. 进入D:\wnmp\nginx\conf目录,打开修改nginx.conf文件
    1)大概第43~45行之间的内容



    修改如下

location / {
            root   D:/wnmp/www;
            index  index.html index.htm inde.php;
        }

2)支持php的设置,大概在第65-71行的


先将前面的“#”去掉,同样将root html;改为root D:/wnmp/www;。再把“/scripts”改为“document_root”就是指前面“root”所指的站点路径,修改完成如如下

        location ~ \.php$ {
            root           D:/wnmp/www;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }
  1. 在D:\wnmp\www目录内新建1.php文件,并写入
<?php 
        phpinfo();
?>

进入D:\wnmp\php-5.6目录,安装shift键点击右键 在此处打开命令窗口 输入以下命令行启动php(命令窗口不能关闭,属于前台运行模式)

php-cgi.exe -b 127.0.0.1:9000-c D:\wnmp\php-5.6\php.ini


进入D:\wnmp\nginx 安装shift键点击右键 在此处打开命令窗口 输入以下命令行重启动nginx(命令窗口不能关闭,属于前台运行模式)

nginx.exe -s stop    #停止nginx
nginx.exe            #启动nginx


使用浏览器打开http://localhost/1.php

  1. nginx-php小工具
    将RunHiddenConsole.exe文件复制到nginx根目录下(D:\wnmp\nginx)



    在D:\wnmp\nginx目录内新建文本文件粘贴以下内容(注意路径)

cls 
@ECHO OFF 
SET NGINX_PATH=D: 
SET NGINX_DIR=D:\wnmp\nginx\
color 0a 
TITLE Nginx Management  
GOTO MENU 
:MENU 
CLS 
ECHO. 
ECHO. * * * *  Nginx Management  * * * * * * * * * * * 
ECHO. * * 
ECHO. * 1 启动Nginx * 
ECHO. * * 
ECHO. * 2 关闭Nginx * 
ECHO. * * 
ECHO. * 3 重启Nginx * 
ECHO. * * 
ECHO. * 4 退 出 * 
ECHO. * * 
ECHO. * 5 启动Nginx-PHP环境 * 
ECHO. * * 
ECHO. * 6 关闭Nginx-PHP环境 * 
ECHO. * * 
ECHO. * * * * * * * * * * * * * * * * * * * * * * * * 
ECHO. 
ECHO.请输入选择项目的序号: 
set /p ID= 
IF "%id%"=="1" GOTO cmd1 
IF "%id%"=="2" GOTO cmd2 
IF "%id%"=="3" GOTO cmd3 
IF "%id%"=="5" GOTO cmd5
IF "%id%"=="6" GOTO cmd6
IF "%id%"=="4" EXIT 
PAUSE 
:cmd1 
ECHO. 
ECHO.启动Nginx...... 
IF NOT EXIST %NGINX_DIR%nginx.exe ECHO %NGINX_DIR%nginx.exe不存在 
%NGINX_PATH% 
cd %NGINX_DIR% 
IF EXIST %NGINX_DIR% start %NGINX_DIR%nginx.exe 
ECHO.OK 
PAUSE 
GOTO MENU 
:cmd2 
ECHO. 
ECHO.关闭Nginx...... 
taskkill /F /IM nginx.exe > nul 
ECHO.OK 
PAUSE 
GOTO MENU 
:cmd3 
ECHO. 
ECHO.关闭Nginx...... 
taskkill /F /IM nginx.exe > nul 
ECHO.OK 
GOTO cmd1 
GOTO MENU
:cmd5 
ECHO. 
ECHO.启动Nginx-PHP环境......
REM Windows 下无效
REM set PHP_FCGI_CHILDREN=5
REM 每个进程处理的最大请求数,或设置为 Windows 环境变量
set PHP_FCGI_MAX_REQUESTS=1000 
echo Starting PHP FastCGI...
RunHiddenConsole D:/wnmp/php-5.6/php-cgi.exe -b 127.0.0.1:9000 -c D:/wnmp/php-5.6/php.ini
echo Starting nginx...
RunHiddenConsole D:/wnmp/nginx/nginx.exe -p D:/wnmp/nginx
PAUSE 
GOTO MENU
:cmd6 
ECHO. 
ECHO.关闭Nginx-PHP环境......
echo Stopping nginx...  
taskkill /F /IM nginx.exe > nul
echo Stopping PHP FastCGI...
taskkill /F /IM php-cgi.exe > nul
PAUSE 
GOTO MENU

并改名为 Nginx管理工具.bat (后缀也要改),双击打开(这时候可以关闭刚才的命令框了)

  1. nginx支持thinkphp配置(按需要设置)
server {
        listen       80 ;
        server_name localhost;
        root   d:/wnmp/www;
        index  index.html index.htm index.php;
        
        error_page  404 /404.html;
        location = /404.html {
            return 404 'Sorry, File not Found!';
        }
        
        location / {
            try_files $uri @rewrite;
        }
        
        location @rewrite {
            set $static 0;
            if  ($uri ~ \.(css|js|jpg|jpeg|png|gif|ico|woff|eot|svg|css\.map|min\.map)$) {
                set $static 1;
            }
            if ($static = 0) {
                rewrite ^/(.*)$ /index.php?s=/$1;
            }
        }
        
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
        location ~ /Uploads/.*\.php$ {
            deny all;
        }
        location ~ \.php/ {
           if ($request_uri ~ ^(.+\.php)(/.+?)($|\?)) { }
           fastcgi_pass 127.0.0.1:9000;
           include fastcgi_params;
           fastcgi_param SCRIPT_NAME     $1;
           fastcgi_param PATH_INFO       $2;
           fastcgi_param SCRIPT_FILENAME $document_root$1;
        }
        
        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        location ~ \.php$ {
            #root           d:/wnmp/www;
            fastcgi_pass   127.0.0.1:9000;
            #fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }

        location ~ /\.ht {
          deny  all;
        }
    }

安装Mysql

  1. 进入D:\wnmp\mysql,复制my-default.ini文件并改名为my.ini。
    在D:\wnmp\mysql目录下创建data文件夹,打开my.ini修改如下内容
basedir = D:\wnmp\mysql
datadir = D:\wnmp\mysql\data
port = 3306
  1. 进入D:\wnmp\mysql\bin目录下按着shift键点右键, 在此打开命令窗口,(注意必须以管理员身份打开,否则报错。如果不是管理员请以管理员身份打开cmd并进入D:\wnmp\mysql\bin目录)
    输入以下命令初始化mysql
mysqld --initialize --user=mysql --console    

记录下红色框内的初始密码(密码前面是没有空格的)


执行下面命令将MySQL添加到系统服务

mysqld --install MySQL

执行下面命令启动myslq

net start mysql
  1. 进入myslq修改初始密码(进入需要刚才记录的密码)
mysql -u root -p

更改密码

set password for root@localhost = password('123456'); (注意分号)
  1. 创建其他用户
CREATE USER '用户名'@'%' IDENTIFIED BY '密码';

添加访问ip,%号代表所有IP都能访问

GRANT GRANT OPTION ON *.* TO '账号'@'%';

添加权限(所有权限)

GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER ON *.* TO '账号'@'%';
  1. mysql 常用命令
net start mysql     #启动myslq服务
net stop mysql      #停止mysql服务

mysql管理小工具
在D:\wnmp\mysql目录下新建一个文本粘贴如以下内容(自己也可以修改注意路径)

cls 
@ECHO OFF 
SET Mysql_PATH=D: 
SET Mysql_DIR=D:\wnmp\mysql\bin
color 0a 
TITLE Mysql Management  
GOTO MENU 
:MENU 
CLS 
ECHO. 
ECHO. * * * *  Mysql Management  * * * * * * * * * * * 
ECHO. * * 
ECHO. * 1 启动Mysql * 
ECHO. * * 
ECHO. * 2 关闭Mysql * 
ECHO. * * 
ECHO. * 3 重启Mysql * 
ECHO. * * 
ECHO. * 4 退 出 * 
ECHO. * * 
ECHO. * * * * * * * * * * * * * * * * * * * * * * * * 
ECHO. 
ECHO.请输入选择项目的序号: 
set /p ID= 
IF "%id%"=="1" GOTO cmd1 
IF "%id%"=="2" GOTO cmd2 
IF "%id%"=="3" GOTO cmd3 
IF "%id%"=="4" EXIT 
PAUSE 
:cmd1 
ECHO. 
ECHO.启动Mysql...... 
cd %Mysql_DIR% 
net start mysql
PAUSE 
GOTO MENU 
:cmd2 
ECHO. 
ECHO.关闭Mysql...... 
cd %Mysql_DIR% 
net stop mysql
PAUSE 
GOTO MENU 
:cmd3 
net stop mysql
net start mysql 
PAUSE 
GOTO MENU

改名字为 Mysql管理工具.bat (后缀也要改),然后双击打开(需要管理员权限)

增加PHP扩展,以redis为例(其他扩展大致相仿按需添加)

php扩展官方地址http://pecl.php.net/

  1. 下载redis的DLL文件(注意php版本)
    解压后复制php_redis.dll文件到D:\wnmp\php-5.6\ext目录下
  2. 打开D:\wnmp\php-5.6下php.ini文件,添加以下代码
extension=php_memcache.dll
  1. 重启nginx-php浏览器里打开http://localhost/1.php

推荐阅读更多精彩内容