springboot项目注册为windows系统服务并设置开机自启
关于springboot项目的部署与SSM(框架)部署war包到Tomcat下有所不同,比较明显的是springboot打包为jar包,运行则是执行通过java -jar xxx.jar,不再需要放置在Tomcat下面运行。
关于springboot项目部署相对于之前简化了一些步骤,只需要在服务器中安装好jdk环境,然后电脑执行java -jar xxx.jar就可以把项目跑起来,如下所示。
我们通过传统--->改进版--->改进版plus--->最终版演变方式来一步步探讨一下。
1、方式一(传统版)
(1)
假设这是window服务器,D盘中有一个名为demo-0.0.1-SNAPSHOT.jar项目
(2)
打开cmd,运行项目。
......
下图所示:
端口:9527
/:去项目名
(3)
实际测试项目(demo-0.0.1-SNAPSHOT.jar)中的一个接口
(4)
测试访问
2、改进版
以上方式运行项目还需要手动进入cmd输入命令,相对来说比较麻烦。
下面我们可以通过一个bat脚本来实现这个功能。
(1)
脚本内容,比较简单。
(2)
执行cmd脚本
(3)
测试访问
3、 改进版plus
关于以上的两种方式不能满足开机自启动需求。
假设服务器宕机,重启启动服务还需要人工操作。
所以下面我们利用windows启动菜单添加快捷方式来完成开机自启的需求。
(1)
win+R打开运行窗口,输入shell:startup
(2)
将步骤2的脚本start.cmd新建一个快捷方式,然后将快捷方式拷贝到启动项文件中。
(3)
重启电脑进行测试,自行操作。
4、 最终版
关于以上的3种方式都有一个通病:
一直显示着一个CMD窗口,而且这个窗口不能关,关了程序就停了。
继而引出了我们今天的主角:
可以将Windows上的任何一个程序注册为服务的工具--winsw
关于winsw官方发言:
WinSW is an executable binary, which can be used to wrap and manage a custom process as a Windows service.
WinSW是一个可执行的二进制文件,可用于将自定义进程包装和管理为Windows服务。
下载地址:https://github.com/kohsuke/winsw/releases
源码地址:https://github.com/kohsuke/winsw
(1)工具下载
以下两个版本:
WinSW.NET4.exe:
支持.netframework4.0的版本,如果没有4.0,请先安装.net4.0。
如下图:
这里以WinSW.NET2.exe为例。
下载到桌面WinSW.NET2.exe
(2)
将WinSW.NET2.exe改名成启动服务名字(便于理解、使用)。
如:将WinSW.NET2.exe改成springbootDemo.exe
(3)
新建一个WinSW的xml配置文件
注意:
XML文件要和程序名同名,所以这里名为springbootDemo.xml
(4)
将我们的springboot项目(demo-0.0.1-SNAPSHOT.jar)和springbootDemo.xml文件、springbootDemo.exe工具放置到同一个目录中。
(5)
编写springbootDemo.xml配置文件,如下所示:
<service>
<id>springbootDemo</id>
<name>springbootDemo</name>
<description>This is springbootDemo service.</description>
<env name=\"JAVA_HOME\" value=\"%JAVA_HOME%\"/>
<executable>java</executable>
<arguments>-jar \"D:\springboot-service\demo-0.0.1-SNAPSHOT.jar\"</arguments>
<startmode>Automatic</startmode>
<logpath>%BASE%\log</logpath>
<logmode>rotate</logmode>
</service>
补充:
实际编写中请除去以下注释!!!
补充:
下面是配置文件用到的标签的简单解释
<!-- 这里的根元素必须是service节点 -->
<service>
<!-- 指定在Windows系统内部使用的识别服务的ID,唯一 -->
<id>springbootDemo</id>
<!-- 服务的简短名称,唯一 -->
<name>springbootDemo</name>
<!-- 描述 -->
<description>This is springbootDemo service.</description>
<!-- java环境变量 -->
<env name=\"JAVA_HOME\" value=\"%JAVA_HOME%\"/>
<!--电脑 指定要启动的可执行文件。 -->
<executable>java</executable>
<!-- 指定要传递给可执行文件的参数,
即:java -jar \"D:\springboot-service\demo-0.0.1-SNAPSHOT.jar\" -->
<arguments>-jar \"D:\springboot-service\demo-0.0.1-SNAPSHOT.jar\"</arguments>
<!-- 开机启动 -->
<startmode>Automatic</startmode>
<!-- 日志配置 -->
<logpath>%BASE%\log</logpath>
<logmode>rotate</logmode>
</service>
(6)
打开cmd窗口,注册服务
cd springboot-service
springbootDemo.exe install
电脑安装成功
(7)
Win+R输入services.msc
(8)
可以看到我们刚刚的springboot项目已经被注册成一个window服务了
在这里我们可以对我们的springbootDemo项目进行启动、停止、手动开启、自动开启等等管理。
测试完成。
补充:
一些常用的命令
winsw install:安装服务
winsw uninstall:卸载服务
winsw start:开启服务
winsw stop:停止服务
winsw restart:重新启动服务
winsw status:检查服务的当前状态
最后感谢大家支持。电脑
电脑