部署Springboot应用作为系统服务启动(Windows和Linux)___Hello_World__的博客-程序员秘密

技术标签: Ubuntu  Java  系统服务  Windows  Springboot  

Springboot应用配置(Linux系统使用,windows可以不配置):

需要在build.gradle中添加如下配置并打成jar包:

springBoot {

executable = true

}


一、UBUNTU 16.04 LTS

1、可执行应用路径:
/var/local/javaapproot/yfzx/current/yfzxservice.jar
2、向/etc/init.d/下创建服务链接

sudo ln -s /var/local/javaapproot/yfzx/current/yfzxservice.jar  /etc/init.d/yfzxservice

3、激活服务并开机自启(NN为自启顺序编号,例如90,也可以不写)

sudo update-rc.d yfzxservice defaults NN

在Ubuntu中是没有chkconfig命令的,可以用update-rc.d 来代替。
--------说明---------
# update-rc.d sshd defaults # Activate sshd with the default runlevels
# update-rc.d sshd start 20 2 3 4 5 . stop 20 0 1 6 . # With explicit arguments
# update-rc.d -f sshd remove # Disable sshd for all runlevels 删除服务
# shutdown -h now (or # poweroff) # Shutdown and halt the system

 

二、Windows 服务

Spring Boot应用程序可以作为Windows服务使用启动 winsw

 

下载WinSW

下载WinSW 2.x,  GitHub :https://github.com/kohsuke/winsw

使用方式:

WinSW是一个可执行的二进制文件,可用于将自定义进程打包并管理为Windows服务。一旦你下载安装包,你可以重新命名winsw.exe为任何名称,例如myService.exe

WinSW 依赖配置文件启动: Main XML Configuration file and EXE Config file.

更改 winsw.exe 名称为将要注册的应用服务名称, 同时将同一目录层级的xml配置文件名称保持与winsw.exe新名称一致。

在执行winsw.exe命令或重命名的winsw.exe时,可以追加下列命令:

  • install 将服务安装到Windows服务控制器。该命令需要安装指南中描述的一些初步步骤。
  • uninstall 卸载服务。上面的操作相反。
  • start 开始服务。该服务必须已经安装。
  • stop  停止服务。
  • restart 重新启动服务。如果服务当前没有运行,则该命令的作用就像start
  • status  检查服务的当前状态。
    • 这个命令打印一行到控制台。
      • NonExistent 表示该服务目前尚未安装
      • Started 以表明服务正在运行
      • Stopped 以表明该服务已安装,但目前尚未运行。

 

注册服务案例:

1、下载winsw后,安装 .net framework4

2、将winsw.exe更名为YfzxService.exe(需要注册的应用服务名称),

3、将winsw.exe配套的xml文件的名称改为YfzxService.xml。xml文件需要与YfzxService.exe在同一层级目录

配置文件内容格式(相对路径):

<configuration>
  <!-- 系统服务ID,不能与其他系统服务名称重复-->
  <id>yfzxservice</id>
  <!-- 系统服务显示名称 -->
  <name>YfzxService (powered by WinSW)</name>
  <!-- 服务描述 -->
  <description>Yfzx Service</description>
  <!-- java环境变量 -->
  <env name="JAVA_HOME" value="%JAVA_HOME%"/>
  <!-- 需要执行的应用 命令 -->
  <executable>java</executable>  
  <!-- 命令参数,分行可以用多行'argument'标记 -->
  <arguments>-jar %BASE%\current\yfzxservice.jar</arguments>
</configuration>

3、将winsw及配置文件放在应用目录

实例中jar包存放位置:D:\javaroot\yfzx\current\yfzxservice.jar

winsw.exe存放位置:D:\javaroot\yfzx\YfzxService.exe (winsw已变更名称为:YfzxService.exe)

winsw.exe配置文件存放文件位置:D:\javaroot\yfzx\YfzxService.xml

结构如下:



4、安装服务

管理员模式打开CMD窗口,导航到D:\javaroot\yfzx\

D:\javaroot\yfzx>YfzxService.exe install

2018-01-30 16:27:11,122 INFO  - Installing the service with id 'yfzxservice'

5、启动服务

D:\javaroot\yfzx>net start yfzxservice
YfzxService (powered by WinSW) 服务正在启动 .
YfzxService (powered by WinSW) 服务已经启动成功

然后便可以在服务管理面板中查看到此服务



在浏览器中输入地址便可以访问了


Tips:

Windows所需的工具及软件已上传至:http://download.csdn.net/download/fancancan/10232761

需要的同学可以去下载,或者可以去上面提到的官方网站上去下载

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/fancancan/article/details/79209247

智能推荐

集合ArrayList add()/clear()数组指针越界?- Java_邓文(desaco)的博客-程序员秘密

ArrayList add()/clear()数组指针越界?原来是线程同步问题。&amp;gt; 为什么 ArrayList 集合在add 的时候会数组越界?集合ArrayList.clear()出现了数组越界? 第一次遇到ArrayList的claer方法抛出异常,仔细一看,并不是空指针,跟踪源码,发现是某个类的checkForComodification方法抛出ConcurrentModific...

IOT演进,数据觉醒_怎么玩IOT的博客-程序员秘密

