245.使用winsw部署spring boot项目_Windows

需求缘起

       有网易云课堂的小伙伴提问:“我想要在Windows  服务器上   当做服务来运行的”。在windows系统上如果使用jar运行的话,想必这个大家都会,但是如果要以服务的形式的话,那么应该有些小伙伴还不清楚吧,本篇文章为你解惑。

 

说明

在linux下部署Spring Boot项目是一件很简单的事,直接后台运行就行了,最多写个shell脚本开机自启就行了。在windows上运行jar有一个问题,运行的时候会弹出一个cmd窗口,并且不能关闭,关闭的话程序就停止了。那么在windows下以服务的方式进行运行呢,Spring官方网站推荐使用winsw来将Spring Boot项目做为务运行,参考地址:

https://docs.spring.io/spring-boot/docs/1.5.9.RELEASE/reference/htmlsingle/#deployment-windows

 

安装使用

(1)下载winswexe文件

       从github上进行下载,下载地址:

https://github.com/kohsuke/winsw/releases

我这里下载的是最新版本winsw-v2.2.0,这里有两个要下载的文件:其一winsw.exe文件; 其二是xml配置文件。我下载的是最新版本的WinSW.NET4.exe和sample-minimal.xml。

(1)sample-minimal.xml:配置window服务信息、可执行程序、参数。

(2)WinSW.NET4.exe:是安装/卸载windows服务的exe文件。

题外话:下载地址的WinSW.NET4和WinSW.NET2是什么鬼?

(1)NET是window下的netframework的简称。

(2).netframework2.0选择 WinSW.NET2.exe;.netframework4.0  选择WinSW.NET4.exe。

(3)怎么查看自己系统上的netframework的最高版本号呐?特别简单,直接打开【我的电脑】- 在地址栏输入【%systemroot%\Microsoft.Net\Framework】就可以看到多个版本,当中的最高版本就是我们目前正在使用的.net Framework的版本号。

 

245.使用winsw部署spring boot项目_Windows  _02

 

(2)修改配置

将winsw执行程序跟xml改成同样的名字,推荐使用项目名-service的命名方式,比如:WinSW.NET4.exe改成springboot-service.exe,sample-minmal.xml改成springboot-service.xml:

245.使用winsw部署spring boot项目_Windows  _03

 

 

改名完成后,编辑spring-bootService.xml文件,配置如下图:

<configuration>

  <!-- 安装成windows服务后的服务名 -->

  <id>spring-boot-hello</id>

  <!--显示的服务名称 -->

  <name>spring-boot-hello</name>

  <!-- 对服务的描述 -->

  <description>spring boot hello 例子</description>

  <!-- 可执行程序。这里写java的路径(如果配置了环境变量,直接写“java”即可) -->

  <executable>java</executable>

  <arguments>-jarspring-boot-hello.jar</arguments>

</configuration>

 

(3)安装服务

配置完成后,命令行进入winsw所在的文件夹,执行“spring-boot-hello-service.exeinstall”,其中spring-boot-hello-service是你修改后的名称。注意:命令提示符界面要用管理员权限进入,否则安装服务会失败,提示“WMI Operation failure: AccessDenied”

 

245.使用winsw部署spring boot项目_Windows  _04

安装成功如下:

 

245.使用winsw部署spring boot项目_Windows  _05

 

(4)服务启动和关闭

服务的启动:net startspring-boot-service

服务的关闭:net stopspring-boot-service

 

245.使用winsw部署spring boot项目_Windows  _06

 

 

(5)服务删除

删除服务分为两步:1停止服务;2删除服务,都是在命令行界面实现。

输入“net stop spring-boot-hello”停止运行服务。

输入“spring-boot-hello-service.exeuninstall”删除服务。

245.使用winsw部署spring boot项目_Windows  _07