Springboot項目/jar包 部署到Linux

一、部署運行

二、運行方式

  • 1、java -jar XXX.jar

這是最基本的jar包執行方式,但是當我們用ctrl+c中斷或者關閉窗口時,程序也會中斷執行。

  • 2、java -jar XXX.jar &

&代表在後臺運行,使用ctrl+c不會中斷程序的運行,但是關閉窗口會中斷程序的運行。

  • 3、nohup java -jar XXX.jar &

使用這種方式運行的程序日誌會輸出到當前目錄下的nohup.out文件,使用ctrl+c中斷或者關閉窗口都不會中斷程序的執行。

  • 4、nohup java -jar XXX.jar >temp.out &

temp.out的意思是將日誌輸出重定向到temp.out文件,使用ctrl+c中斷或者關閉窗口都不會中斷程序的執行。

三、腳本運行

具體可以腳本內容參考Linux 啓動jar包的腳本Linux編輯啓動停止重啓jar包腳本

#!/bin/bash 
#這裏可替換爲jar包名字
APP_NAME=demo-0.0.1-SNAPSHOT.jar
#根據實際情況修改參數
JVM="-server -Xms2g -Xmx2g -Xmn512m -XX:PermSize=128M -XX:MaxNewSize=128m -XX:MaxPermSize=25zh6m -Xss256k  -Djava.awt.headless=true -XX:+CMSClassUnloadingEnabled -XX:+CMSPermGenSweepingEnabled -Xloggc:/logs/xxx-server/GC/xxx-gc.log"
#APPFILE_PATH="-Dspring.config.location=/usr/local/config/application.properties"
#使用說明,用來提示輸入參數 
usage() { 
    echo "Usage: sh start.sh [start|stop|restart|status|log|backup]" 
    exit 1 
} 
#檢查程序是否在運行 
is_exist(){ 
    pid=`ps -ef|grep $APP_NAME|grep -v grep|awk '{print $2}' ` 
    #如果不存在返回1,存在返回0 
    if [ -z "${pid}" ]; then 
        return 1 
    else 
        return 0 
    fi 
} 

#啓動方法 
start(){ 
    is_exist 
    if [ $? -eq "0" ]; then 
        echo "${APP_NAME} is already running. pid=${pid} ." 
    else 
        #nohup java $JVM -jar $APPFILE_PATH $APP_NAME > /dev/null 2>&1 
                #後臺啓動jar包,且控制環境變量,根據實際情況修改吧。
        nohup java $JVM -jar $APP_NAME --spring.profiles.active=prod > /dev/null 2>&1 & 
    fi
} 

#停止方法 
stop(){ 
    is_exist 
    if [ $? -eq "0" ]; then 
        kill -9 $pid 
    else 
        echo "${APP_NAME} is not running" 
    fi 
} 

#輸出運行狀態 
status(){ 
    is_exist 
    if [ $? -eq "0" ]; then 
        echo "${APP_NAME} is running. Pid is ${pid}" 
    else 
        echo "${APP_NAME} is NOT running." 
    fi 
} 
#重啓 
restart(){ 
    stop 
    start 
} 

#日誌
log(){
        # 輸出實時日誌
    tail -n 100 -f /logs/fdc-server/fdc-server.log
}

#備份
backup(){
        #根據需求自定義備份文件路徑。
    BACKUP_PATH=/usr/local/webapps/backup/xxx-server/
        #獲取當前時間作爲備份文件名
    BACKUP_DATE=`date +"%Y%m%d(%H:%M:%S)"`
    echo 'backup file ->'$BACKUP_PATH$BACKUP_DATE'.jar'
        #備份當前jar包
    cp -r /usr/local/webapps/$APP_NAME  $BACKUP_PATH$BACKUP_DATE'.jar'
}

#根據輸入參數,選擇執行對應方法,不輸入則執行使用說明 
case "$1" in 
    "start") 
        start 
        ;; 
    "stop") 
        stop 
        ;; 
    "status") 
        status 
        ;; 
    "restart") 
        restart 
        ;; 
    "log") 
        log 
        ;; 
    "backup") 
        backup 
        ;; 
    *) 
usage 
;; 
esac

具體的執行命令:

cd   /root/springboot/
#啓動
sh start.sh start
#停止
sh start.sh stop
#重啓
sh start.sh restart
#運行狀態
sh start.sh status
#查看實時日誌
sh start.sh log
#備份
sh start.sh backup

Notes:

  • 測試執行成功沒有提示;
  • 如果沒有把文本格式轉換爲Unix,會出現類似這種格式錯誤start.sh: line 11: syntax error near unexpected token '$'\r',通過NotePad ++記事本可以轉換爲Unix(LF)
發佈了138 篇原創文章 · 獲贊 146 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章