使用winsw包裝服務將nginx包裝為Windows服務


**Nginx本身在Windows上並不支持以服務的形式運行,官方文件中有提到。http://nginx.org/en/docs/windows.html,所以在Windows下使用winsw將Nginx包裝為服務運行。

⒈下載

  github地址:https://github.com/kohsuke/winsw

  github下載地址:https://github.com/kohsuke/winsw/releases

⒉完整的XML配置信息

  1 <!-- 
  2     版權所有(c)2016 Oleg Nenashev和其他貢獻者
  3 
  4     特此免費向任何獲得本文件副本的人授予許可。
  5 
  6     軟件和相關文檔文件(以下簡稱“軟件”),用於在沒有
  7 
  8     限制,包括但不限於使用、復制、修改、合並、發布,
  9 
 10     分發、再許可和/或銷售軟件副本,並允許
 11 
 12     為此提供的軟件應符合以下條件:
 13 
 14     上述版權聲明和本許可聲明應包含在所有副本中,或
 15 
 16     軟件的大部分。
 17 
 18     本軟件按“原樣”提供,不作任何形式的明示或暗示保證,包括
 19 
 20     但不限於對適銷性、特定用途適用性和
 21 
 22     不干涉。在任何情況下,作者或版權持有人均不承擔任何索賠責任,
 23 
 24     損害賠償或其他責任,無論是在合同訴訟、侵權訴訟或其他訴訟中,由以下原因引起:
 25 
 26     出於或與軟件有關,或與軟件的使用或其他交易有關。 
 27 -->
 28 <!-- 
 29 
 30     此配置文件應放在WinSW可執行文件附近,名稱應相同。
 31 
 32     例如,對於myapp.exe,配置文件名應為myapp.xml。
 33 
 34     獲取有關配置選項的更多信息:https://github.com/kohsuke/winsw/blob/master/doc/
 35     xmlconfigfile.md 
 36     
 37     -->
 38 
 39 <configuration>
 40   <!-- 強制性選項 -->
 41 
 42   <!-- 服務的ID。在Windows系統中應該是唯一的-->
 43   <id>Nginx</id>
 44 
 45   <!-- 顯示的服務名稱 -->
 46   <name>MyApp Service (powered by WinSW)</name>
 47 
 48   <!-- 服務描述 -->
 49   <description>This service is a service cratead from a sample configuration</description>
 50   
 51   <!-- 啟動的可執行文件的路徑 -->
 52   <executable>./nginx.exe</executable>
 53   <!-- <executable>C:/Programs/nginx-1.17.2/nginx.exe</executable> -->
 54 
 55 <!--
 56     安裝
 57     這些選項僅在安裝過程中使用。
 58     如果不重新安裝服務,它們的修改將不會生效。
 59 -->
 60 
 61   <!--
 62     可選選項:服務帳戶
 63     定義運行服務的帳戶。
 64   -->
 65   <!--
 66   <serviceaccount>
 67     <domain>YOURDOMAIN</domain>
 68     <user>useraccount</user>
 69     <password>Pa55w0rd</password>
 70     <allowservicelogon>true</allowservicelogon>
 71   </serviceaccount>
 72   -->
 73   
 74   <!--
 75     選項:失敗
 76     定義一系列操作,如果托管可執行文件失敗,則應執行這些操作。
 77     支持的操作:restart(重新啟動)、reboot(重新啟動)、none(無)
 78   -->
 79   <!--
 80   <onfailure action="restart" delay="10 sec"/>
 81   <onfailure action="restart" delay="20 sec"/>
 82   <onfailure action="reboot" />
 83   -->
 84   
 85   <!--
 86     選項:重置文件
 87     Windows服務重置故障狀態的時間。
 88     默認值:1天
 89   -->
 90   <!--
 91   <resetfailure>1 hour</resetfailure>
 92   -->
 93 
 94 <!--
 95 部分:可執行管理
 96 -->
 97 
 98   <!-- 
 99   選項:參數
