Nginx 使用新版 winsw 注册 windows 系统服务无法启动及停止问题

此文章发布于 53 个月前,部分信息可能已经过时,请自行斟酌确认。

今天更换了新版的 winsw 注册 nginx 服务发现启无法启动了。

旧版 WinSW

原来旧版(1.0.0)winsw 注册 windows 版 nginx 服务时用以下配置是没有问题的。

<service>      
 <id>nginx</id>      
  <name>nginx</name>      
  <description>nginx</description>      
  <executable>D:\nginx\nginx.exe</executable>      
  <logpath>D:\nginx\</logpath>      
  <logmode>roll</logmode>      
  <depend></depend>      
  <startargument>-p D:\nginx</startargument>      
  <stopargument>-p D:\nginx -s stop</stopargument>      
</service>

新版WinSW

新版 WinSW(2.1.2) 用上面的配置注册服务会造成路径错误无法正常启动和停止 Nginx,报错如下:
注意报错内容中日志文件路径 D:/nginx/logs/error.log 前面多了个空格。

nginx: [alert] could not open error log file: CreateFile() " D:/nginx/logs/error.log" failed (123: The filename, directory name, or volume label syntax is incorrect)
2019/11/08 14:07:08 [emerg] 14092#8988: CreateFile() " D:/nginx/conf/nginx.conf" failed (123: The filename, directory name, or volume label syntax is incorrect)

20191110165920.png

20191108141452672.png

20191108141953999.png

新版服务安装配置

需要用以下配置方式将启动和停止参数分成多行。

<service>
 <id>nginx</id>
  <name>nginx</name>
  <description>nginx</description>
  <executable>D:\nginx\nginx.exe</executable>
  <logpath>%BASE%\serviceLogs</logpath>
  <logmode>roll</logmode>
  <depend></depend>
  <startargument>-p</startargument>
  <startargument>D:\nginx</startargument>
  <stopargument>-p</stopargument>
  <stopargument>D:\nginx</stopargument>
  <stopargument>-s</stopargument>
  <stopargument>stop</stopargument>
</service>

正常启动事件日志

//正常启动事件日志
Starting D:\nginx\nginx.exe  -p D:\nginx 

//正常停止事件日志
Child process [18256 - D:\nginx\nginx.exe  -p D:\nginx -s stop ] terminated with 0

参考文章:

https://github.com/kohsuke/winsw/issues/119

20191110165959.png

最后修改:2019 年 11 月 10 日 05 : 01 PM
如果觉得我的文章对你有用,请随意赞赏

发表评论