此次作了一個項目部署在環境爲win2012+nginx1.13.5+mysql5.6+php7的環境下,服務器是阿里雲的php
因爲以前沒有這種經驗,遇到了點坑(據參考文章裏說的這坑還有些年份了),最開始本身是用Php-cgi解決的,可是不知道是服務器問題仍是別的什麼狀況,運行cmd輸入php-cgi.exe -b 127.0.0.1:9000不能關閉cmd,不然cgi就一塊兒關掉了。這也忍了,可是本身訪問後臺上傳多幾張圖片,cgi本身就能掛掉,這種狀況固然不能忍,因此查閱各類資料,最後解決方案以下(所用工具包及參考連接附在文章末尾):mysql
本文要解決的問題是:
一、php-cgi.exe自動退出
二、如何將xxfpm設置成系統服務,隨系統重啓
nginx
第一步:windows下安裝Nginx,Mysql,PHPsql
本步驟過於簡單,就跳過了,若是連這個也不會,建議到全中國最牛X的技術資料平臺【百度】搜索「nginx+php」windows
mysql的安裝就是next、next、next的問題,也不說了。服務器
後面的步驟纔是本文的重點!php7
第二步:讓php-cgi.exe受xxfpm守護,而xxfpm隨系統啓用,達到後臺運行的效果工具
網上不少文章介紹用什麼應用隱藏工具,還有寫什麼bat手工運行的,我就不吐槽了。網站
(1)你須要下載xxfpm.exe,把它放在PHP目錄下;阿里雲
(2)再下載【命令調用工具】winserv.exe,也放在PHP目錄下,咱們將它註冊成系統服務,經過它去執行xxfpm.exe;
(3)編寫以下的批處理文件install.bat,目的是將winserv.exe註冊成系統服務:
@echo off if not ""%1"" == ""INSTALL"" goto remove "C:/nginx/php\winserv.exe" install "nginxPHP-CGI" -start auto "C:/nginx/php\php-cgi.exe" -b 127.0.0.1:9000 -c "C:/nginx/php\php.ini" net start nginxPHP-CGI > NUL goto end :remove net stop nginxPHP-CGI > NUL "C:/nginx/php\winserv.exe" uninstall "nginxPHP-CGI" :end exit
能夠直接copy上面代碼,更名install.bat,執行便可。固然上面的目錄路徑要修改爲你的。這步操做完,php-cgi.exe會隨winserv.exe的啓動而啓動,但還沒完,由於這時候的php-cgi.exe很脆弱,500個請求就會down掉。
注:我本身複製上述代碼後更名install.bat並執行,沒有成功,緣由我猜是在判斷條件,我最後的解決方案是將如下兩句代碼逐一複製入cmd中執行,後再執行下一步(仍是要注意修改爲你本身的路徑)。
後知後覺的我在解決後才注意到文末的工具包中附帶的install.bat跟上述代碼還有點差異,未解決的童鞋能夠嘗試下直接執行該文件看是否能解決(仍是要注意修改爲你本身的路徑,第三次提醒)。
"C:/nginx/php\winserv.exe" install "nginxPHP-CGI" -start auto "C:/nginx/php\php-cgi.exe" -b 127.0.0.1:9000 -c "C:/nginx/php\php.ini"
net start nginxPHP-CGI
(4)在【運行】裏輸入regedit.exe,找到[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\nginxPHP-CGI],即剛纔註冊的服務鍵值,把其中CommandLine的值修改成:
C:\nginx\php\xxfpm.exe "C:/nginx/php/php-cgi.exe -c C:/nginx/php/php.ini" -n 5 -i 127.0.0.1 -p 9000
(5)大功告成!無彈出窗,無界面。這時候我關掉我已開啓的cmd,網站依然能夠訪問,php仍然能夠使用
另外想要實現Nginx反向代理給IIS,實現80端口共享的童鞋,能夠參考文末連接,本文只截取了其三分之二的內容,由於我本身不打算配反向代理,也就沒繼續執行下去了。
參考:https://blog.csdn.net/aasx/article/details/53576095