100   指傳遞給可執行文件的運行參數
101   -->
102   <!--
103   <arguments>-classpath c:\cygwin\home\kohsuke\ws\hello-world\out\production\hello-world test.Main</arguments>
104   -->
105 
106   <!-- 
107   選項:啟動參數
108   在可執行文件啟動時傳遞給它的啟動參數
109   如果指定,則重寫參數。
110   -->
111   <!--
112   <startarguments></startarguments>
113   -->
114   
115   <!--
116   選項:工作目錄
117   如果指定,則設置可執行文件的默認工作目錄
118   默認值:包裝服務可執行文件的目錄。
119   -->
120   <!--
121   <workingdirectory>C:\myApp\work</workingdirectory>
122 -->
123   
124   <!--
125     選項:優先級
126 
127     所需的進程優先級。
128 
129     可能值:Normal(正常)、Idle(空閑)、High(高)、RealTime(實時)、BelowNormal(低於正常)、AboveNormal(高於正常)
130 
131     默認值:Normal(正常)
132   -->
133   <priority>Normal</priority>
134   
135   <!-- 
136     選項:服務停止超時時間
137 
138     在強制終止可執行文件之前,等待服務正常關閉可執行文件的時間
139 
140     默認值:15秒
141   -->
142   <stoptimeout>15 sec</stoptimeout>
143     
144   <!--
145     選項:StopArentProcessFirst
146     如果設置,winsw將在停止子進程之前終止父進程。
147     默認值:false(假)
148   -->
149   <stopparentprocessfirst>false</stopparentprocessfirst>
150   
151   
152   <!-- 
153     選項:StopExecutable
154     執行服務關閉的可選可執行文件的路徑。
155     只有在指定了“stopArguments”時才使用此可執行文件。
156     如果未使用此選項定義“stopArguments”,則“executable”將用作stop可執行文件。
157   -->
158   <!--
159   <stopexecutable>%BASE%\stop.exe</stopexecutable>
160   -->
161 
162   <!-- 
163     選項:停止參數
164     附加參數,應在終止期間傳遞給stop可執行文件。
165     此選項還允許通過停止可執行文件終止可執行文件。
166   -->
167   <!--
168   <stoparguments>-stop true</stoparguments>-->
169   -->
170 <!-- 
171 章節:服務管理
172 -->
173     <!--
174       選項:啟動模式
175 
176       定義服務的啟動模式。
177 
178       支持的模式:Automatic(自動)、Manual(手動)、Boot(引導)、System(系統)(后一種模式僅支持驅動程序服務)
179 
180       默認模式:Automatic(自動)
181     -->
182     <startmode>Automatic</startmode>
183     
184     <!--
185       選項:DelayedAutoStart
186 
187       如果在“StartMode”字段中指定了“Automatic”,則啟用延遲的自動啟動。
188 
189       請參閱Winsw文檔以獲取有關支持的平台版本和限制的信息。
190     -->
191     <!--<delayedAutoStart/>-->
192     
193     <!-- 
194       選項: depend
195       指定必須在此服務啟動之前啟動的服務(可選)。
196     -->
197     <!--
198     <depend>Eventlog</depend>
199     <depend>W32Time</depend>
200     -->
201     
202     <!--
203       選項:waithint
204       掛起停止操作所需的估計時間。
205       在指定的時間段過去之前,服務應該下次調用setServiceStatus函數。
206       否則服務將被標記為無響應
207       默認值:15秒
208     -->
209     <waithint>15 sec</waithint>
210     
211     <!--
212       選項:睡眠時間
213       服務下次調用setServiceStatus函數之前的時間。
214       不要等待超過等待提示。好的間隔是等待提示的十分之一,但不小於1秒,也不大於10秒。
215       默認值:1秒
216     -->
217     <sleeptime>1 sec</sleeptime>
218     
219     <!--
220       選項:交互式
221       指示服務可以與桌面交互。
222     -->
223     <!--
224     <interactive/>
225     -->
226     
227 <!-- 
228 部分:日志記錄
229 -->
230 
231   <!--
232       選項:日志路徑
233       為服務包裝程序生成的所有日志設置自定義日志目錄
234       默認值:目錄,其中包含執行器
235   -->
236   <!--
237     <logpath>%BASE%\logs</logpath>
238   -->
239   
240   <!--
241     選項:日志
242 
243     為可執行文件生成的日志定義日志記錄模式。
244 
245     支持的模式:
246 
247       * append - 追加更新現有日志
248       * none - 不要將可執行日志保存到磁盤
249       * reset - 啟動時擦除日志文件
250       * roll - 根據大小旋轉日志
251       * roll-by-time - 根據時間旋轉日志
252       * rotate - 根據大小旋轉日志(8個日志,每個10MB)。此模式已棄用,請使用“滾動”
253     
254     默認模式:append(追加)
255 
256     每種模式都有不同的設置。
257 
258     更多詳細信息,請參閱https://github.com/kohsuke/winsw/blob/master/doc/logginganderreporting.md。
259 
260   -->
261   <log mode="append">
262     <!--
263     <setting1/>
264     <setting2/>
265   -->
266   </log>
267   
268 <!--
269 部分:環境設置
270 -->
271   <!--
272       選項:env
273       設置或重寫環境變量。
274       頂層可能配置了多個條目。
275   -->
276   <!--
277   <env name="MY_TOOL_HOME" value="C:\etc\tools\myTool" />
278   <env name="LM_LICENSE_FILE" value="host1;host2" />
279   -->
280 
281 
282   <!--
283       選項:下載
284       啟動前由包裝器執行的下載列表
285   -->
286   <!--
287   <download from="http://www.google.com/" to="%BASE%\index.html" />
288   
289   下載並在出現錯誤時使服務啟動失敗:
290   <download from="http://www.nosuchhostexists.com/" to="%BASE%\dummy.html" failOnError="true"/>
291 
292   由於連接未加密而導致基本身份驗證不安全的示例:
293   <download from="http://example.com/some.dat" to="%BASE%\some.dat"
294             auth="basic" unsecureAuth=“true”
295             username="aUser" password=“aPassw0rd" />
296 
297   通過HTTPS安全基本身份驗證:
298   <download from="https://example.com/some.dat" to="%BASE%\some.dat"
299             auth="basic" username="aUser" password="aPassw0rd" />
300 
301   當目標服務器和客戶端是同一域的成員或服務器域和客戶端域屬於同一個信任林:
302   <download from="https://example.com/some.dat" to="%BASE%\some.dat" auth="sspi" />
303   -->
304 
305 <!-- 
306 章節:其他選項
307 -->
308   
309   <!--
310     選項:BeeponShutdown
311     指示服務在關閉時(如果操作系統支持)應發出嘟嘟聲。
312   -->
313   <!--
314   <beeponshutdown/> 
315   -->
316   
317 <!--
318     部分:擴展
319     此配置部分允許指定自定義擴展。
320     更多信息請訪問:https://github.com/kohsuke/winsw/blob/master/doc/extensions/extensions.md
321 -->
322 
323 <!--
324 <extensions>
325   *注意擴展的ID值必須唯一
326   <extension enabled="true" id="extension1" className="winsw.Plugins.SharedDirectoryMapper.SharedDirectoryMapper">
327     <mapping>
328       <map enabled="false" label="N:" uncpath="\\UNC"/>
329       <map enabled="false" label="M:" uncpath="\\UNC2"/>
330     </mapping>
331   </extension>
332   ...
333 </extensions>
334 -->
335 
336 </configuration>

 

⒊我編寫的XML配置文件

 

 1 <configuration>
 2 
 3   <id>Nginx</id>
 4 
 5   <name>Nginx</name>
 6 
 7   <description>Nginx-1.17.2 Proxy</description>
 8 
 9   <executable>C:/Users/fanqi/Downloads/nginx-1.17.2/nginx.exe</executable>
10   
11   <onfailure action="restart" delay="20 sec"/>
12 
13   <workingdirectory>C:/Users/fanqi/Downloads/nginx-1.17.2</workingdirectory>
14 
15   <stoparguments>-s stop</stoparguments>
16  
17   <logpath>C:/Users/fanqi/Downloads/nginx-1.17.2/log</logpath>
18 
19   <log mode="append"></log>
20 
21 </configuration>

 

⒋執行命令安裝服務

./WinSW.NET4.exe install

⒌有問題刪除服務

使用管理員命令運行CMD

sc delete Nginx

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM