使用windows service wraper 2制作nginx的windows服务,解决无法停止的问题

为了方便自己的开发,想把nginx安装为windows服务。网上搜了一下,基本都是推荐使用windows service wraper来制作。由于也不是生产使用,所以没有过多验证方案是否最优(估计还不错吧),就自己做了一把。

  网上的例子都是基于windows service wraper 1.x的,我直接搜索github上看到了有了2.0版本,本人就爱用新的,就下载了它的exe文件。地址:https://github.com/kohsuke/winsw/.

看了一下xml文件的配置说明,感觉和网上说1.0的配置没啥区别。将下载的WinSW.NET4.exe改名为nginxsrv.exe,创建了nginxsrv.xml都放到nginx的目录,然后执行nginxsrv.exe install。

网上的xml如下:

 <service>
      <id>Nginx</id>
      <name>Nginx 1.6.3</name>
      <description>This service runs Nginx continuous integration system.</description>
	  <startmode>Automatic</startmode>
	  <env name="HOME" value="D:/nginx-1.6.3"/>
	  <executable>%HOME%/nginx.exe</executable>
      <startargument>-p %HOME%</startargument>
	  <stopargument>-p %HOME% -s stop</stopargument>
      <logmode>rotate</logmode>
	  
</service>

坑1:不知道是我用的版本高还是什么原因,启动是失败的。查看日志,发现说路径找不到,仔细看发现日志中路径被双引号包着,前面多了个空格,解决方式是startargument中的-p与后面的路径之间,不要留空格,停止参数也是如此。

坑2:解决了路径有空格的问题,安装成功后,启动没问题。停止却听不了,很长时间后失败了。找了半天原因,在windows日志中,发现命令的参数外面给加了双引号最后被执行的命令是:nginx.exe "-pD:/nginx-1.6.3 -s stop"  

这样不行,最后的办法,把所有命令参数都拆开,使用多个stopargument来设置,最后的xml文件是这样的:

 <service>
      <id>Nginx</id>
      <name>Nginx 1.6.3</name>
      <description>This service runs Nginx continuous integration system.</description>
	  <startmode>Automatic</startmode>
	  <env name="HOME" value="D:/nginx-1.6.3"/>
	  <executable>%HOME%/nginx.exe</executable>
      <startargument>-p%HOME%</startargument>
	  <stopargument>-s</stopargument>
	  <stopargument>stop</stopargument>
      <logmode>rotate</logmode>
	  <logpath>srvlogs</logpath>
	  
</service>

到此搞定。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值