使用Service部署Spring Boot

手動部署

Spring Boot 的部署很簡單,無論使用maven還是gradle構建成jar包之后,上傳到服務器上,運行 java -jar *.jar 即可完成簡單的部署。如果想使用外部的配置文件直接在后面加參數就行了 --spring.config.location=application-production.yml 如果想關閉終端還在后臺啟動的話加上 nohup 就可以了
nohup java -jar *.jar --spring.config.location=application-production.yml

殺掉進程

普通情況只要關閉終端或ctrl+c即可結束應用,如果使用nohup部署的話先要找到進程號,然后殺掉進程。

lsof -i:8080
COMMAND  PID USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
java    2417 root   26u  IPv6 1672621      0t0  TCP *:webcache (LISTEN)
kill -9 2417

使用service

如果每一次部署和殺死都要手動的話,頻率多了其實也挺麻煩的,可以使用腳本來解決這個問題。
etc/init.d 先建一個腳本,把這個項目作為service來運行
例如 新建etc/init.d/test
內容如下

#!/bin/sh
SERVICE_NAME=test
HOME=/root/webserver/test
PATH_TO_JAR=$HOME/*.jar
PID_PATH_NAME=/tmp/test.pid

LOG=$HOME/production.log
ERROR_LOG=$HOME/production.err
CONFIG=$HOME/application-production.yml
case $1 in
    start)
        echo "Starting $SERVICE_NAME ..."
        if [ ! -f $PID_PATH_NAME ]; then
            cd $HOME
            nohup java -jar $PATH_TO_JAR --spring.config.location=application-production.yml > $LOG 2> $ERROR_LOG &
                        echo $! > $PID_PATH_NAME
            echo "$SERVICE_NAME started ..."
        else
            echo "$SERVICE_NAME is already running ..."
        fi
    ;;
    stop)
        if [ -f $PID_PATH_NAME ]; then
            PID=$(cat $PID_PATH_NAME);
            echo "$SERVICE_NAME stoping ..."
            kill $PID;
            echo "$SERVICE_NAME stopped ..."
            rm $PID_PATH_NAME
        else
            echo "$SERVICE_NAME is not running ..."
        fi
    ;;
    restart)
        if [ -f $PID_PATH_NAME ]; then
            PID=$(cat $PID_PATH_NAME);
            echo "$SERVICE_NAME stopping ...";
            kill $PID;
            echo "$SERVICE_NAME stopped ...";
            rm $PID_PATH_NAME
            echo "$SERVICE_NAME starting ..."
            cd $HOME/current
            nohup java -jar $PATH_TO_JAR --spring.config.location=application-production.yml > $LOG 2> $ERROR_LOG &
                        echo $! > $PID_PATH_NAME
            echo "$SERVICE_NAME started ..."
        else
            echo "$SERVICE_NAME is not running ..."
        fi
    ;;
esac

保存腳本
賦予腳本可執行權限 sudo chmod +x etc/init.d/test
把需要部署的jar包放到腳本中HOME的目錄下,然后就可以使用service的方式部署或殺死項目了。

sudo service test start
sudo service test stop
sudo service test restart
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,923評論 18 139
  • Spring Boot 參考指南 介紹 轉載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,953評論 6 342
  • 部署可以參考官網地址第59章節:https://docs.spring.io/spring-boot/docs/c...
    liurongming閱讀 1,031評論 0 5
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,284評論 25 708
  • 黎明將近,科契地湖也隨著天空漸亮,向北方蔓延開。 我最后檢查了一遍包里僅剩的十二發子彈,確保它們沒有受潮,接著握緊...
    韋躍閱讀 587評論 2 46