linux环境使用脚本发布springboot应用

本文详细介绍了SpringBoot项目的部署流程,包括代码更新、项目打包、服务重启及日志管理。并通过Shell脚本实现了自动化部署过程,提高了部署效率。文章还深入解析了Shell脚本语法,如条件判断、文件与整数变量表达式等,适用于后端开发人员学习。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、发布springboot项目步骤:

1、进入项目目录,拉取最新代码

2、使用mvn打包项目,将打包好的jar复制到运行目录

3、进入运行目录,先关闭之前运行的项目,启动项目和追加日志

二、脚本实现

ver版本号,srcRoot项目目录,components项目名,url运行目录,serviceports端口号

if  [ -z $string  ]表示如果string 为空的判断

java -Dfile.encoding=UTF-8 -Xms512m -Xmx512m -jar 设置编码和最小最大堆空间,也可以不用设置

> nohup.out 2>&1 &将标准错误输出也重定向到标准输出指向的文件中

>表示覆盖式重定向。正常输出是把内容输出到显示器上,重定向是把内容输出到文件中

2是标准错误输出,1是标准输出

创建.sh文件编写保存,使用shmod 777修改权限,用 ./filename.sh运行

如果想要使用动态取参数的方式启动,将参数改为ver=$1,components=$2的方式,执行脚本命令时在后面带上参数即可

#!/bin/sh

#must have a value is param
ver="200430"
srcRoot="/root/WorkSpace/"
components="test"
url="/root/RunSpace"
seviceports="8080"

#param is Info
echo "Start to build backend components...  Version=${ver}"
echo "Build components parent path ...SrcRoot=${srcRoot}"
echo "Build service Name ...Components=${components}"
echo "Build service start path ...Url=${url}"
echo "Build service port ...Seviceports=${seviceports}"

cd ${srcRoot}/${components}

echo "Pull source code from git..."
   git pull

echo "Building ${components} start..."
  status=`mvn clean install -DskipTests | grep "BUILD SUCCESS"`
echo "${components} build completed: ${status}"
if [ -z "${status}" ]; then
  echo "Exit on error!"
  exit 1
fi

echo "Start to kill java pid... version=${ver}"
  p="${seviceports}"
echo "Kill port=${p} ..."
  pid=`lsof -nP -iTCP:${p} |grep LISTEN|awk '{print $2}'`
  kill -9 $pid
echo "Start to copy JAR files... version=${ver}"
  urls="${url}/${components}/"
  cp -f "${srcRoot}/${components}/target/${components}-${ver}.jar" "${urls}"
echo "Start to deploy JAR files... ${urls}${components}-${ver}.jar"
  cd "${urls}"
  >nohup.out
  java -Dfile.encoding=UTF-8 -Xms512m -Xmx512m -jar ${urls}${components}-${ver}.jar > nohup.out 2>&1 &
echo "Deploy ${urls}${components}-${ver}.jar completed. "

三、shell编程

if [ expression  ] then   表达式结果为真,则返回0,if把0值引向then

if [ a = b ] ;then    
    echo equal
else
    echo no equal
fi
  • 文件表达式

if [ -f  file ]    如果文件存在
if [ -d ...   ]    如果目录存在
if [ -s file  ]    如果文件存在且非空 
if [ -r file  ]    如果文件存在且可读
if [ -w file  ]    如果文件存在且可写
if [ -x file  ]    如果文件存在且可执行   

  • 整数变量表达式

if [ int1 -eq int2 ]    如果int1等于int2   
if [ int1 -ne int2 ]    如果不等于    
if [ int1 -ge int2 ]       如果>=
if [ int1 -gt int2 ]       如果>
if [ int1 -le int2 ]       如果<=
if [ int1 -lt int2 ]       如果<
   

  •    字符串变量表达式

If  [ $a = $b ]                 如果string1等于string2(字符串允许使用赋值号做等号)                           
if  [ $string1 !=  $string2 ]   如果string1不等于string2       
if  [ -n $string  ]             如果string 非空(非0),返回0(true)  
if  [ -z $string  ]             如果string 为空
if  [ $sting ]                  如果string 非空,返回0 (和-n类似)    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值