目标:使用Spring Boot开发的Web项目,打包生成了jar包,部署在Windows服务器中,设置为开机启动
注意:windows服务器要安装java环境!!!
1、Spring Boot生成的jar包,可以直接用java -jar运行,但是前提是需要登录用户,关掉cmd窗口程序就会停止,而且注销用户后会退出程序,所以不可用。
2、使用计划任务,写一个bat处理文件,里面写java -jar运行程序,然后把bat文件作为一个计划任务运行;结果可能是因为任务启动时,系统资源未准备好,所以没有成功。
WinSW是一个可以将任何应用程序注册成服务的软件,程序以及源码都开源了,可以在GitHub下载:GitHub - winsw/winsw: A wrapper executable that can run any executable as a Windows service, in a permissive license.https://github.com/winsw/winsw
目前最新版本是3,与版本2使用方式不同,由于参考网上其他人的教程,选择了2的最新版本v2.11.0,下载地址为
GitHub - winsw/winsw at v2.11.0https://github.com/winsw/winsw/tree/v2.11.0
将GitHub中下载的WinSW-x64.exe和sample-minimal.xml文件及项目的jar包放在同一个文件夹中
推荐使用项目名+Service的命名方式,比如:WinSW-x64.exe改成mesService.exe,sample-minmal.xml改成mesService.xml。
内容如下
ygs-mes-service
ygs-mes-service
某某某MES服务端(Java)
java
-Xms256m -Xmx256m -jar mes-server-1.0-SNAPSHOT.jar
none
运行——输入cmd,然后进入到mesService.exe所在文件夹,然后执行命令安装服务:mesService.exe install。
以管理员身份在命令提示符界面输入命令 net start ygs-mes-service(服务名)启动服务。
或者也可以运行->输入services.msc,搜索找到自己命名的服务ygs-mes-service。在服务管理中启动服务
可以看到服务状态变为正在运行,说明启动成功
服务启动后,可以看到生成服务运行日志文件xx.wrapper.log(app-log是我jar项目配置的日志文件,不是winsw生成的)
打开可以看到类似如下内容
分为两步:1停止服务(需要管理员权限);2删除服务,都是在命令行界面实现。
删除后可以从windosw服务中心看到,服务确实被卸载了。
目的:部署的时候实现一键部署
start.bat内容如下:
mesService.exe install
net start ygs-mes-service
stop.bat内容如下:
net stop ygs-mes-service
mesService.exe uninstall
如果服务器上本身登录的就是管理员,双击bat运行即可(如果提示找不到命令,可能是管理员权限问题)
windows启动服务:net start xxxProjectService
windows停止服务: net stop xxxProjectService
卸载服务:xxService.exe uninstall
安装服务:xxService.exe install
更多命令请参考官方文档
参考链接:如何将Spring Boot项目部署为Windows服务,并设置开机启动 - 简书https://www.jianshu.com/p/af90db4b54e3