在windows平台,把Nginx注冊到服務,又可以啟動、停止和重啟的方法,網上並沒找到好的辦法。
既然如此,唯有自己寫程序實現了
使用C#進行編寫,有興趣的可以下載源碼自己改:源碼下載(2017-06-26)、舊版下載(2017-06-23)
或直接下載編譯好的程序,需要.net framework 2.0或.net framework 4.0的環境支持
通用版本程序下載(2017-06-26)、Nginx專用版本程序下載(2017-06-23)
通用版本,使用自己定義的bat腳本,實現自定義windows服務,應該可用於絕大多數像nginx等這類不方便使用windows服務的程序
通用版本目錄結構及說明:
MyInstall.bat :安裝服務的腳本,用記事本打開,修改"set my=MyService",讓my的值為你想要注冊的服務名,如“Hello”。
MyService.bat :這個腳本是服務啟動時執行的腳本,可自己實現自己的啟動邏輯
MyService.exe :注冊為windows服務的服務程序,通過它來管理實際需要運行的服務程序。
2.0和4.0目錄 :存放的是MyService.exe對應於.net framework 2.0和.net framework 4.0的環境的exe
MyService.exe和MyService.bat文件名必須和MyInstall.bat中配置的服務名一致,如“Hello.exe”、“Hello.bat”
使用通用版本程序安裝nginx服務:
Nginx添加到windows服務時很簡單,你可以什么都不改,只需要安裝好對應的.net framework環境
把三個文件復制到nginx.exe的同級目錄,雙擊運行MyInstall.bat進行安裝,安裝后將會看到服務中增加了一個服務名為“MyService”的服務,即可用它啟動和重啟nginx服務了。
新增加了一個專門為nginx提供的專用版本的服務,該版本的好處就是不需要另外的腳本支持,即不需要額外的bat腳本配置文件支持的
MyNginxServiceInstall.bat :安裝服務的腳本,用記事本打開,修改"set my=MyNginxService",讓my的值為你想要注冊的服務名,如“Hello”。
MyNginxService.exe :文件名即服務名,可修改為你需要注冊的服務名,如上面配置為“Hello”,則修改為“Hello.exe”。
復制MyNginxService.exe和MyNginxServiceInstall.bat至nginx.exe同級目錄
以管理員身份,運行MyNginxServiceInstall.bat進行服務安裝。
本exe依賴.net framework框架,具體版本可復制下載文件里2.0或4.0目錄下的同名exe替換
更新:
2017-06-26
移除舊版本中的停止腳本方法,利用windows的父子進程信息,找出所有關聯的子進程進行Kill,方便結束大多像java等通過腳本啟動的,難關閉的程序。
修改啟動腳本文件名,改為和exe同名。
更新源代碼zip,作為解決方案,放了兩個項目,一個為通用程序,一個為nginx專用程序。
2017-06-23
更新了下啟動和結束腳本,程序的版本和文件屬性
如果是通過MyStart.bat要再運行另一個bat的,則是:start /B C:\your.bat,其中/B為不啟動新的窗口,且MyStart.bat為無窗口模式運行