曾几何时,IOT这个名词和概念,越来越频繁地出现在我们的周边,我们听到、看到,偶尔也能小小地感受到。众多的顶级企业也纷纷在其战略中宣布自己必将开启新的未来赛道来拥抱IOT,创业的萌芽也都在激烈翻滚涌动。我们喜大普奔,我们感觉一个新的时代就要来临!其实,从本质来说,IOT时代算不上一个新的时代,因为IOT的本质就是数字化的更进一步,是更加深层次的数字化,所以应该算是数字化时代的延续和迭代。数字化时代,我们要将其划分一下阶段的化,可以从如下维度来进行简单划...

2021年最新大厂Java面试笔试题目,Java面试真题精选_Java最新笔试的博客-程序员秘密

前言作为一名编程人员,对MySQL一定不会陌生,尤其是互联网行业,对MySQL的使用是比较多的。对于求职者来说,MySQL又是面试中一定会问到的重点,很多人拥有大厂梦,却因为MySQL败下阵来。实际上,MySQL并不难,今天这份最全的MySQL总结,一共1200页,几乎涵盖了MySQL的所有知识,尤其突出了实战技能和高级知识点,无论是工作还是面试看完这篇就足够了!注意:关于MySQL的内容整理,包括了面试题、学习笔记、使用文档以及Xmind思维图几个部分,需要高清完整版《MySql学习资源大礼包》的朋

vue2+el-menu实现路由跳转及当前项的设置_vur el-menu-item 绑定的route_iulyf的博客-程序员秘密

用户信息 账号信息 修改密码 公司信息 用户管理 添加/编辑用户 1.要实现路由跳转,先要在el-menu标签上添加router属性,然后只要在每个el-menu-item标签内的index属性设置一下url即可实现点击el-menu-item实现路

vscode Vue格式化HTML标签换行问题_diaobang0776的博客-程序员秘密

解决方法:在设置里面直接贴上代码: "vetur.format.defaultFormatter.html": "js-beautify-html", "vetur.format.defaultFormatterOptions": {   "js-beautify-html": {     "wrap_attributes": "auto", ...

可能是最详细的Android图片压缩原理分析(一)—— Android图片压缩必备基础知识_android 位深_Mr.Louis的博客-程序员秘密

关联:bitmap、哈夫曼压缩、png、jpeg、jpg、webp、Android版本采用的压缩策略、内存中和磁盘中bitmap的计算方式Android图片压缩分析(一)一级目录二级目录三级目录位深度inSampleSize 设置图片的缩放比例(宽和高)一级目录二级目录三级目录位深度位深度是指在记录数字图像的颜色时,计算机实际上是用每个像素需要的二进制数值位数来表示的。计算机之所以能够显示颜色,是采用了一种称作“位”( bit ) 的记数单位来记录所表示颜色的数据。当这些数据按照一定的编排方式被

随便推点

Android 里的各种通信方式(四)_android.四种通信模式优缺点_bwf_erg的博客-程序员秘密

五:广播Android开发中如果需要对两个完全没关系的程序之间进行通信就可以使用发送广播与接收广播的机制来实现 ,例如程序A发送了一个广播 程序B接受到 做一些事情 这样就达到了相互的通讯。 public class BroadcastActivity extends Activity {        Button mButton0 = null;        Button

主流浏览器内核介绍_万里浮云的博客-程序员秘密

主流浏览器内核分类   浏览器内核种类繁多,商用的加上非商业的免费内核,大约有10款以上甚至更多,不过通常比较常见的大约只有以下4种,下面就简单介绍一下。   (1)Trident  Trident(又称为MSHTML),是微软的Windows搭载的网页浏览器——Internet Explorer浏览器使用的内核(俗称IE内核),该内核程序在1997年的IE 4中首次被采用,之

javascript 区别数组和对象_js区别数组与对象_原小豹的博客-程序员秘密

Javascript 本身对于对象和数组的区分是很混乱的,所有有时候数据类型判断真是伤透了脑筋。就简单总结几点吧,1.type of()type of 是一个一元运算,他可以解决大部分数据类型判断,不过有些就有点坑爹了,比如 :var a = [1,2,3];type of(a) // 返回 ‘object’ ....2.instanceof这个貌似还不错  比如:

ERROR: Attempting to operate on hdfs journalnode as rootERROR: but there is no HDFS_JOURNALNODE_USE_浮光掠影_dt的博客-程序员秘密

ERROR: Attempting to operate on hdfs journalnode as rootERROR: but there is no HDFS_JOURNALNODE_USER defined. Aborting operation.Starting ZK Failover Controllers on NN hosts [hd102 hd103 hd104]ERROR: Attempting to operate on hdfs zkfc as rootERROR: but

成功解决matplotlib\cbook\deprecation.py:107: MatplotlibDeprecationWarning: Passing one of 'on', 'true',_一个处女座的程序猿的博客-程序员秘密

成功解决matplotlib\cbook\deprecation.py:107: MatplotlibDeprecationWarning: Passing one of 'on', 'true',目录解决问题解决思路解决方法解决问题matplotlib\cbook\deprecation.py:107: M...

推荐文章

热门文章

相关标签