windows下配置nginx+mysql+php

前言

一般来讲很多开发工作并不是在linux中用vim硬怼,很多人用windows编程然后通过git托管,那么我们可以在windows下面安装nginx和php+Mysql来调试我们的程序

nginx的安装:

方法类似linux下安装nginx,在官网上下载ngxin的windows版,解压然后修改conf/nginx.conf,主要修改如下:

server {
        listen       80;#修改监听端口
        server_name  localhost;#修改域名
        ······
        location / {
                    root   html;#网站根目录
                    index  index.html index.htm index.php;#配置index
                }
        ······
        location ~ \.php$ {
                    root           html;#网站根目录
                    fastcgi_pass   127.0.0.1:9000;#Nginx以cgi方式用过tcp协议和php交互,也可配置成套接字交互(.sock)方法参考linux下配置
                    fastcgi_index  index.php;
                    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;#$document_root指的是web根目录,不配置可能会有No input file specified.错误
                    include        fastcgi_params;
                }

附上Nginx的常用命令:

运行start nginx

关闭 nginx -s stop    或者    nginx -s quit

stop表示立即停止nginx,不保存相关信息

quit表示正常退出nginx,并保存相关信息

重启(因为改变了配置,需要重启)

nginx -s reload

然后我们访问localhost,会看到nginx的欢迎界面。

php的安装:

php在windows下面安装方式网上一搜一大堆,整理下就是:

  • 直接解压下载好的php包,把解压出来的文件夹重命名成php5。进入文件夹修改php.ini-recommended文件为php.ini,编辑文件:

    extension_dir = "./ext"
    

    更改为

    extension_dir = "D:/wnmp/php5/ext"
    

    往下看,再找到

    ;extension=php_mysql.dll
    ;extension=php_mysqli.dll
    

    前面指定了php的ext路径后,只要把需要的扩展包前面所对应的“;”去掉,就可以了。这里打开php_mysql.dll和php_mysqli.dll,让php支持mysql。

    到这里,php已经可以支持mysql了。

    接下来我们来配置php,让php能够与nginx结合。找到

    ;cgi.fix_pathinfo=1
    

    我们去掉这里的封号。

    cgi.fix_pathinfo=1
    
    这一步非常重要,这里是php的CGI的设置。
  • 输入命令

    php-cgi -b 127.0.0.1:9000 -c $PHP_PATH./php.ini #$PHP_PATH是你php的根目录
    

    然后利用如下命令:

    netstat -a
    

    查看9000端口是否已经被php监听,如果是,那么大功告成

    踩过的坑

    php文件访问时会有No input file specified.错误,原因是没有配置

    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; #document_root是根目录
    这个错误类似404

MySQL的安装:

由于是在windows下面安装MySQL,操作自然没有在linux下面那么风骚,接下来以MySQL5.7为例,来聊一聊mysql的安装:

  • 首先下载mysql的windows版本,解压后新建my.ini或者修改my-defalut.ini为my.ini,并添加以下配置:

    [mysql]
    #设置mysql客户端默认字符集
    default-character-set=utf8 
    [mysqld]
    #设置3306端口
    port = 3306 
    #设置mysql的安装目录
    basedir=D:\Programs\mysql-5.7.17-winx64
    #设置mysql数据库的数据的存放目录
    datadir=D:\Programs\mysql-5.7.17-winx64\data #坑注意!
    #允许最大连接数
    max_connections=200
    #服务端使用的字符集默认为8比特编码的latin1字符集
    character-set-server=utf8
    #创建新表时将使用的默认存储引擎
    default-storage-engine=INNODB 
    
  • 前方高坑预警:如果你以为这么久可以直接启动服务那就真是naive了,5.7版本的mysql没有data文件夹,所以会导致服务打不开并且不报错,这个问题可以用如下命令解决:
    cd到mysql的bin文件夹并且以管理员打开cmd运行下面命令:

    mysqld --initialize --user=mysql --console
    

    先执行以上命令, 生成库. 注意有个临时密码, 要记下来.
    然后启动服务:

    net start mysql
    

    然后再命令行:

    mysql -uroot -p
    

    输入密码(生成表命令最后一行)进入mysql:

    set password = password('root') #设置密码为root
    

    必须修改否则无法使用mysql

    踩过的坑

    妈个鸡mysql5.7居然没有data文件夹,而且启动服务不报错,找了好久才找到问题,具体的报错可以用下面命令查看:

    mysqld -nt -install #安装并打印日志
    

总结

没啥好总结的,在windows上面要是这些都不会装和咸鱼有什么区别。
在linux上面安装和在windows上面大同小异,值得一提的是虽然可以用tcp方式监听9000端口使nginx和php交互,但是利用套接字文件更快(.sock),linux上面启动php需要启动php-fpm.