Menu
快讀
  • 旅遊
  • 生活
    • 美食
    • 寵物
    • 養生
    • 親子
  • 娛樂
    • 動漫
  • 時尚
  • 社會
  • 探索
  • 故事
  • 科技
  • 軍事
  • 国际
快讀

shell腳本實現Spring boot項目在Linux服務器上自動打包並運行

2020 年 2 月 3 日 上士闻道技术学习

用shell腳本實現在Linux服務器上自動拉取Spring boot的git源碼,殺掉原有的進程,自動打包成jar,備份原有的jar,然後啓動項目。

對于不太大的Spring boot項目,或者服務器性能有限,可以不用Jenkins這類工具,用個shell腳本就可以基本實現自動打包、停掉原來的進程、備份舊的jar,然後自動啓動jar

首先需要在Linux服務器上安裝Maven和Git客戶端,這是前提條件。

下面是shell代碼,你可以根據實際情況按注釋的提示修改

#!/usr/bin/env bash
# 項目名稱
CODE_DIR="project"
# 打包後的jar名稱前綴
PACKAGED_NAME_ADMIN="app-1.0.0"
# jar存放位置
APP_DEPLOY_PATH="/www/java"
# JAVA_HOME="/usr/java/jdk1.8.0_161"
# spring boot用哪個環境運行
PROFILE="produce"
# PORT=39005

#如果任何語句的執行結果不是true則應該退出
set -e

#git初始化配置,配置後,無需手動輸入用戶名及密碼即可從指定git管理代碼
function gitinit(){
 echo "start gitinit..."
 cd ~/
 touch .git-credentials
 # 這裏的git地址和賬號請修改
 echo "https://[email protected]:[email protected]/fuwu360/project.git" > .git-credentials
 git config --global credential.helper store
 #執行此句後~/.gitconfig文件多了一項[credential] helper = store
 echo "finish gitinit..."

}
function clone(){
 echo "start pull git resource code..."
 rm -rf ./$CODE_DIR
 # 請自行修改這裏的git地址爲你的項目地址
 git clone https://gitee.com/fuwu360/project.git
 cd ./$CODE_DIR
 echo "git checkout succeed ..."
}

#pull and package gitcodeResource 
function package(){
 echo "start package..."
 cd ./$CODE_DIR
 git pull
 mvn clean package -Dmaven.test.skip=true
 echo "packaging app success ..."
}

#code deploy
function deploy(){
 cd $APP_DEPLOY_PATH
 # 如果備份目錄back不存在則創建
 if [ ! -d backup ];then
 mkdir backup
 else
 echo "dir backup exist"
 fi
 echo "重命名舊版本並備份..."
 if [ -f $PACKAGED_NAME_ADMIN.jar ]
 then
 mv $PACKAGED_NAME_ADMIN.jar ./backup/$PACKAGED_NAME_ADMIN'_'`date +%Y%m%d%H%M%S`.jar
 fi
 echo "複制新的jar..."
 cp $APP_DEPLOY_PATH/$CODE_DIR/target/$PACKAGED_NAME_ADMIN.jar $APP_DEPLOY_PATH
}

# 停止進程
function shutdown(){
 PID=$(ps -ef | grep $PACKAGED_NAME_ADMIN.jar | grep -v grep | awk '{ print $2 }')
 if [ -z "$PID" ]
 then
 echo jar is already stopped
 else
 echo kill $PID
 kill -9 $PID
 fi
}

# app startup
function startup(){
 echo "startuping"
 shutdown
 package
 deploy
 # export JAVA_HOME=$JAVA_HOME
 # app_log.txt是日志名字,請自行修改
 nohup java -jar $PACKAGED_NAME_ADMIN.jar --spring.profiles.active=$PROFILE >app_log.txt 2>&1 &
 echo "startuping success ..."
 # echo "打開端口:"$PORT"..."
 # firewall-cmd --zone=public --add-port=$PORT/tcp --permanent

}

#pring helpinfo
function help(){
 echo "Usage: ./run_app.sh [gitinit|clone|package|deploy|startup|shutdown|help]"
 echo "gitinit:初始化git設置"
 echo "package:程序打包"
 echo "deploy:程序發布"
 echo "startup:程序啓動"
 echo "shutdown:程序關閉"
 echo "help:打印幫助信息"
}

case "$1" in
 'gitinit')
 gitinit
 ;;
 'clone')
 clone
 ;;
 'package')
 package
 ;;
 'deploy')
 deploy
 ;;
 'startup')
 startup
 ;;
 'shutdown')
 shutdown
 ;;
 'help')
 help
 ;;
 *)


esac
exit 0

↓ 頭條的代碼排版格式有點問題,沒縮進,請點擊下面的“了解更多”鏈接查看完整的詳細。有問題請給我留言。

相關文章:

  • 後李光耀時代,我們能去新加坡創業嗎?
科技

發佈留言 取消回覆

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

©2025 快讀 | 服務協議 | DMCA | 聯繫我們