Windows上使用nginx作為web伺服器時,我們的php環境就需要藉助第三方的插件來啟動,在windows伺服器上nginx現在還沒有啟動php的功能,nginx不像iis那樣只要iis和php綁定成功,iis啟動時php也就會跟著啟動,nginx現在支持單獨在windows系統上獨立啟動,但是還不支持啟動php,我們今天的課題就是在Windows系統上獨立啟動php。
開始之前首先必須要確認:
①php已經正確的安裝,php.ini已經正確配置完成;②nginx已經正確安裝並且nginx.conf正確配置完畢。說明:nginx安裝路徑為D:\nginx,php安裝路徑為D:\php(根據您自己的路徑進入php的安裝目錄),我的php和nginx均安裝在D盤根目錄。
需要的插件有①RunHiddenConsole和②xxfpm這兩個,RunHiddenConsole用來啟動Windows系統下的php,即啟動php的fastcgi.xe程序;xxfpm則用來維持php進程不會自動退出,使php保持在後臺穩定運行。RunHiddenConsole下載地址:
xxfpm下載地址:
下載完畢後將這2個插件上傳到伺服器,解壓縮RunHiddenConsole得到RunHiddenConsole.exe文件,將RunHiddenConsole.exe拷貝到nginx安裝目錄D:\nginx文件夾裡面;在nginx的安裝目錄(D:\nginx)下新建名為xxfpm的文件夾,解壓縮xxfpm,將解壓得到xxfpm文件夾裡面的bin和src文件夾這2個文件夾拷貝到D:\nginx\xxfpm文件夾內,xxfpm文件夾內的東西如下圖:
編寫啟動php代碼
打開記事本,輸入以下代碼,將其以bat格式保存到nginx的安裝目錄D:\nginx文件夾內,名稱為start_php.bat,注意格式一定是.bat的。
@echo offREM Windows 下無效REM set PHP_FCGI_CHILDREN=2REM 每個進程處理的最大請求數,或設置為 Windows 環境變量set PHP_FCGI_MAX_REQUESTS=1000echo Starting PHP FastCGI……RunHiddenConsole D:/nginx/xxfpm/bin/xxfpm.exe "D:/php/php-cgi.exe -c D:/php/php.ini" -n 2 -i 127.0.0.1 -p 9000exit
上面代碼截圖如下,需要注意最後一行exit前面一行不是兩行代碼,代碼截圖顯示:
將上面代碼保後截圖:
到此啟動php的程序安裝就全部結束了,雙擊nginx安裝目錄下我們編寫的start_php.bat即可啟動php,打開任務管理器,可以看到有2個CGI/fastcgi進程。下圖所示的進程你使用右鍵結束的方式是關閉不了的,點其中一個結束進程,你會發現立即又自動除了一個,這樣就可以保證fastcgi在伺服器上穩定運行不會自動退出了。
fastcgi進程個數修改
這個在前面我們的啟動代碼裡面有REM set PHP_FCGI_CHILDREN=2,其中的數字2是啟動2個php進程的意思,和後面的-n 2 要保持數字一致。只需將這兩處的數字修改為你想要的即可,截圖顯示更明確:
D:/nginx/xxfpm/bin/xxfpm.exe 這是xxfpm的路徑。D:/php/php-cgi.exe -c D:/php/php.ini這是php的安裝路徑和php.ini的路徑,如果您的路徑不是這樣的記得修改為對應的路徑即可。那個數字9000是監聽php埠,不要做修改。這樣保證了php可以在後臺穩定運行了,有時候需要結束怎麼辦,我們繼續編寫一個結束運行的的代碼。
編寫退出nginx+php代碼
但是這樣關閉不了一直運行也不是絕對的好事,如果想要關閉怎麼辦,請打開記事本輸入以下代碼,將其以bat格式保存到nginx的安裝目錄D:\nginx文件夾內,命名為stop_php+nginx.bat文件,需要關閉php的時候雙擊這個文件即可退出php和nginx了。為了方便,結束php進程時同時把nginx也關閉掉,方便一鍵啟動,代碼如下。
echo Stopping nginx... taskkill /F /IM nginx.exe > nulecho Stopping PHP FastCGI...taskkill /F /IM php-cgi.exe > nultaskkill /F /IM xxfpm.exe > nulexit
將上面的代碼按照前面說的路徑保存後,雙擊此文件即可結束php和nginx進程。完整文件如下圖所示,我們將啟動和結束代碼和放在nginx文件夾內,主要是為了啟動和結束都方便。
結束代碼解釋:這個stop_php+nginx.bat文件裡面的taskkill /F /IM nginx.exe > nul這一行是退出nginx的意思,後面分別是退出fastcgi,關閉php-cgi.exe進程,關閉xxfpm.exe進程,直接複製過去就可以不用做修改,放在nginx安裝目錄下的原因是方便使用,啟動nginx只需要雙擊nginx.exe即可。
到此Windows系統上安裝php+nginx的環境部署和相關配置算是真正的完成了,本文相關軟體和配置文件沒有的話可以問我。使用nginx而不用iis的原因是iis不安全,太容易被掛馬。