windows下将nginx做成服务

注意:本例子拿Nginx作为演示,其余的windows程序也可以通过此方式做成服务

windows下安装Nginx后,只能通过双击进行来启动,通过任务管理器来停止进程,如果要通过命令行启动Nginx,可将其做成服务。

通过NSSM工具

准备工具:NSSM

下载地址:https://nssm.cc/

NSSM是一个服务封装程序,它可以将普通exe程序封装成服务,使之像windows服务一样运行。同类型的工具还有微软自己的srvany,不过nssm更加简单易用,并且功能强大。它的特点如下:

  • 支持普通exe程序(控制台程序或者带界面的Windows程序都可以)
  • 安装简单,修改方便
  • 可以重定向输出(并且支持Rotation)
  • 可以自动守护封装了的服务,程序挂掉了后可以自动重启
  • 可以自定义环境变量

部署:

1、首先将Nginx上传到Windows机器上解压,并将nssm程序放在相同位置,如图:

2、进入当前路径下的命令窗口,执行命令如下:

nssm  install nginx     #最后的nginx表示要做成的服务名

3、在弹出的界面中,点击Path后面的按钮选择Nginx可执行文件,其余内容会自动带出,如图:

4、点击下方的Install service,可以看到安装成功,如图:

5、执行如下命令启动Nginx,如图:

net start nginx            #启动Nginx
net stop  nginx            #停止Nginx

通过WinSW工具

1、下载WinSW程序和xml文件,下载地址:

https://github.com/winsw/winsw

2、将这两个文件放置到nginx.exe目录下,并重命名为nginx-service,如图:

3、编辑nginx-service.xml文件,修改内容如下:

4、最后执行命令安装即可,如图:

  • nginx-service.exe install #安装服务
  • nginx-service.exe uninstall #卸载服务

5、查看服务中是否已经生成nginx服务,启动访问即可,如图:

注:nginx-service.exe和nginx-service.xml最好要和nginx.exe放在一起,否则会引起一些错误

如果是管理jar的包,可以这样写:

<service>
  <!-- ID of the service. It should be unique across the Windows system-->
  <id>signjava</id>
  <!-- Display name of the service -->
  <name>sign java</name>
  <!-- Service description -->
  <description>This service is a service created from a minimal configuration</description>
   <!-- environment -->
  <env name="JAVA_HOME" value="%JAVA_HOME%"/>
  <!-- Path to the executable, which should be started -->
  <executable>java</executable>
  <!-- arguments -->
  <arguments>-jar "C:\iyin\java\sign-core-system-0.1.1-SNAPSHOT.jar" -Dspring.profiles.active=test</arguments>
  <!-- start mode -->
  <startmode>Automatic</startmode>
  <!-- Log Path -->
  <logpath>C:\iyin\java\logs</logpath>
   <!-- Log output mode -->
  <logmode>rotate</logmode>
</service>

参数解析

标签名作用
id服务ID,在windows系统中必须唯一的系统标识
name服务显示名称,不能使用中文,仅限英文、数字、横线等
description服务描述,描述服务的作用
env设置环境变量
executable启动可执行文件的路径
arguments传递给可执行文件的参数
startmode指定Windows服务的启动模式,它可以是下列值之一:开机、系统、自动或手动, 默认值是“Automatic”
logpath配置日志路径
logmode日志输出模式,默认为append

logmode:

  • append (追加模式)其特点是将日志文件全部输出在一个文件中,这个文件可能会越来越大
  • rotate(旋转模式,推荐)当日志文件大小达到10M,winsw会将日志重新输出到另外一份日志文件,默认最多保留8个
  • reset(重置模式)每次重启服务都会重置日志文件
  • none(忽略模式)几乎不会生成日志文件

标签