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(忽略模式)几乎不会生成日志文件


