Windows下搭建wnmp

運行環境爲 windows server 2008 64位系統。
安裝目錄爲 D:/wnmpphp

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

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)mysql

nginx 下載地址:http://nginx.org/download/nginx-1.15.11.zip
(本文選擇的是 主線版本 nginx/Windows-1.15.11 )nginx

  • 安裝 mysql 5.7

  1. 官網下載 mysql 5.7 壓縮包,下載以後在 D:/wnmp 目下解壓。
  2. 建立數據庫配置文件:my.ini

在 D:/wnmp/mysql5.7 目錄下建立 my.ini 文件,並寫入如下內容sql

[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)
// 方法0一、
set password for root@localhost = password('123456');

// 方法0二、
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 配置文件
0一、搜索關鍵字「date.timezone」,找到  ;date.timezone = 先去前面的分號再改成 date.timezone = Asia/Shanghai
開啓 extension=php_mysql.dll 、 extension=php_mysqli.dll 等一系列所需擴展

0二、修改擴展 dll 文件所在目錄
extension_dir="D:\wnmp\php-7.2.1-nts\ext"

0三、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;

}

修改爲了windows

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 服務沒法重啓的緣由至今沒有找到。
相關文章
相關標籤/搜索