一,背景
因为网络限制,目前开发的一个SpringBoot项目不能部署到Linux设备上,必须要部署到Windows上。在Linux设备上后台启动SpringBoot项目只需要一条命令:nohup sh run.sh &,run.sh脚本包含了启动SpringBoot项目的命令。在windows上后台启动SpringBoot项目貌似就比较尴尬,没有那么好用的命令来后台启动项目,打成war包放到Tomcat等web容器中就浪费了SpringBoot内嵌web容器的优势。在网络上搜肠刮肚一番,最终选择了winsw(https://github.com/kohsuke/winsw/releases),winsw是一个可以将任何应用程序注册成服务的软件。嗯,就是她了,哈哈哈。
二,步骤
a,去上面给出的链接里下载自己所需的文件,选择了最新版本的winsw。主要需要下载两个文件,一个是sample-minimal.xml和WinSW.NET4.exe(WinSW.NET2.exe也行)。
a.+,下载winsw后,在window上安装 .net framework4 ,否则后面会出问题。(很重要)
b,SpringBoot项目通过执行mvn clean package命令后得到可执行jar包:statement-0.0.1-SNAPSHOT.jar。
c,将sample-minimal.xml和WinSW.NET4.exe改为statement-0.0.1-SNAPSHOT.xml和statement-0.0.1-SNAPSHOT.exe,文件名保持一致,方便后续操作。(jar包、.exe文件、.xml文件均在同一目录下)
d,在statement-0.0.1-SNAPSHOT.xml文件中<configuration>标签内进行相关配置,如下。
<configuration>
<!-- ID of the service. It should be unique accross the Windows system-->
<!--服务ID:启动、关闭、删除服务时,都是通过ID来操作的-->
<id>statement-0.0.1-SNAPSHOT</id>
<!-- Display name of the service -->
<!--服务名称-->
<name>statement-0.0.1-SNAPSHOT (powered by WinSW)</name>
<!-- Service description -->
<!--服务描述-->
<description>This service is a service for Statement Project(http://www.eachtravel.com/)</description>
<!-- Path to the executable, which should be started -->
<!--当前电脑配置了java环境变量,直接写成“java”就行;你也可以写成类似这样:D:\develop\jdk1.8\jre\bin\java-->
<executable>java</executable>
<!--启动参数-->
<arguments>-jar statement-0.0.1-SNAPSHOT.jar</arguments>
<!--<arguments>-jar "C:\Users\Administrator\Desktop\winsw\statement-0.0.1-SNAPSHOT.jar"</arguments>-->
<!--日志配置-->
<logmode>rotate</logmode>
</configuration>
e,到此就完成了配置,可以安装并启动服务了
e1,进入到三个文件的目标目录(比如target),执行命令:statement-0.0.1-SNAPSHOT.exe install,安装服务。
e2,安装服务成功后,通过命令:net start statement-0.0.1-SNAPSHOT(服务ID)启动服务。
当然,也可以通过在开始那里输入:services.msc命令直接进入服务界面,通过服务ID找到服务,然后手动启动。
e3,通过命令:net stop statement-0.0.1-SNAPSHOT 停止服务,或者是直接去服务界面手动停止服务。
e4,停止服务后,可通过:sc delete ServiceName删除服务
e4,查找windows service的PID:SC queryex service_name
三,总结
虽然不难,但还是捣鼓了好久,哈哈,记录下来,留个纪念!