Spring boot程式的部署及執行
將 spring boot 應用程式打包成 jar 包
我們使用 spring boot 的 maven 外掛來構建管理整個應用程式,使用 mvn package
將應用程式打包成一個 jar 包
將 該 jar 包上傳到 伺服器
上傳到伺服器大致有兩種方式(常見的):1)通過 xftp
這種方式;2)本文將要介紹的這種,我不太建議使用 xftp,因為它太常見了,不新奇,
說說第二種方式吧:首先我們在 linux 伺服器上,下載 lrzsz
外掛,命令為:yum -y install lrzsz
,然後上傳檔案就輸入命令:rz -y
,-y
表示強制覆蓋原有檔案(建議使用),rz
表示上傳,當然了,sz
執行
上傳到伺服器的指定位置了,接下來就是如何運行了!
我們都知道,java 程式在你本地執行時就是選擇好入口 main,然後執行即可。但是在 linux 上就不是那麼簡單了。
大致呢有兩種:一種是直接手動啟動;一種是通過寫一個指令碼檔案來啟動。
直接啟動:
java -jar 目標.jar >> catalina.out 2>&1 &
,什麼意思呢?就是將 tomcat(spring-boot-starter-web 自帶 tomcat) 的啟動內容 標準錯誤流重定向到標準輸出流(2 >&1),並且以在後臺執行的形式去執行(&)。
指令碼啟動
編寫啟動指令碼
#!/bin/bash PROJECTNAME=目標jar名稱(不需要帶.jar) pid=`ps -ef |grep $PROJECTNAME |grep -v "grep" |awk '{print $2}'` if [ $pid ]; then echo "$PROJECTNAME is running and pid=$pid" else echo "Start success to start $PROJECTNAME ...." nohup java -jar 目標.jar >> catalina.out 2>&1 & fi
在該 .sh
(指令碼檔案)中,使用到了命令 nohup java -jar ...
nohup 就是 no hangup(不掛起),即 即使使用者登出,
關閉終端後,該程序還會繼續執行;採用 nohup 命令後,那麼就會在當前指令碼所在的同級目錄下生成一個 nohup.out
的檔案,
該檔案就記錄了整個應用啟動過程以及之後執行中的所有日誌內容(因為我們是將 2
標準錯誤 作為輸出內容的,
而標準錯誤預設是包括所有的輸出內容+錯誤內容)。之後你只需要執行這個指令碼即可啟動應用程式啦:./start.sh
,
如果你想檢視一下日誌內容,你可以輸入:vi nohup.out
,或者你只想檢視最後幾行內容:tail -f nohup.out
即可。
指令碼關閉
編寫關閉指令碼:
其實我們一般是不需要關閉指令碼的,因為我們通常是這樣操作的:進入到該應用程式所在的目錄:
ps aux | grep java
或 ps -ef | grep java
二者並沒有什麼太大的區別,看你喜歡用哪個命令了,
然後找到該應用程式的 pid
, 然後 kill -g 該pid
就殺死這個程序了。但是其實這樣很麻煩,
你習慣了還好,一般我還是建議你使用 關閉指令碼的
#!/bin/bash
PROJECTNAME=目標
pid=`ps -ef |grep $PROJECTNAME |grep -v "grep" |awk '{print $2}' `
if [ $pid ]; then
echo "$PROJECTNAME is running and pid=$pid"
kill -9 $pid
if [[ $? -eq 0 ]];then
echo "sucess to stop $PROJECTNAME "
else
echo "fail to stop $PROJECTNAME "
fi
fi
一般目錄結構就是如下圖所示:
我實際中用的這個啟動指令碼內容如下:
ps:至於有人說的可能需要在 pom.xml 中指定 入口類,我持保留意見