springboot 建readme_springboot创建linux系统下启动服务

springboot 帮我解决了不少配置性的问题。但是同时候也带来了一些部署上的问题。我相信,一个真正的线上项目,绝不可能是java -jar xx.jar 去直接启动,对应不同操作系统有不同的服务在才,能主动启动与停止。能随机启动,这是基本的要求,当然平时可能都是运维大哥帮我们写了一些脚本完成这项目任务,今天我想自己动手写写,项目中自带了脚本,能为部署省去不少麻烦,话不多说,上代码。

第一步

我们先建立一人简单的spring项目,简单写了一个hello请求,并返回hello+传进来的参数,

第二步

我们对项目做一些配置。比如要把外部配置文件从jar 包分离出来,方便配置修改,把第三jar 打进lib包,然后再把这些压缩成xx.tar.gz  这里不赘述,直接上贴配置

${finalname}

src/main/resources

${project.build.directory}

**/cer/**

**/logback*.xml

**/*.yml

**/*.sh

**/readme

true

maven-compiler-plugin

1.8

1.8

UTF-8

maven-resources-plugin

UTF-8

true

org.apache.maven.shared

maven-filtering

3.1.1

org.apache.maven.plugins

maven-jar-plugin

true

lib/

${mainclass}

./

org.apache.maven.plugins

maven-dependency-plugin

copy

package

copy-dependencies

${project.build.directory}/lib

org.apache.maven.plugins

maven-assembly-plugin

2.2.1

src/main/resources/assembly.xml

make-assembly

package

single

这样运行mvn clean compile package 我们就可以得到一个 demo-bin.tar.gz 初步完成了。

第三步

这也是本篇文章的主要部分,demo-bin.tar.gz 解压后 如下

我们使用常规启动

java -jar demo.jar

可以看到项目已正常启动并可以访问了

但是这样控制台一关就没了,或者加上&   后台启动,但是要重启或是开机启动又麻烦了。于是就写了以下脚本

demo_init.sh

#!/bin/sh

apppath=$(cd `dirname $0`;pwd)

sed-i "s?apppath=.?apppath=$apppath?" ./${finalname}.sh

sed-i "s?JAVA_HOME=.?JAVA_HOME=$JAVA_HOME?" ./${finalname}.sh

sed-i "s???" ./logback.xml

cp ./${finalname}.sh /etc/init.d/${finalname}

systemctl enable ${finalname}

service ${finalname} start

这段代码这里有必要解释一下

第一行固定写法 不解释,第二行获取jar包所在目录,第三到第五行 是对直正要生成的脚本做一些变量替换。还是日志文件的路径的替换。不理解的同学可以自行百度sed  用法

后面三行 替换后变理的脚本文件放到init.d 目录下

开启自启动,然后启动服务

demo.sh

#!/bin/sh

# chkconfig:2345 10 90# description: ${finalname}

JAVA_HOME=.

PATH=$JAVA_HOME/bin:$PATH

CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export JAVA_HOME

export PATH

export CLASSPATH

appname=${finalname}

apppath=././etc/init.d/functionscase "$1"in

start)

echo $JAVA_HOME

$JAVA_HOME/bin/java -Xms2048m -Xmx2048m -jar /home/soft/demo/demo.jar &echo $! > /var/run/$appname.pid

;;

stop)if [ ! -f /var/run/$appname.pid ]; then

echo"$appname: not running"exit1fi

kill-TERM `cat /var/run/$appname.pid`

;;

reload)if [ ! -f /var/run/$appname.pid ]; then

echo"$appname: not running"exit1fi

;;*)

echo"Usage: /etc/init.d/$appname {start|stop|reload}"exit1;;

esac

exit0

常规的脚本,主要注意标线两个地方

第四步

验证我们的脚本

执行init脚本

可以看服务启动OK了

我们查看一下服务

可以看到服务也启动了

再停止一下服务

可以看到服务成功停止了,并且是停止状态。我们重启一下机器,看是不是能能自动启动

可以看到 服务也成功启动了,所有工作完成。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值