首页 > 技术文章 > Nginx添加到windows服务

skey_chen 2015-07-13 17:28 原文

在windows平台,把Nginx注册到服务,又可以启动、停止和重启的方法,网上并没找到好的办法。

既然如此,唯有自己写程序实现了

使用C#进行编写,有兴趣的可以下载源码自己改:源码下载(2017-06-26)旧版下载(2017-06-23)

或直接下载编译好的程序,需要.net framework 2.0或.net framework 4.0的环境支持

通用版本程序下载(2017-06-26)Nginx专用版本程序下载(2017-06-23)

通用版本,使用自己定义的bat脚本,实现自定义windows服务,应该可用于绝大多数像nginx等这类不方便使用windows服务的程序

通用版本目录结构及说明:

  MyInstall.bat :安装服务的脚本,用记事本打开,修改"set my=MyService",让my的值为你想要注册的服务名,如“Hello”。

  MyService.bat :这个脚本是服务启动时执行的脚本,可自己实现自己的启动逻辑

  MyService.exe :注册为windows服务的服务程序,通过它来管理实际需要运行的服务程序。

  2.0和4.0目录 :存放的是MyService.exe对应于.net framework 2.0和.net framework 4.0的环境的exe

MyService.exe和MyService.bat文件名必须和MyInstall.bat中配置的服务名一致,如“Hello.exe”、“Hello.bat”

 

使用通用版本程序安装nginx服务:

  Nginx添加到windows服务时很简单,你可以什么都不改,只需要安装好对应的.net framework环境

  把三个文件复制到nginx.exe的同级目录,双击运行MyInstall.bat进行安装,安装后将会看到服务中增加了一个服务名为“MyService”的服务,即可用它启动和重启nginx服务了。

 

新增加了一个专门为nginx提供的专用版本的服务,该版本的好处就是不需要另外的脚本支持,即不需要额外的bat脚本配置文件支持的

  MyNginxServiceInstall.bat :安装服务的脚本,用记事本打开,修改"set my=MyNginxService",让my的值为你想要注册的服务名,如“Hello”。

  MyNginxService.exe :文件名即服务名,可修改为你需要注册的服务名,如上面配置为“Hello”,则修改为“Hello.exe”。

  复制MyNginxService.exe和MyNginxServiceInstall.bat至nginx.exe同级目录

  以管理员身份,运行MyNginxServiceInstall.bat进行服务安装。

  本exe依赖.net framework框架,具体版本可复制下载文件里2.0或4.0目录下的同名exe替换

 

更新:

2017-06-26

移除旧版本中的停止脚本方法,利用windows的父子进程信息,找出所有关联的子进程进行Kill,方便结束大多像java等通过脚本启动的,难关闭的程序。

修改启动脚本文件名,改为和exe同名。

更新源代码zip,作为解决方案,放了两个项目,一个为通用程序,一个为nginx专用程序。

2017-06-23

更新了下启动和结束脚本,程序的版本和文件属性

如果是通过MyStart.bat要再运行另一个bat的,则是:start /B C:\your.bat,其中/B为不启动新的窗口,且MyStart.bat为无窗口模式运行

 

推荐阅读