**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