wnmp(windows+nginx+mysql+php)環境搭建和配置

Cheng發表於2015-04-09

要求

    • 必備知識

      熟悉基本程式設計環境搭建。

    • 執行環境

      windows 7(64位);
      nginx-1.4.7;
      MySQL Server 5.5
      php-5.4.39-nts

    • 下載地址

      環境下載

Nginx是一款輕量級的Web 伺服器/反向代理伺服器及電子郵件(IMAP/POP3)代理伺服器,並在一個BSD-like 協議下發行。由俄羅斯的程式設計師Igor Sysoev所開發,供俄國大型的入口網站及搜尋引擎Rambler(俄文:Рамблер)使用。其特點是佔有記憶體少,併發能力強,事實上nginx的併發能力確實在同型別的網頁伺服器中表現較好,中國大陸使用nginx網站使用者有:新浪、網易、騰訊等。

上面這段介紹,摘自百度! 看了介紹就知道nginx很有逼格了shi不shi啊!那麼問題來了,這麼有逼格的配置,在windows下如何搭建呢? 好吧,就讓我給大家介紹一下,windows下如何搭建 nginx+mysql+php 環境吧。

官方下載地址

至於我使用的版本已經上傳到百度雲提供大家下載了哦,請戳以下連結:

Nginx

這麼有逼格的伺服器,我就不多做介紹,前面也提到了一些。我就直接安裝吧,把下載下來的nginx-1.4.7.zip檔案,解壓到指定的目錄就OK了,下面貼一下我的目錄結構哦

2015-04-08_204635

下面是nginx的一些基本操作指令,當然你也可以直接雙擊nginx.exe檔案來啟動伺服器(^_^)

start nginx    //啟動服務
 nginx -s stop    // 停止nginx
nginx -s reload    // 重新載入配置檔案
nginx -s quit    // 退出nginx

在瀏覽器地址中輸入localhost ,如出現下圖說明安裝成功了!

2015-04-08_205725

MySql

關於mysql的安裝,請自行去解決(^_^),我不想多說了!好吧,可以參考我之前寫一篇文章,裡面有詳細的介紹哦,你會明白的(^_^)

PHP

關於PHP的安裝,我也不想說了! 額,你其實也可以參考。。。你會懂的,哈哈!好吧,往下看吧!

php提供了兩種版本可以選擇,即執行緒安全和非執行緒安全

  • TS:Thread Safe 執行緒安全, 執行時會進行執行緒(Thread)安全檢查,以防止有新要求就啟動新執行緒的CGI執行方式而耗盡系統資源
  • NTS:Non Thread Safe 非執行緒安全, 在執行時不進行執行緒(Thread)安全檢查

PHP的兩種執行方式:ISAPI和FastCGI。

  • CGI(通用閘道器介面/Common Gateway Interface)一般是可執行程式,例如EXE檔案,和WEB伺服器各自佔據著不同的程式,而且一般一個CGI程式只能處理一個使用者請求。這樣,當用 戶請求數量非常多時,會大量佔用系統的資源,如記憶體、CPU時間等,造成效能低下。
  • ISAPI(Internet Server Application Program Interface)是微軟提供的一套面向WEB服務的API介面,它能實現CGI提供的全部功能,並在此基礎上進行了擴充套件,如提供了過濾器應用程式接 口。ISAPI應用大多數以DLL動態庫的形式使用,可以在被使用者請求後執行,,在處理完一個使用者請求後不會馬上消失,而是繼續駐留在記憶體中等待處理別的 使用者輸入。此外,ISAPI的DLL應用程式和WEB伺服器處於同一個程式中,效率要顯著高於CGI。所以如果是以ISAPI來執行PHP,建議選擇Thread Safe版本
  • FastCGI是可伸縮架構的CGI開放擴充套件,其主要行為是將CGI直譯器程式保持在記憶體中並因此獲得較高的效能。傳統的CGI直譯器的反覆載入是 CGI效能低下的主要原因,如果CGI直譯器保持在記憶體中並接受FastCGI程式管理器排程,則可以提供良好的效能、伸縮性等。nginx下php是以FastCGI的方式執行,所以我們下載Non Thread Safe版本.

我知道你已經懂了,shi不shi呀! 不過網上有些人下的TS有的人下的NTS的,選擇困難症有犯了,哈哈~~~!下非執行緒安全的吧,因為我就下的就是這個,待會自己去百度雲下的時候別選錯了哦~~

將壓縮檔案解壓到指定的資料夾(這裡你愛咋整就咋整,可以參考我上面的目錄結構)。配置php.ini檔案,php提供了兩個模板,php.ini-development和php.ini-production,前者適合開發程式使用(測試用),後者擁有較高的安全性設定,則適合上線當產品使用。這裡我們將php.ini-development檔案改為php.ini做配置檔案使用。

修改擴充套件dll檔案目錄:

//這裡根據自己的實際情況而定
extension_dir = "E:\2015\wnmp\php\ext"

 

加入擴充套件:

選擇需要執行哪些擴充套件,只需將extension前面的註釋去掉,例如:

extension=php_mysql.dll
extension=php_mysqli.dll

 

CGI 設定

enable_dl = On
cgi.force_redirect = 0
cgi.fix_pathinfo=1
fastcgi.impersonate = 1
cgi.rfc2616_headers = 1

 

配置Nginx

這裡所說的配置,主要是講如何讓Nginx對PHP提供支援!!開啟nginx目錄下conf資料夾裡的nginx.conf(這就是我的配置檔案了)

修改如下程式碼,位置如下

2015-04-08_225508

修改網站的根目錄,新增index.php的預設頁支援,修改後的程式碼如下。

location / {
            root   E:/2015/wnmp/nginx/html;
            index  index.html index.htm index.php;
}

讓nginx支援PHP的設定,程式碼位置如下

2015-04-08_230148

先將前面的“#”去掉,同樣將root  html;改為root  E:/2015/wnmp/nginx/html;。再把“/scripts”改為“$document_root”,這裡的“$document_root”就是指前面“root”所指的站點路徑,改完後的程式碼如下:

location ~ \.php$ {
            root           E:/2015/wnmp/nginx/html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
}

 

上述配置改為後,別玩了要重啟nginx哦,操作指令我已經到上面給出了啊!

測試

啟動php內建的cgi程式,在9000埠監聽nginx發過來的請求:

E:\2015\wnmp\php>php-cgi.exe -b 127.0.0.1:9000-c E:\wnmp\php\php.ini

PS:上一步操作中如果沒有重啟nginx的話,現在重啟一遍吧!!

在網站更目錄(上步操作中root所指向的路徑我這裡是 E:/2015/wnmp/nginx/html)下建立phpinfo.php檔案,程式碼如下

<?php phpinfo(); ?>

在瀏覽器位址列中輸入http://localhost/phpinfo.php,一次性點亮,是不是很Happy!!

2015-04-09_001013

RunHiddenConsole配置

首先把下載好的RunHiddenConsole.zip包解壓到nginx目錄內,RunHiddenConsole.exe的作用是在執行完命令列指令碼後可以自動關閉指令碼,而從指令碼中開啟的程式不被關閉。

建立start_nginx.bat檔案

@echo off
REM Windows 下無效
REM set PHP_FCGI_CHILDREN=5

REM 每個程式處理的最大請求數,或設定為 Windows 環境變數
set PHP_FCGI_MAX_REQUESTS=1000
 
echo Starting PHP FastCGI...
RunHiddenConsole E:/2015/wnmp/php/php-cgi.exe -b 127.0.0.1:9000 -c E:/2015/wnmp/php/php.ini
 
echo Starting nginx...
RunHiddenConsole E:/2015/wnmp/nginx/nginx.exe -p E:/2015/wnmp/nginx

建立stop_nginx.bat指令碼,對應的是用來關閉nginx服務

@echo off
echo Stopping nginx...  
taskkill /F /IM nginx.exe > nul
echo Stopping PHP FastCGI...
taskkill /F /IM php-cgi.exe > nul
exit

檔案目錄結構如下

end

好吧,整個就弄好了!!是不是比較複雜,沒關係! 請問你有到linux下交叉編譯安裝過伺服器環境嗎?(^_^)hahah~~~。關於linux下伺服器環境的“一攬子安裝計劃”,將到後續的文章中介紹!!點關注就對了(^_^)

如以上文章或連結對你有幫助的話,別忘了在文章結尾處輕輕點選一下 “還不錯”按鈕或到頁面右下角點選 “贊一個” 按鈕哦。你也可以點選頁面右邊“分享”懸浮按鈕哦,讓更多的人閱讀這篇文章。

作者:Li-Cheng
由於本人水平有限,文章在表述和程式碼方面如有不妥之處,歡迎批評指正。留下你的腳印,歡迎評論哦。你也可以關注我,一起學習哦!

(^_^)如果您覺得此文對您有幫助的話,打個賞喝個咖啡吧,麼麼噠(^_^)

相關文章