spring boot 在linux上部署的几种姿势

原创 esjson spring boot 2884

本篇将介绍spring boot应用jar包在linux上部署运行的几种姿势。

1.手动敲运行命令

正如大多数人所知道是 spring boot 用spring-boot-maven-plugin 插件打成的jar,只需要采用下面的命令就可以轻松运行

nohup java -jar  xxx.jar > /dev/null &

上面的命令注意下有nohup 和 &,他们能够起到以后台运行的作用,当前shell关掉也没关系。

至于那些虚拟机的运行参数以及应用的环境运行配置你得根据实际情形加上,
比如

nohup  java -Xmx1024m -Xms512m -jar -Dspring.profiles.active=dev xxx.jar  > /dev/null &

在这里更多的虚拟机参数和spring boot参数不再多说,大家可以自行去看文档,依据自己的需求去配置。

至于关闭应用嘛,也简单,但稍微有点麻烦,

1. 采用jps -l 命令查看应用当前的进程的pid
[root@master /]# jps -l
87520 sun.tools.jps.Jps
105558 org.apache.catalina.startup.Bootstrap
9874 org.apache.catalina.startup.Bootstrap
4025 apicenter.jar   //找到4025

2.然后 kill -9 4025 就是这么简单暴力

2. 自己制作shell 脚本

手敲命令的方式虽然简单,但是如果加上一些额外参数的话,来来回回部署几次,能不累死你吗!

程序猿都很懒!下面展示下我自己写的脚本,给大家参考下

start.sh

#!/bin/bash
APPNAME=blog-www.jar
pid=`ps -ef |grep $APPNAME |grep -v "grep" |awk '{print $2}'`
if [ $pid ];then
  echo "$APPNAME is running and pid=$pid"
else
   echo "Start success to start $APPNAME..."
   nohup java -jar $APPNAME > /dev/null &
fi

stop.sh

#!/bin/bash
APPNAME=blog-www.jar
pid=`ps -ef |grep $APPNAME|grep -v "grep" |awk '{print $2}'`
if [ $pid ];then
   echo "$APPNAME is running and pid=$pid"
   kill -9 $pid
   if [[ $? -eq 0  ]];then
      echo "success to stop $APPNAME"
   else
      echo "fail to stop $APPNAME"
   fi
else
   echo "$APPNAME is not running!"

fi

以上有几点要注意的地方

  • 启动脚本要跟jar包在同个路径下,停止脚本则不需要
  • 脚本的编写都应该在英文状态下
  • 启动脚本中需要一些虚拟机额外参数和指定配置参数的话可以自己脑补添上

3.用linux服务方式

这一节讲的最好的当然是在spring boot官方文档的部署章节,可以去看下,我这边纯粹做个记录,方便日后查看不用再去翻文档了。

  1. 首页得配置下pom.xml <executable>true</executable>

    <plugin>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-maven-plugin</artifactId>
     <configuration>
         <executable>true</executable>
     </configuration>
    </plugin>
    
  2. 打包spring boot应用得到jar包,然后你就可以 用 ./xxx.jar 的方式运行了

  3. 创建init.d 服务

    $ sudo ln -s /var/myapp/myapp.jar /etc/init.d/myapp
    
  4. 运行init.d服务
    一旦上个步骤操作完,你就能以标准的service 服务命令start,status,stop,restart方式操作了,服务运行所属的进程pid将会写入到/var/run/<appname>/<appname>.pid 文件中,而控制台命令会写入到/var/log/<appname>.log文件中
$ service myapp start
springboot linux shell 原创
取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

关于我

过所爱的生活,爱所过的生活,快乐的生活,才能生活快乐,快乐的工作,才有快乐人生,生活的理想其实就是理想的生活!