Spring Boot项目部署为Windows服务并设置开机启动

目标:使用Spring Boot开发的Web项目,打包生成了jar包,部署在Windows服务器中,设置为开机启动

注意:windows服务器要安装java环境!!!

之前可以想到的一般方案:

1、Spring Boot生成的jar包,可以直接用java -jar运行,但是前提是需要登录用户,关掉cmd窗口程序就会停止,而且注销用户后会退出程序,所以不可用。

2、使用计划任务,写一个bat处理文件,里面写java -jar运行程序,然后把bat文件作为一个计划任务运行;结果可能是因为任务启动时,系统资源未准备好,所以没有成功。

最佳方案:WinSW

WinSW是一个可以将任何应用程序注册成服务的软件,程序以及源码都开源了,可以在GitHub下载:GitHub - winsw/winsw: A wrapper executable that can run any executable as a Windows service, in a permissive license.icon-default.png?t=M5H6https://github.com/winsw/winsw

1.下载WinSW

目前最新版本是3,与版本2使用方式不同,由于参考网上其他人的教程,选择了2的最新版本v2.11.0,下载地址为

GitHub - winsw/winsw at v2.11.0icon-default.png?t=M5H6https://github.com/winsw/winsw/tree/v2.11.0

将GitHub中下载的WinSW-x64.exe和sample-minimal.xml文件及项目的jar包放在同一个文件夹中

2.将WinSW执行程序跟xml改成同样的名字

推荐使用项目名+Service的命名方式,比如:WinSW-x64.exe改成mesService.exe,sample-minmal.xml改成mesService.xml。

3.编辑mesService.xml文件

内容如下

<!--
 这是一个最小的Windows Service Wrapper配置示例,其中仅包含强制选项。
 
 此配置文件应放在WinSW可执行文件附近,名称应相同。
 例如:对于myapp.exe,配置文件名应该是myapp.xml
 
 您可以在此处找到有关配置选项的更多信息: https://github.com/kohsuke/winsw/blob/master/doc/xmlConfigFile.md
 完整示例: https://github.com/kohsuke/winsw/blob/master/examples/sample-allOptions.xml
-->
<service>
  
  <!-- 服务id,它在Windows 系统中应该是唯一的-->
  <id>ygs-mes-service</id>
  <!-- 服务的显示名称 -->
  <name>ygs-mes-service</name>
  <!-- 服务说明 -->
  <description>某某某MES服务端(Java)</description>
  
  <!-- 应该启动的可执行文件的路径,配置了环境变量写java就行 -->
  <executable>java</executable>
  <!--Xms256m 代表堆内存初始化大小为256MB Xmx256m 代表堆内存最大值为256MB -jar后面的是项目jar包名-->
  <arguments>-Xms256m -Xmx256m -jar mes-server-1.0-SNAPSHOT.jar</arguments>
  <!--日志模式 none不打印项目的控制台输出(减轻硬盘压力),其他模式请参考官方文档 
   https://github.com/winsw/winsw/blob/v2.11.0/doc/loggingAndErrorReporting.md-->
  <logmode>none</logmode>

</service>
 

4.打开系统服务功能

运行——输入cmd,然后进入到mesService.exe所在文件夹,然后执行命令安装服务:mesService.exe install。

5.启动服务

以管理员身份在命令提示符界面输入命令 net start ygs-mes-service(服务名)启动服务。

或者也可以运行->输入services.msc,搜索找到自己命名的服务ygs-mes-service。在服务管理中启动服务

可以看到服务状态变为正在运行,说明启动成功

服务启动后,可以看到生成服务运行日志文件xx.wrapper.log(app-log是我jar项目配置的日志文件,不是winsw生成的)

打开可以看到类似如下内容

6.停止并删除服务

分为两步:1停止服务(需要管理员权限);2删除服务,都是在命令行界面实现。

删除后可以从windosw服务中心看到,服务确实被卸载了。

7.写批处理文件

目的:部署的时候实现一键部署

start.bat内容如下:

mesService.exe install

net start ygs-mes-service

stop.bat内容如下: 

net stop ygs-mes-service

mesService.exe uninstall

如果服务器上本身登录的就是管理员,双击bat运行即可(如果提示找不到命令,可能是管理员权限问题)

附录:WinSW服务常用命令

windows启动服务:net start xxxProjectService

windows停止服务: net stop xxxProjectService

卸载服务:xxService.exe uninstall

安装服务:xxService.exe install

更多命令请参考官方文档

参考链接:如何将Spring Boot项目部署为Windows服务,并设置开机启动 - 简书icon-default.png?t=M5H6https://www.jianshu.com/p/af90db4b54e3

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值