之前嘗試過(guò)將Nginx注冊(cè)成windows服務(wù),有用過(guò)微軟官方的instsrv/srvany, 以及firedaemon, 雖然可以做服務(wù)并啟動(dòng),但是當(dāng)你想要停止服務(wù)時(shí),就會(huì)出現(xiàn)問(wèn)題。 主要原因在于nginx有一個(gè)守護(hù)進(jìn)程,上述的方式只能關(guān)閉主進(jìn)程,多余的進(jìn)程沒(méi)法關(guān)閉。因此每當(dāng)用上述的方式時(shí),每次停止/重啟服務(wù),都會(huì)產(chǎn)生一個(gè)多余的nginx進(jìn)程。非常的不好!
后來(lái)發(fā)現(xiàn)一個(gè)很好的項(xiàng)目:winsw, 可以將可執(zhí)行文件注冊(cè)成windows服務(wù),項(xiàng)目的github地址是 https://github.com/kohsuke/winsw
它的介紹是:A wrApper executable that can be used to host any executable as an Windows service, in a liberal license
用它將nginx注冊(cè)成服務(wù)后,完美解決上述的問(wèn)題,使用起來(lái)也很簡(jiǎn)單,根據(jù).Net Framework的版本,下載對(duì)應(yīng)的支持版本,然后修改配置文件,再使用對(duì)應(yīng)的指令安裝即可。
配置文件的格式如下,
如果是要部署多個(gè)nginx服務(wù),保證id和name保持唯一
根據(jù)實(shí)際情況進(jìn)行修改,然后用管理員權(quán)限,在當(dāng)前目錄的控制器臺(tái)中執(zhí)行
WinSW.NET4.exe install 進(jìn)行服務(wù)安裝。
成功后,在操作系統(tǒng)的服務(wù)列表中,就可以看到對(duì)應(yīng)的服務(wù)了
重啟服務(wù)和關(guān)閉服務(wù),整體表現(xiàn)符合預(yù)期,而且系統(tǒng)里也沒(méi)有多余的進(jìn)程.