springboot Jar包 秒部署到Linux服務器運行


https://blog.csdn.net/whh18254122507/article/details/78011713

最近開發完一個springboot項目,打包成jar包之后要部署到Linux服務器上面運行,我用的nohup java -jar 命令,但是代碼更新之后重新部署的時候覆蓋原來的項目,又要手動運行

ps -ef|grep jar包名 去查找進程,然后kill -9 去kill進程,有時候nohup進程老是kill不掉,只能多試幾次,煩不勝煩。后來專門花時間研究了一下腳本和本地window上傳文件到linux服務器的命令,整合了一個啟動腳本,頓時項目部署變得無比簡單,一分鍾內在線上的代碼就可以更新了。下面是具體步驟:

1、在idea上寫一個maven 打包命令 : clean package -DskipTests=true                 (打包跳過測試,打包更快)

 

2、運行 package 打包,會在項目根路徑target下面生成jar包

3、接下來我們要把本地項目jar包上傳到Linux服務器上面,怎么快速上傳呢?主要有兩種方式:

一、直接用鼠標拉取jar包到Xftp文件夾下,如下圖

 

二、直接在用命令上傳,比較推薦這種,不用再去打開target文件夾了,也不用再拉取了

我們先安裝一個文件上傳和下載的工具軟件包 :yum -y install lrzsz    

lrzsz包安裝完成后包括上傳rz、下載sz命令

然后我們可以 輸入命令 rz -y     ,(rz 代表上傳, -y 可以強制覆蓋文件),會彈出一個文件選擇框,我們可以鼠標選擇jar包位置,確定即可,下次再上傳的時候會直接彈出jar包窗口,當然下次用的時候也可以用tab鍵光標跳轉選擇,這就完全不用鼠標了,注意下面發送文件到ASCII不要打鈎

 

4、最后就是重頭戲了,項目重啟的腳本,寫個start.sh 的腳本,注意腳本和jar包同級目錄 , 如下:

 

#!/bin/sh
RESOURCE_NAME=resource-0.0.1-SNAPSHOT.jar
 
tpid=`ps -ef|grep $RESOURCE_NAME|grep -v grep|grep -v kill|awk '{print $2}'`
if [ ${tpid} ]; then
echo 'Stop Process...'
kill -15 $tpid
fi
sleep 5
tpid=`ps -ef|grep $RESOURCE_NAME|grep -v grep|grep -v kill|awk '{print $2}'`
if [ ${tpid} ]; then
echo 'Kill Process!'
kill -9 $tpid
else
echo 'Stop Success!'
fi
 
tpid=`ps -ef|grep $RESOURCE_NAME|grep -v grep|grep -v kill|awk '{print $2}'`
if [ ${tpid} ]; then
    echo 'App is running.'
else
    echo 'App is NOT running.'
fi
 
rm -f tpid
nohup java -jar ./$RESOURCE_NAME --spring.profiles.active=test &
echo $! > tpid
echo Start Success!

  


5、腳本運行   

cd /home (我是把jar包和腳本放在home下面)

chmod +x start.sh (第一次運行的時候獲取一下超級管理員權限)

然后以后每次運行直接

./start.sh 即可

 

拷貝腳本的時候運行的時候如果報錯,應該是文件格式轉換的問題

bash: ./a.sh: /bin/bash^M: bad interpreter: No such file or directory

 

可以  yum -y install dos2unix  

然后 dos2unix start.sh 

重新運行腳本

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM