使用 Shell 部署 jar 包

SpringBoot 项目部署到服务器,首先我们需要将项目打成 jar 包,然后上传到服务器上,使用 shell 部署 jar 包。

使用shell部署jar

  1. 新建 deploy.sh (文末),然后将 jar 包和本 shell 放在同一目录
  2. 执行 chmod u+x deploy.sh
  3. 执行 ./deploy.sh aaa.jar pro log

    参数1,jar包完整名称(带.jar)

    参数2,运行环境如pro

    参数3,日志目录(输入的目录不存在会自动创建)

停止运行

  1. 使用命令行找出正在运行的jar 的进程id

    ps -ef | grep aaa.jar
  2. 杀进程

    kill -9 进程id

注意事项

  1. 先执行 whereis bash,目录如果不是 /usrbin/bash,就替换shell第一行的bash地址声明
  2. 如果无权限,使用 vim deploy.sh 进入deploy.sh后, 在底部模式下(shift + :), 执行 :set fileformat=unix 后执行 :x 或者 :wq 保存修改。 然后就可以执行 ./a.sh 运行脚本

shell 文件

deploy.sh

#! /bin/bash

JAR_FILE=$1
PACKAGE_PATH=/home/package
PROJECT_PROFILE=prd
LOG_PATH=$3

export JAVA_HOME=$JAVA_HOME

echo -e "\n\033[46;30m ========== 欢迎使用本脚本部署应用 version 1.0 created by Jerry.Song ========= \033[0m\n"

if [[ -f $JAR_FILE ]]; then
    echo "已经找到文件 $JAR_FILE,任务即将开始..."
    TEMP_PATH=`pwd`
    echo -e "当前所在文件夹: \033[1;34m $TEMP_PATH \033[0m"
else
    echo "当前目录下没有jar文件,请检查!"
    exit 1
fi

if [[ -z $TEMP_PATH ]]; then
    echo "当前目录读取错误,程序即将停止运行"
    exit 1
fi

PID=$(ps -ef | grep -w ${JAR_FILE} | grep -w java | grep -v grep | awk '{print $2}')

if [[ -z ${PID} ]]; then
    echo "没有旧的jar文件在运行,等待部署流程启动...";
else
    echo -e "开始杀死旧jar文件进程,进程id为:\033[1;34m $PID \033[0m";
    kill -9 ${PID};
fi

if [[ ! -d $PACKAGE_PATH ]]; then
    mkdir -p $PACKAGE_PATH
    cd $PACKAGE_PATH
else
    cd $PACKAGE_PATH
    if [[ -f $JAR_FILE ]];then
        mv ${JAR_FILE} "${JAR_FILE/.*/}_`date +%Y%m%d%H%M%S`.jar"
    fi
fi

cp $TEMP_PATH/$JAR_FILE ./$JAR_FILE
if [[ ! -z $2 ]]; then
        PROJECT_PROFILE=$2
fi

if [[ -z $LOG_PATH ]]; then
    LOG_PATH=~/logs
fi

echo -e "当前日志目录指向 ====>  \033[1;34m $LOG_PATH \033[0m"

if [[ ! -d $LOG_PATH ]]; then
        mkdir -p $LOG_PATH
fi

echo -e "\n请稍等片刻,程序即将被部署,当前运行环境配置为: \033[1;34m $PROJECT_PROFILE \033[0m"

nohup java -server -Xms128M -Xmx512M -jar $JAR_FILE --spring.profiles.active=$PROJECT_PROFILE >> $LOG_PATH/${JAR_FILE%.*}.log 2>&1 &

if [[ $? = 0 ]]; then
    echo -e "\n\033[5;31m ===================== 成功运行项目,请等待5秒加载系统日志 ==================== \033[0m\n"
    sleep 5
    tail -f ${LOG_PATH}/${JAR_FILE%.*}.log
fi


参考:

https://blog.csdn.net/qq_34409900/article/details/80561277

https://blog.csdn.net/qq_32423845/article/details/79851737

本文链接: https://jianz.xyz/index.php/archives/45/

1 + 9 =
快来做第一个评论的人吧~