Nginx添加到windows服务
在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为无窗口模式运行