使用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 会话中长时间运行的可执行应用程序. 这些服务可在计算机启动时自动启动,可以暂 ...
随机推荐
- 【csp模拟赛5】限制 (restrict.cpp)--数学
自己看吧: 爆搜代码: //春水初涨-春林初盛-春风十里-不如你 //----hzwer // 这是啥子题,读不懂-- //题意有问题 -- #include<iostream> #inc ...
- javascript面向对象 用new创建一个基于原型的javascript对象
//创建一个类 其实就是个对象 var Student={ name:"robot", height:1.6, run:function(){ console.log(this.n ...
- Selenium报错:StaleElementReferenceException
一个学生在操作页面跳转时遇到一个Selenium报错, 如下图所示: StaleElementReferenceException: Message: stale element reference: ...
- Python爬虫 Urllib库的基本使用
1.构造Requset 其实上面的urlopen参数可以传入一个request请求,它其实就是一个Request类的实例,构造时需要传入Url,Data等等的内容.比如上面的两行代码,我们可以这么改写 ...
- Python之python简介
一.Python的优缺点 优点: 1.Python的定位是“优雅”.“明确”.“简单”,所以Python程序看上去总是简单易懂,初学者学Python,不但入门容易,而且将来深入下去,可以编写那些非常非 ...
- 8.7 JSON存储数据方式(JavaScript对象表示法)
8.7 JSON存储数据方式(JavaScript对象表示法) JSON JavaScript 对象表示法(JavaScript Object Notation) 是一种存储数据的方式. 一.创建JS ...
- python关闭socket端口立即释放
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM) server.setsockopt(socket.SOL_SOCKET, sock ...
- 8 HashMap
1.Map接口 public interface Map<K, V> 将键映射到值的对象,一个映射不能包含重复的键,每个键只能映射到一个值. 具体的实现:HashMap,TreeMap, ...
- HTTP 与 HTTPS协议
HTTP 协议 通讯协议:服务器和客户端进行数据交互的形式 HTTP 工作原理:HTTP 协议工作于客户端-服务端架构为上.浏览器作为 HTTP 客户端通过 URL 向 HTTP 服务端即 Web 服 ...
- Mybati example generatorConfig.xml 配置详解
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE generatorConfiguration ...