Shell 部署SpringBoot項目

對於沒有了解過的shell的朋友,建議先去學習一下,不同的開發語言基本都是大同小異,學起來很快,也比較簡單,不過學完shell 要達到能夠寫比較複雜的腳本的話可能就要多點時間學習,對於對Linux常用的命令也要有一定的瞭解。

1.以下的腳本demo本人也是網上找的,然後根據自己項目的實際情況簡單修改了一下

#!/bin/bash
# Java ENV
export JAVA_HOME=/usr/local/java/jdk1.8.0_231
export JRE_HOME=${JAVA_HOME}/jre

# Apps Info
# 應用存放地址
APP_HOME=/opt/demo
# 應用名稱  chinapayer-admin-5.1.1.jar
APP_NAME=$1

#日誌文件路徑
LOG_NAME=/opt/logs/zfr/log_total.log

# Shell Info 

# 使用說明,用來提示輸入參數
usage() {
    echo "Usage: sh boot [APP_NAME] [start|stop|restart|status]"
    exit 1
}

# 檢查程序是否在運行
is_exist(){
        # 獲取PID
        PID=$(ps -ef |grep ${APP_NAME} | grep -v $0 |grep -v grep |awk '{print $2}')
		
        # -z "${pid}"判斷pid是否存在,如果不存在返回1,存在返回0
        if [ -z "${PID}" ]; then
                # 如果進程不存在返回1
                return 1
        else
                # 進程存在返回0
                return 0
        fi
}

# 定義啓動程序函數
start(){
        is_exist
        if [ $? -eq "0" ]; then
                echo "${APP_NAME} is already running, PID=${PID}"
        else    
                nohup ${JRE_HOME}/bin/java -jar ${APP_HOME}/${APP_NAME} >${LOG_NAME} 2>&1 &
                PID=$(echo $!)
                echo "${APP_NAME} start success, PID=$!"
        fi
}

# 停止進程函數
stop(){
        is_exist
        if [ $? -eq "0" ]; then
                kill -9 ${PID}
                echo "${APP_NAME} process stop, PID=${PID}"
        else    
                echo "There is not the process of ${APP_NAME}"
        fi
}

# 重啓進程函數 
restart(){
        stop
        start
}

# 查看進程狀態
status(){
        is_exist
        if [ $? -eq "0" ]; then
                echo "${APP_NAME} is running, PID=${PID}"
        else    
                echo "There is not the process of ${APP_NAME}"
        fi
}

case $2 in
"start")
        start
        ;;
"stop")
        stop
        ;;
"restart")
        restart
        ;;
"status")
       status
        ;;
	*)
	usage
	;;
esac
exit 0

注意:編寫腳本,可以直接再服務器上使用vim 命令來編輯,也可以先在win系統下寫好,然後再上傳到服務器,不過這種方式會有個問題:sheff腳本執行報錯/bin/bash^M: bad interpreter: No such file or directory

解決方法:因爲腳本在windows下創建編輯然後上傳到linux系統的,所以是dos格式的,而linux卻是隻能執行格式爲unix格式的腳本。所以識別不了,檢查一下是否是dos格式:

vi編輯模式下,輸入 :set ff 然後回車

確定格式是dos文件,解決方法:

還是在編輯模式下 輸入:

:set ff=unix,回車,然後重新輸入set ff 檢測

然後:wq保存就可以了。

2.腳本說明,如果大家使用這個腳本的話,修改相關參數後可以直接使用

java_home:表示jdk路徑,需要修改成自己服務器的jdk路徑;

app_home:表示項目jar包存放的路徑,修改成自己對應的路徑;

app_name:表示jar包文件名稱,因爲我這邊每期打jar都有對應的版本號,所以我使用參數接收的方式來動態設置jar包文件名稱,如果大家jar包名稱都是一樣的可以寫死,$1:表示在執行腳本的時候的第一個參數 ,比如 執行./test.sh 1 2 3,你們第一個參數就是1,對應的第二第三個參數爲2和3,參數跟參數之間要用空格隔開。

log_name:表示日誌文件路徑

3.腳本使用,如下圖(注意,需要進入到腳本所在的路徑下執行),chinapayer-admin-5.1.1.jar 我的第一個參數 status是腳本定義的函數,表示 查看狀態,如果是啓動的話 第二個參數使用start就可以了,檢測是否啓動成功,可以使用查看狀態的方式或者查看啓動日誌的方式,執行腳本查看狀態的話,因爲啓動需要一點時間,需要等一會。

建議使用查看啓動日誌的方式來查看是否啓動成功,如:tail -500f /opt/logs/zfr/log_total.log 。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章