使用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配置信息
<!--
版权所有(c)2016 Oleg Nenashev和其他贡献者 特此免费向任何获得本文件副本的人授予许可。 软件和相关文档文件(以下简称“软件”),用于在没有 限制,包括但不限于使用、复制、修改、合并、发布, 分发、再许可和/或销售软件副本,并允许 为此提供的软件应符合以下条件: 上述版权声明和本许可声明应包含在所有副本中,或 软件的大部分。 本软件按“原样”提供,不作任何形式的明示或暗示保证,包括 但不限于对适销性、特定用途适用性和 不干涉。在任何情况下,作者或版权持有人均不承担任何索赔责任, 损害赔偿或其他责任,无论是在合同诉讼、侵权诉讼或其他诉讼中,由以下原因引起: 出于或与软件有关,或与软件的使用或其他交易有关。
-->
<!-- 此配置文件应放在WinSW可执行文件附近,名称应相同。 例如,对于myapp.exe,配置文件名应为myapp.xml。 获取有关配置选项的更多信息:https://github.com/kohsuke/winsw/blob/master/doc/
xmlconfigfile.md --> <configuration>
<!-- 强制性选项 --> <!-- 服务的ID。在Windows系统中应该是唯一的-->
<id>Nginx</id> <!-- 显示的服务名称 -->
<name>MyApp Service (powered by WinSW)</name> <!-- 服务描述 -->
<description>This service is a service cratead from a sample configuration</description> <!-- 启动的可执行文件的路径 -->
<executable>./nginx.exe</executable>
<!-- <executable>C:/Programs/nginx-1.17.2/nginx.exe</executable> --> <!--
安装
这些选项仅在安装过程中使用。
如果不重新安装服务,它们的修改将不会生效。
--> <!--
可选选项:服务帐户
定义运行服务的帐户。
-->
<!--
<serviceaccount>
<domain>YOURDOMAIN</domain>
<user>useraccount</user>
<password>Pa55w0rd</password>
<allowservicelogon>true</allowservicelogon>
</serviceaccount>
--> <!--
选项:失败
定义一系列操作,如果托管可执行文件失败,则应执行这些操作。
支持的操作:restart(重新启动)、reboot(重新启动)、none(无)
-->
<!--
<onfailure action="restart" delay="10 sec"/>
<onfailure action="restart" delay="20 sec"/>
<onfailure action="reboot" />
--> <!--
选项:重置文件
Windows服务重置故障状态的时间。
默认值:1天
-->
<!--
<resetfailure>1 hour</resetfailure>
--> <!--
部分:可执行管理
--> <!--
选项:参数
指传递给可执行文件的运行参数
-->
<!--
<arguments>-classpath c:\cygwin\home\kohsuke\ws\hello-world\out\production\hello-world test.Main</arguments>
--> <!--
选项:启动参数
在可执行文件启动时传递给它的启动参数
如果指定,则重写参数。
-->
<!--
<startarguments></startarguments>
--> <!--
选项:工作目录
如果指定,则设置可执行文件的默认工作目录
默认值:包装服务可执行文件的目录。
-->
<!--
<workingdirectory>C:\myApp\work</workingdirectory>
--> <!--
选项:优先级 所需的进程优先级。 可能值:Normal(正常)、Idle(空闲)、High(高)、RealTime(实时)、BelowNormal(低于正常)、AboveNormal(高于正常) 默认值:Normal(正常)
-->
<priority>Normal</priority> <!--
选项:服务停止超时时间 在强制终止可执行文件之前,等待服务正常关闭可执行文件的时间 默认值:15秒
-->
<stoptimeout>15 sec</stoptimeout> <!--
选项:StopArentProcessFirst
如果设置,winsw将在停止子进程之前终止父进程。
默认值:false(假)
-->
<stopparentprocessfirst>false</stopparentprocessfirst> <!--
选项:StopExecutable
执行服务关闭的可选可执行文件的路径。
只有在指定了“stopArguments”时才使用此可执行文件。
如果未使用此选项定义“stopArguments”,则“executable”将用作stop可执行文件。
-->
<!--
<stopexecutable>%BASE%\stop.exe</stopexecutable>
--> <!--
选项:停止参数
附加参数,应在终止期间传递给stop可执行文件。
此选项还允许通过停止可执行文件终止可执行文件。
-->
<!--
<stoparguments>-stop true</stoparguments>-->
-->
<!--
章节:服务管理
-->
<!--
选项:启动模式 定义服务的启动模式。 支持的模式:Automatic(自动)、Manual(手动)、Boot(引导)、System(系统)(后一种模式仅支持驱动程序服务) 默认模式:Automatic(自动)
-->
<startmode>Automatic</startmode> <!--
选项:DelayedAutoStart 如果在“StartMode”字段中指定了“Automatic”,则启用延迟的自动启动。 请参阅Winsw文档以获取有关支持的平台版本和限制的信息。
-->
<!--<delayedAutoStart/>--> <!--
选项: depend
指定必须在此服务启动之前启动的服务(可选)。
-->
<!--
<depend>Eventlog</depend>
<depend>W32Time</depend>
--> <!--
选项:waithint
挂起停止操作所需的估计时间。
在指定的时间段过去之前,服务应该下次调用setServiceStatus函数。
否则服务将被标记为无响应
默认值:15秒
-->
<waithint>15 sec</waithint> <!--
选项:睡眠时间
服务下次调用setServiceStatus函数之前的时间。
不要等待超过等待提示。好的间隔是等待提示的十分之一,但不小于1秒,也不大于10秒。
默认值:1秒
-->
<sleeptime>1 sec</sleeptime> <!--
选项:交互式
指示服务可以与桌面交互。
-->
<!--
<interactive/>
--> <!--
部分:日志记录
--> <!--
选项:日志路径
为服务包装程序生成的所有日志设置自定义日志目录
默认值:目录,其中包含执行器
-->
<!--
<logpath>%BASE%\logs</logpath>
--> <!--
选项:日志 为可执行文件生成的日志定义日志记录模式。 支持的模式: * append - 追加更新现有日志
* none - 不要将可执行日志保存到磁盘
* reset - 启动时擦除日志文件
* roll - 根据大小旋转日志
* roll-by-time - 根据时间旋转日志
* rotate - 根据大小旋转日志(8个日志,每个10MB)。此模式已弃用,请使用“滚动” 默认模式:append(追加) 每种模式都有不同的设置。 更多详细信息,请参阅https://github.com/kohsuke/winsw/blob/master/doc/logginganderreporting.md。 -->
<log mode="append">
<!--
<setting1/>
<setting2/>
-->
</log> <!--
部分:环境设置
-->
<!--
选项:env
设置或重写环境变量。
顶层可能配置了多个条目。
-->
<!--
<env name="MY_TOOL_HOME" value="C:\etc\tools\myTool" />
<env name="LM_LICENSE_FILE" value="host1;host2" />
--> <!--
选项:下载
启动前由包装器执行的下载列表
-->
<!--
<download from="http://www.google.com/" to="%BASE%\index.html" /> 下载并在出现错误时使服务启动失败:
<download from="http://www.nosuchhostexists.com/" to="%BASE%\dummy.html" failOnError="true"/> 由于连接未加密而导致基本身份验证不安全的示例:
<download from="http://example.com/some.dat" to="%BASE%\some.dat"
auth="basic" unsecureAuth=“true”
username="aUser" password=“aPassw0rd" /> 通过HTTPS安全基本身份验证:
<download from="https://example.com/some.dat" to="%BASE%\some.dat"
auth="basic" username="aUser" password="aPassw0rd" /> 当目标服务器和客户端是同一域的成员或服务器域和客户端域属于同一个信任林:
<download from="https://example.com/some.dat" to="%BASE%\some.dat" auth="sspi" />
--> <!--
章节:其他选项
--> <!--
选项:BeeponShutdown
指示服务在关闭时(如果操作系统支持)应发出嘟嘟声。
-->
<!--
<beeponshutdown/>
--> <!--
部分:扩展
此配置部分允许指定自定义扩展。
更多信息请访问:https://github.com/kohsuke/winsw/blob/master/doc/extensions/extensions.md
--> <!--
<extensions>
*注意扩展的ID值必须唯一
<extension enabled="true" id="extension1" className="winsw.Plugins.SharedDirectoryMapper.SharedDirectoryMapper">
<mapping>
<map enabled="false" label="N:" uncpath="\\UNC"/>
<map enabled="false" label="M:" uncpath="\\UNC2"/>
</mapping>
</extension>
...
</extensions>
--> </configuration>
⒊我编写的XML配置文件
<configuration> <id>Nginx</id> <name>Nginx</name> <description>Nginx-1.17.2 Proxy</description> <executable>C:/Users/fanqi/Downloads/nginx-1.17.2/nginx.exe</executable> <onfailure action="restart" delay="20 sec"/> <workingdirectory>C:/Users/fanqi/Downloads/nginx-1.17.2</workingdirectory> <stoparguments>-s stop</stoparguments> <logpath>C:/Users/fanqi/Downloads/nginx-1.17.2/log</logpath> <log mode="append"></log> </configuration>
⒋执行命令安装服务
./WinSW.NET4.exe install
⒌有问题删除服务
使用管理员命令运行CMD
sc delete Nginx
使用winsw包装服务将nginx包装为Windows服务的更多相关文章
- 将Nginx封装为Windows服务并自启动
需要借助"Windows Service Wrapper"小工具,项目地址: https://github.com/kohsuke/winsw 下载地址: http://repo ...
- nginx配置为windows服务中的坑
网上搜索“nginx 配置为windows服务”,很容易搜索到使用windows server warpper来配置,于是按照网上的方法我从github上的链接下载了1.17版本,前面都很顺利,很容易 ...
- Nginx添加到windows服务
在windows平台,把Nginx注册到服务,又可以启动.停止和重启的方法,网上并没找到好的办法. 既然如此,唯有自己写程序实现了 使用C#进行编写,有兴趣的可以下载源码自己改:源码下载(2016-1 ...
- Nginx 安装成 Windows 服务
Nginx 安装成Windows 服务方法,具体方法如下 1. 下载nginx windows版本 http://www.nginx.org 2. 下载微软的2个工具: instsrv.exe.srv ...
- 玩转Windows服务系列——无COM接口Windows服务启动失败原因及解决方案
将VS创建的Windows服务项目编译生成的程序,通过命令行 “服务.exe -Service”注册为Windows服务后,就可以通过服务管理器进行管理了. 问题 通过服务管理器进行启动的时候,发现服 ...
- 玩转Windows服务系列——命令行管理Windows服务
说到Windows服务的管理就不得不说通过命令行的方式管理Windows服务,因为无论是系统管理员,还是通过编程的方式调用cmd命令,命令行都是非常方便以及强大的工具. 接下来就看一下如何通过cmd命 ...
- 无法从命令行或调试器启动服务,必须首先安装Windows服务(使用installutil.exe),然后用ServerExplorer、Windows服务器管理工具或NET START命令启动它
无法从命令行或调试器启动服务,必须首先安装Windows服务(使用installutil.exe),然后用ServerExplorer.Windows服务器管理工具或NET START命令启动它 1. ...
- 玩转Windows服务系列——命令行管理Windows服务
原文:玩转Windows服务系列——命令行管理Windows服务 说到Windows服务的管理就不得不说通过命令行的方式管理Windows服务,因为无论是系统管理员,还是通过编程的方式调用cmd命令, ...
- [转]玩转Windows服务系列——命令行管理Windows服务
本文转自:http://www.cnblogs.com/hbccdf/p/managewindowsservicewithcmd.html 说到Windows服务的管理就不得不说通过命令行的方式管理W ...
- C#创建windows服务(一:初识windows服务)
一 . 服务简介 Microsoft Windows 服务(过去称为 NT 服务)允许用户创建可在其自身的 Windows 会话中长时间运行的可执行应用程序. 这些服务可在计算机启动时自动启动,可以暂 ...
随机推荐
- DP-------bzoj2699 更新
题目描述: 对于一个数列A[1..N],一种寻找最大值的方法是:依次枚举A[2]到A[N],如果A[i]比当前的A[1]值要大,那么就令A[1]=A[i],最后A[1]为所求最大值.假设所有数都在范围 ...
- 图论小专题B
2 树 2.1 树的定义 一个只有\(N-1\)条边,且任意两个点连通的图叫做树.通过这样定义的树往往是一棵无根树,而我们通常会任意选定一个根节点使其变成有根树.有根树可以定义"父亲和儿子& ...
- python利用pybind11调用PCL点云库
2019年7月9日14:31:13 完成了一个简单的小例子,python生成点云数据,利用pybind11传给PCL显示. ubuntu 16.04 + Anaconda3 python3.6 + ...
- BZOJ1070: [SCOI2007]修车(最小费用最大流,思维)
Description 同一时刻有N位车主带着他们的爱车来到了汽车维修中心.维修中心共有M位技术人员,不同的技术人员对不同 的车进行维修所用的时间是不同的.现在需要安排这M位技术人员所维修的车及顺序, ...
- HTML/HTML5 知识点思维导图
1 - 浏览器 | 浏览器页面构成 2 - 浏览器 | 浏览器内核相关知识点 3 - W3C | 对WEB标准以及W3C的理解与认识? 4 - 标签 | Doctype相关知识点 5 - 标签 | m ...
- SSH工具--FinalShell
FinalShell是一体化的的服务器,网络管理软件,不仅是ssh客户端,还是功能强大的开发,运维工具,充分满足开发,运维需求.特色功能:免费海外服务器远程桌面加速,ssh加速,双边tcp加速,内网穿 ...
- CodeForces 631D Messenger —— (kmp的应用)
这题是一个kmp的应用,思路是有,但是代码实现能力太弱,细节考虑不全,敲了很长时间才AC.. 题意:字符串用如下的方法表示,例如aaabbbbcc表示为3-a,4-b,2-c.那么问t串在s串中出现了 ...
- moveDown()
这里在判断边界时,判断的是 y == HEIGHT - 1. void moveDown(){ //定义变量存放人物下方的坐标 int dx, dy; //当下方没有元素时,直接return if(y ...
- Ubuntu 安装 JDK1.8
以下是Ubuntu 14.04安装JDK1.8.0_25与配置环境变量过程笔记. 1.源码包准备: 首先到官网下载jdk,http://www.oracle.com/technetwork/java/ ...
- Qt 插件学习(一)
插件是什么 注意:这儿暂时不考虑静态插件(潜意识中总觉得它根本就不算插件). 插件是一个动态库(共享库).动态库是一个独立的文件中的独立模块,可被多个程序访问. 先看动态库的两种用法 1. 程序链接时 ...