zoukankan      html  css  js  c++  java
  • 使用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:cygwinhomekohsukewshello-worldoutproductionhello-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:myAppwork</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	oolsmyTool" />
    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
  • 相关阅读:
    冲刺第二周第五天
    冲刺第二周第四天
    冲刺第二周第三天
    冲刺第二周第二天
    冲刺第二周第一天
    模拟内存警告
    iOS之单例
    ARC
    纹理
    ios消息
  • 原文地址:https://www.cnblogs.com/fanqisoft/p/11250721.html
Copyright © 2011-2022 走看看