一、jar形式部署

java -jar  xxxxxx.jar 

这种方式的启动,linux只会短暂的运行该项目,当退出控制台后会自动关闭该项目。

nohup java -jar xxxxxxx.jar >日志文件名.log 2>&1 &

命令详解:

  • nohup:不挂断地运行命令,退出帐户之后继续运行相应的进程。如果未安装请执行 yum install coreutils 。
  • >日志文件名.log:是nohup把command的输出重定向到当前目录的指定的“日志文件名.log”文件中,即输出内容不打印到屏幕上,而是输出到”日志文件名.log”文件中。不指定文件名会在当前目录创建nohup.out,如果当前目录的 nohup.out 文件不可写,输出重定向到 $HOME/nohup.out 文件中。如果没有文件能创建或打开以用于追加,那么 Command 参数指定的命令不可调用。

  • 2>&1:2就是标准错误,1是标准输出,该命令相当于把标准错误重定向到标准输出么。这里&相当于标准错误等效于标准输出,即把标准错误和标准输出同时输出到指定的“日志文件名.log”文件中。
  • &:让该作业在后台运行。
shell

平时我们用的最多的shell来启动、停止项目。

启动方法:app.sh start 会自动生成catalina.log(文件名称可以自行修改脚本) 文件可供查阅日志
查阅实时日志方法:tail -f catalina.log
停止方法:app.sh stop 会杀掉当前目录下的服务进程
重启方法:app.restart 平滑重启服务
查询状态:app.status
app.sh内容如下:

SpringBoot项目jar、war方式的部署
#!/bin/bash
version="6.6.6";
appName=$2
if [ -z $appName ];then
    # 搜索目录下的jar,还是一个项目一个文件夹,一个文件内有jar包和该sh文件
    appName=`ls -t |grep .jar$ |head -n1`
fi

## 后台启动项目 自动生成 catalina.log日志文件
function start()
{
    count=`ps -ef |grep java|grep $appName|wc -l`
    if [ $count != 0 ];then
        echo "Maybe $appName is running, please check it..."
    else
        echo "The $appName is starting..."
        nohup java -jar ./$appName -XX:+UseG1GC -XX:+HeapDumpOnOutOfMemoryError -Xms512M -Xmx4G > catalina.log 2>&1 &
    fi
}
## 停止项目
function stop()
{
    appId=`ps -ef |grep java|grep $appName|awk '{print $2}'`
    if [ -z $appId ];then
        echo "Maybe $appName not running, please check it..."
    else
        echo "The $appName is stopping..."
        kill $appId
    fi
}
##重启项目(平滑启动)
function restart()
{
    # get release version
    releaseApp=`ls -t |grep .jar$ |head -n1`

    # get last version 
    lastVersionApp=`ls -t |grep .jar$ |head -n2 |tail -n1`

    appName=$lastVersionApp
    stop
    for i in {5..1}
    do
        echo -n "$i "
        sleep 1
    done
    echo 0

    backup

    appName=$releaseApp
    start
}

function backup() 
{
    # get backup version
    backupApp=`ls |grep -wv $releaseApp$ |grep .jar$`

    # create backup dir
    if [ ! -d "backup" ];then
        mkdir backup
    fi

    # backup
    for i in ${backupApp[@]}
    do
        echo "backup" $i
        mv $i backup
    done
}

## 查看项目当前状态 
function status()
{
    appId=`ps -ef |grep java|grep $appName|awk '{print $2}'`
    if [ -z $appId ] 
    then
        echo -e "\033[31m Not running \033[0m" 
    else
        echo -e "\033[32m Running [$appId] \033[0m" 
    fi
}


function usage()
{
    echo "Usage: $0 {start|stop|restart|status|stop -f}"
    echo "Example: $0 start"
    exit 1
}

case $1 in
    start)
    start;;

    stop)
    stop;;

    restart)
    restart;;

    status)
    status;;

    *)
    usage;;
esac
View Code

相关文章: