美文网首页
Windows下搭建wnmp

Windows下搭建wnmp

作者: 左诗右码 | 来源:发表于2019-04-15 13:54 被阅读0次

    运行环境为 windows server 2008 64位系统。
    安装目录为 D:/wnmp

    mysql5.7 下载地址:https://dev.mysql.com/downloads/mysql/5.7.html#downloads
    (本文选择的是5.7.25 | Microsoft Windows | All | Windows (x86, 64-bit), ZIP Archive)

    php7.2 下载地址:https://windows.php.net/downloads/releases/php-7.2.17-nts-Win32-VC15-x64.zip
    (本文选择的是 php-7.2.17-nts-Win32-VC15-x64)

    nginx 下载地址:http://nginx.org/download/nginx-1.15.11.zip
    (本文选择的是 主线版本 nginx/Windows-1.15.11 )

    • 安装 mysql 5.7

    1. 官网下载 mysql 5.7 压缩包,下载之后在 D:/wnmp 目下解压。
    2. 创建数据库配置文件:my.ini

    在 D:/wnmp/mysql5.7 目录下创建 my.ini 文件,并写入以下内容

    [client]
    port=3306 # 设置3306端口
    [mysql]
    default-character-set=utf8 # 设置mysql客户端默认字符集
    
    [mysqld]
    port=3306
    basedir="D:\wnmp\mysql5.7"  # 设置mysql的安装目录
    datadir="D:\wnmp\mysql5.7\data" # 设置mysql数据库的数据的存放目录,这里会存放数据库表
    character-set-server=utf8 # 服务端使用的字符集默认为8比特编码的latin1字符集
    default-storage-engine=MyISAM # 创建新表时将使用的默认存储引擎
    #支持 INNODB 引擎模式。修改为 default-storage-engine=INNODB 即可。
    #如果 INNODB 模式如果不能启动,删除data目录下ib开头的日志文件重新启动。
    
    sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
    max_connections=512
    
    query_cache_size=0
    table_cache=256
    tmp_table_size=18M
    
    thread_cache_size=8
    myisam_max_sort_file_size=64G
    myisam_sort_buffer_size=35M
    key_buffer_size=25M
    read_buffer_size=64K
    read_rnd_buffer_size=256K
    sort_buffer_size=256K
    
    innodb_additional_mem_pool_size=2M
    
    innodb_flush_log_at_trx_commit=1
    innodb_log_buffer_size=1M
    
    innodb_buffer_pool_size=47M
    innodb_log_file_size=24M
    innodb_thread_concurrency=8
    
    1. 初始化和启动 mysql 服务
    • 以管理员权限运行 cmd
    • 进入 D:/wnmp/mysql5.7/bin 目录下
    • 初始化,生成 data 文件。(执行以下命令任意一条,会发现在 D:/wnmp/mysql5.7 目录下生成了 data 文件夹)
    (以下命令为不设置 root 密码,建议使用)
    mysqld --initialize-insecure 
    
    (以下命令会随机生成 root 密码,生成的密码在 my.ini 配置文件 datadir
    项所在的目录中后缀名为 err 的文件中。比如在我的 my.ini 配置文件中,我的配置为
    datadir="D:\wnmp\mysql5.7\data" 因此,我就需要在 D:\wnmp\mysql5.7\data
    目录下寻找后缀名为 err 的文件,然后打开后缀名为 err 的文件,搜索 " A
    temporary password is generated for root@localhost:" 即可看到随机生成的密码)
    
    mysqld --initialize
    
    • 安装 mysql 服务
    mysqld -install
    
    • 启动 mysql 服务
    net start mysql    (对应的服务关闭命令为 net stop mysql)
    
    • 登录 mysql (会提示输入密码,如果没有设置就直接回车)
    mysql -u root -p
    
    • 设置 root 密码 (需要登录 mysql 后才可以执行以下命令。如下:将 mysql 的 root 账户密码设置为 123456)
    // 方法01、
    set password for root@localhost = password('123456');
    
    // 方法02、
    mysqladmin -u root -p password 123456
    
    • 安装 nginx

    1. 官网下载 nginx 压缩包,下载之后在 D:/wnmp 目录下解压。
    2. 在 D:/wnmp/nginx 目录下直接双击 nginx.exe 可直接启动服务器,同样也可以执行以下命令来启动服务
    // 启动服务
    start nginx
    
    // 停止 nginx
    nginx -s stop
    
    // 重新加载配置文件
    nginx -s reload
    
    1. 直接在浏览器中输入 localhost 若出现 welcome to nginx 则证明安装 nginx 成功!
    • 安装 php7.2

    1. 官网下载 php7.2nts (非线程安全) 压缩包,下载之后在 D:/wnmp 目录下解压。
    2. 将 php.ini-development 文件复制一份并且修改文件名为 php.ini
    3. 修改 php.ini 配置文件
    01、搜索关键字“date.timezone”,找到  ;date.timezone = 先去前面的分号再改为 date.timezone = Asia/Shanghai
    开启 extension=php_mysql.dll 、 extension=php_mysqli.dll 等一系列所需扩展
    
    02、修改扩展 dll 文件所在目录
    extension_dir="D:\wnmp\php-7.2.1-nts\ext"
    
    03、CGI 设置
    enable_dl = On
    cgi.force_redirect = 0
    cgi.fix_pathinfo=1
    fastcgi.impersonate = 1
    cgi.rfc2616_headers = 1
    
    
    • 配置 nginx 使得 nginx 能够解析 php

    1. 在 D:\wnmp\nginx\conf 目录下,打开 nginx.conf 配置文件
    2. 修改 nginx.conf 配置文件
    worker_processes  1;
    events {
        worker_connections  1024;
    }
    http {
        include       mime.types;
        default_type  application/octet-stream;
        sendfile        on;
        keepalive_timeout  65;
        gzip  on;
        server {
            listen       80;
            server_name  localhost;
            location / {
                root   D:\wnmp\www;
                index  index.html index.htm index.php;
            }
            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
                root   html;
            }
    
            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 / {
    
            root   html;
    
            index  index.html index.htm;
    
    }
    

    修改成了

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

    第二处:

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

    修改成了

    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. 启动 php 内置的 cgi 程序,在 9000 端口监听 nginx 发过来的请求(在 cmd 命令中执行)
    D:\wnmp\php7.2nts\php-cgi.exe -b 127.0.0.1:9000-c D:\wnmp\php7.2nts\php.ini
    
    1. 重启 nginx。
    2. 测试。在 D:\wnmp\www 目录下新建 index.php 文件,并且写一段 php 测试代码,然后用浏览器访问 localhost 看有无内容
    • Windows使用RunHiddenConsole一键启动nginx,php-cgi服务

    1. 首先百度网盘下载 RunHiddenConsole 软件,(网上很难得找,这里已经准备好了。)

    链接地址为:https://pan.baidu.com/s/1G4xfGBiIc2KekHTlvOMCzA
    提取码:prdk
    RunHiddenConsole.exe 的作用是在执行完命令行脚本后可以自动关闭脚本,而从脚本中开启的进程不被关闭。

    1. 新建 start.bat 写入以下内容 (注意以下路径地址需要换成你自己的实际软件路径地址)
    @echo off
    set php_home=C:\wnmp\php-7.2.17-nts-Win32-VC15-x64
    set nginx_home=C:\wnmp\nginx-1.15.10
     
    REM Windows 下无效
    REM set PHP_FCGI_CHILDREN=5
     
    REM 每个进程处理的最大请求数,或设置为 Windows 环境变量
    set PHP_FCGI_MAX_REQUESTS=1000
     
    echo Starting PHP FastCGI...
    C:\wnmp\RunHiddenConsole\RunHiddenConsole.exe %php_home%\php-cgi.exe -b 127.0.0.1:9000 -c %php_home%\php.ini
    
    echo Starting nginx...
    C:\wnmp\RunHiddenConsole\RunHiddenConsole.exe %nginx_home%\nginx.exe -p %nginx_home%
    
    
    1. 新建 stop.bat 写入以下内容
    @echo off
    echo Stopping nginx...
    taskkill /F /IM nginx.exe > nul
    echo Stopping PHP FastCGI...
    taskkill /F /IM php-cgi.exe > nul
    exit
    
    1. 另外,需要注意的是。不要把 mysql 的启动加入到以上脚本中,可能会导致 mysql 服务无法重启。至今我把 net start mysql 这条命令加入到 start.bat 脚本中,mysql 服务无法重启的原因至今没有找到。

    相关文章

      网友评论

          本文标题:Windows下搭建wnmp

          本文链接:https://www.haomeiwen.com/subject/apjuwqtx.html