使用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 会话中长时间运行的可执行应用程序. 这些服务可在计算机启动时自动启动,可以暂 ...
随机推荐
- 积性函数,线性筛入门 HDU - 2879
HDU - 2879HeHe 题意:He[N]为[0,N−1]范围内有多少个数满足式子x2≡x (mod N),求HeHe[N]=He[1]×……×He[N] 我是通过打表发现的he[x]=2k,k为 ...
- 蓝桥 log大侠
标题:Log大侠 atm参加了速算训练班,经过刻苦修炼,对以2为底的对数算得飞快,人称Log大侠. 一天,Log大侠的好友 drd 有一些整数序列需要变换,Log大侠正好施展法力... 变换的规则是: ...
- requests_html使用asyncio
import asyncio import functools from concurrent.futures.thread import ThreadPoolExecutor from reques ...
- MAC ADDRESS
可以使用手机Wifi或蓝牙的MAC地址作为设备标识,但是并不推荐这么做,原因有以下两点:硬件限制:并不是所有的设备都有Wifi和蓝牙硬件,硬件不存在自然也就得不到这一信息.获取的限制:如果Wifi没有 ...
- python监控wechat
import osimport reimport shutilimport timeimport itchatfrom itchat.content import * # 说明:可以撤回的有文本文字. ...
- 配置默认编码为utf8
修改/etc/my.cnf配置文件,在[mysqld]下添加编码配置,如下所示: [mysqld] character_set_server=utf8 init_connect='SET NAMES ...
- mysql的启动问题
用cmd启动MySQL (net start mysql )时出现(发生系统错误 5. 拒绝访问)这样的错误是因为cmd 权限太低了需要提高cmd权限才行(即使管理员权限) 如下图cmd所示: ...
- golang 故障模拟工具failpoint的使用
测试是功能上线之前的重要环节. 测试过程中,要尽量覆盖各种场景.故障情况或异常情况下的场景测试,也是必不可少的. 如何模拟故障呢? 在FreeBSD 中, failpoints经常用来模拟故障. 在g ...
- Docker的镜像制作与整套项目一键打包部署
Dockerfile常用指令介绍 指令 描述 FROM 构建的新镜像是基于哪个镜像.例如:FROM centos:6 MAINTAINER 镜像维护者姓名或邮箱地址.例如:MAINTAINER Mr. ...
- 重画GoogleClusterTrace数据
由于项目计划书写作需要,重画了Qi Zhang, Mohamed Faten Zhani, Raouf Boutaba, Joseph L. Hellerstein, Dynamic Heteroge ...