基于springboot通过gradle编译的jar包部署为Linux、Windows服务(开机自启动)

前言

很多情况下通过Java编写的后端程序需要开机自启动,网上找了这方面的教程,方法也是多种多样。
Linux系统可通过init.d、systemd至少两种方式实现将jar包注册为系统服务并配置为开机自启,相对而言,systemed比init.d晚出现,在性能、功能等方面都有改进,被推荐使用,本文将采用systemed。
Windows系统有使用启动脚本加入启动目录的,有使用修改注册表的,有使用procrun的,最终我选择了winsw的解决方案,这也是Spring官方推荐使用的方式。
多个项目的开发经验告诉我,使用开源框架遇到问题首先应当想到官方文档,而不是使用baidu、google搜索,你遇到的这些问题,很可能框架开发者早已经帮你想好了对策。

gradle配置文件demo.gradle

使用gradle编译打包的基于springboot的jar包通常使用如下命令启动:

java -jar demo.jar

如果在demo.gradle下加入如下配置:

注意:此配置适用于springboot 1.5.x版。

springBoot {
    executable = true
}

多数Linux系统分支支持这个配置,如:CentOS、Ubuntu,其他的OS X和FreeBSD需要用户验证embeddedLaunchScript。

如果在demo.gradle中加入上述配置,则可以使用如下命令:

./demo.jar

运行你的应用程序。

Linux下通过systemed部署为系统服务

将你的应用程序demo.jar放到/opt/demo下。
创建一个名为demo.service的脚本放入/etc/systemd/system下,脚本内容如下:

[Unit]
Description=Demo
After=syslog.target

[Service]
ExecStart=/opt/demo/demo.jar
SuccessExitStatus=143

[Install]
WantedBy=multi-user.target

要让该service能开机自启动,使用如下命令:

systemctl enable demo.service

除此之外,还能使用start,stop,restart,status等命令。

Windows下通过winsw部署为系统服务

将你的应用程序demo.jar放到C:\app\demo下。
下载winsw-{{version}}-bin.exe放到C:\app\demo下,并改名为demo.exe。
创建一个名为demo.xml的文件放到C:\app\demo下,文件内容如下:

<service>
    <id>demoid>
    <name>demoname>
    <description>This service runs demo continuous integration system.description>
    <executable>javaexecutable>
      <onfailure action="restart" delay="60 sec"/>
    <arguments>-Xrs -Xmx256m -jar "C:\app\demo\demo.jar" --httpPort=8080arguments>
    <logmode>rotatelogmode>
service>

将该应用程序安装为系统服务,在C:\app\demo下执行如下命令:

demo.exe install

要删除该系统服务,使用如下命令:

demo.exe uninstall

此外还有start,stop,restart,status等命令可用。

更多配置请参考:winsw github

你可能感兴趣的:(Java,Gradle)