首先也是重要的一個(gè)步驟,在Windows環(huán)境下如何安裝Ngnix服務(wù)呢?
前往http://nginx.org/en/download.html 下載合適的版本, 當(dāng)然推薦的使用MainLine版本,下載好之后,解壓后雙擊Ngnix.exe 即可運(yùn)行了(默認(rèn)為80端口),若你已經(jīng)在Windows服務(wù)器上部署了IIS,一定要記得修改默認(rèn)端口,否則會(huì)有沖突。
如一切正常的話(huà),訪(fǎng)問(wèn)本地的地址+端口號(hào)你會(huì)看到這樣的界面:
此時(shí)并不能認(rèn)為萬(wàn)事大吉,由于Windows服務(wù)器環(huán)境下,僅僅以進(jìn)程的方式去Run一個(gè)服務(wù),首先會(huì)被認(rèn)為這種方式是不Stable的,其次,如果進(jìn)程被回收或崩潰掉,難以去找到相關(guān)的日志和錯(cuò)誤信息,為調(diào)試帶來(lái)麻煩,所以我們傾向于將進(jìn)程包裝為Windows服務(wù),這樣會(huì)擁有更好的健壯性。
但默認(rèn)的Ngnix并不支持Windows服務(wù)(原因在引言中已經(jīng)闡述,Ngnix for windows僅僅被認(rèn)為是一個(gè)測(cè)試版本),我們只有退而求其次也找一些其他的方式來(lái)安裝Ngnix為Windows服務(wù)。
常見(jiàn)的方法有instsrv/servany、FireDaemon等方式,但是這些方法都有各自的問(wèn)題,例如instsrv/servany會(huì)在服務(wù)重啟,停止/啟動(dòng)時(shí)產(chǎn)生一個(gè)新的Ngnix.exe進(jìn)程。FireDaemon在啟動(dòng)后,默認(rèn)會(huì)帶來(lái)一個(gè)次級(jí)進(jìn)程,這些原因和背景已經(jīng)在Defonds的博客中已經(jīng)有詳細(xì)的說(shuō)明了。
因此我們建議使用Windows Service Wrapper來(lái)安裝Ngnix服務(wù),這是GitHub上的一個(gè)開(kāi)源項(xiàng)目,他可以將任何exe,bat等文件安裝為windows服務(wù),你也可以在GitHub上下載他的源碼。
由于需要翻墻等原因,未必每個(gè)人都可以下載到二進(jìn)制版本,這里提供一個(gè)便捷下載。(1.9版本)
https://www.jb51.net/softs/645594.html
好下載完成后,干掉你原來(lái)在跑的ngnix進(jìn)程,將winsw.exe更改為任意名稱(chēng)并創(chuàng)建一個(gè)xml文件作為配置,當(dāng)然名稱(chēng)要與exe名稱(chēng)保持一致
配置代碼如下:
<service>
<id>nginx</id>
<name>nginx</name>
<description>nginx</description>
<executable>D:\Soft\Nginx\nginx-1.9.15\nginx-1.9.15\nginx.exe</executable>
<logpath>D:\Soft\Log\&;/logpath>
<logmode>roll</logmode>
<depend></depend>
<startargument>-p D:\Soft\Nginx\nginx-1.9.15\nginx-1.9.15</startargument>
<stopargument>-p D:\Soft\Nginx\nginx-1.9.15\nginx-1.9.15 -s stop</stopargument>
</service>
根據(jù)你的需要,修改executable,logpath,startargument,stopargument的配置。
接著cmd到你的winsw.exe目錄下,執(zhí)行winsw.exe install命令(卸載的話(huà),請(qǐng)使用winsw.exe uninstall).
一切順利的情況下,請(qǐng)你會(huì)看到你的Ngnix服務(wù)出現(xiàn)在服務(wù)列表中,此時(shí)啟動(dòng)服務(wù),可以看到上圖的歡迎信息了,這時(shí)候才可以認(rèn)為你的Ngnix安裝成功了,接下來(lái)可以去使用它了。